From 05ffb37b43c9ccc4cc19822d349f8cac1c5b0631 Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Mon, 9 Apr 2018 21:02:10 +0300 Subject: [PATCH] Added shortcuts for creating errors from the outside of a VM. njs_vm_error(), njs_vm_memory_error(). --- njs/njscript.c | 7 +++++++ njs/njscript.h | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/njs/njscript.c b/njs/njscript.c index aea0e2ac..19e40730 100644 --- a/njs/njscript.c +++ b/njs/njscript.c @@ -682,6 +682,13 @@ njs_vm_retval_set(njs_vm_t *vm, njs_opaque_value_t *value) } +nxt_noinline void +njs_vm_memory_error(njs_vm_t *vm) +{ + njs_set_memory_error(vm, &vm->retval); +} + + njs_ret_t njs_vm_retval_to_ext_string(njs_vm_t *vm, nxt_str_t *retval) { if (vm->top_frame == NULL) { diff --git a/njs/njscript.h b/njs/njscript.h index 9ef6a392..4ec94da3 100644 --- a/njs/njscript.h +++ b/njs/njscript.h @@ -29,6 +29,9 @@ typedef struct { #define njs_argument(args, n) \ (njs_value_t *) ((u_char *) args + n * 16) +#define njs_vm_error(vm, fmt, ...) \ + njs_value_error_set(vm, njs_vm_retval(vm), fmt, ##__VA_ARGS__) + typedef njs_ret_t (*njs_extern_get_t)(njs_vm_t *vm, njs_value_t *value, void *obj, uintptr_t data); @@ -176,6 +179,8 @@ NXT_EXPORT njs_ret_t njs_vm_value_to_ext_string(njs_vm_t *vm, nxt_str_t *dst, NXT_EXPORT njs_ret_t njs_vm_retval_to_ext_string(njs_vm_t *vm, nxt_str_t *retval); +NXT_EXPORT void njs_vm_memory_error(njs_vm_t *vm); + NXT_EXPORT void njs_value_void_set(njs_value_t *value); NXT_EXPORT void njs_value_boolean_set(njs_value_t *value, int yn); NXT_EXPORT void njs_value_number_set(njs_value_t *value, double num); -- 2.47.3