ret = vmcode->code.operation(vm, value1, &frame->trap_values[1]);
+ if (nxt_slow_path(ret == NJS_ERROR)) {
+ return ret;
+ }
+
if (nxt_slow_path(ret == NJS_TRAP)) {
/* Trap handlers are not reentrant. */
njs_internal_error(vm, "trap inside restart instruction");
return NXT_ERROR;
}
- retval = njs_vmcode_operand(vm, vmcode->operand1);
-
- njs_release(vm, retval);
-
- *retval = vm->retval;
+ if (vmcode->code.retval) {
+ retval = njs_vmcode_operand(vm, vmcode->operand1);
+ njs_release(vm, retval);
+ *retval = vm->retval;
+ }
return ret;
}