#define NJS_FRAME_SIZE \
nxt_align_size(sizeof(njs_frame_t), sizeof(njs_value_t))
-/* The retval and return_address fields are not used in the global frame. */
+/* The retval field are not used in the global frame. */
#define NJS_GLOBAL_FRAME_SIZE \
nxt_align_size(offsetof(njs_frame_t, retval), sizeof(njs_value_t))
vm->scopes[NJS_SCOPE_CALLEE_ARGUMENTS] = vm->frame->arguments;
retval = njs_vmcode_operand(vm, retval);
- /*
- * GC: value external/internal++ depending
- * on vm->retval and retval type
- */
+ /*
+ * GC: value external/internal++ depending
+ * on vm->retval and retval type
+ */
*retval = vm->retval;
} else if (ret == NJS_APPLIED) {
}
-njs_ret_t
+static njs_ret_t
njs_vmcode_number_primitive(njs_vm_t *vm, njs_value_t *invld, njs_value_t *narg)
{
double num;
}
-njs_ret_t
+static njs_ret_t
njs_vmcode_string_primitive(njs_vm_t *vm, njs_value_t *invld, njs_value_t *narg)
{
njs_ret_t ret;
static const njs_vm_trap_t njs_vm_traps[] = {
/* NJS_TRAP_PROPERTY */ { &njs_trap_strings[1], 0 },
- /* NJS_TRAP_STRINGS */ { &njs_trap_strings[0], 0 },
- /* NJS_TRAP_INCDEC */ { &njs_trap_numbers[1], 1 },
- /* NJS_TRAP_NUMBERS */ { &njs_trap_numbers[0], 0 },
- /* NJS_TRAP_NUMBER */ { &njs_trap_number[0], 0 },
+ /* NJS_TRAP_STRINGS */ { &njs_trap_strings[0], 0 },
+ /* NJS_TRAP_INCDEC */ { &njs_trap_numbers[1], 1 },
+ /* NJS_TRAP_NUMBERS */ { &njs_trap_numbers[0], 0 },
+ /* NJS_TRAP_NUMBER */ { &njs_trap_number[0], 0 },
};
{ nxt_string("a = (function(a) { return a + 1 }(2)); a"),
nxt_string("3") },
+ { nxt_string("a = +function(a) { return a + 1 }(2); a"),
+ nxt_string("3") },
+
+ { nxt_string("a = -function(a) { return a + 1 }(2); a"),
+ nxt_string("-3") },
+
{ nxt_string("a = !function(a) { return a + 1 }(2); a"),
nxt_string("false") },
- { nxt_string("a = +function(a) { return a + 1 }(2); a"),
- nxt_string("3") },
+ { nxt_string("a = ~function(a) { return a + 1 }(2); a"),
+ nxt_string("-4") },
+
+ { nxt_string("a = void function(a) { return a + 1 }(2); a"),
+ nxt_string("undefined") },
{ nxt_string("a = true && function(a) { return a + 1 }(2); a"),
nxt_string("3") },