nxt_int_t
njs_vm_run(njs_vm_t *vm)
{
- nxt_int_t ret;
-
if (nxt_slow_path(vm->backtrace != NULL)) {
nxt_array_reset(vm->backtrace);
}
+ return njs_vm_handle_events(vm);
+}
+
+
+nxt_int_t
+njs_vm_start(njs_vm_t *vm)
+{
+ njs_ret_t ret;
+
ret = njs_vmcode_interpreter(vm);
if (ret == NJS_STOP) {
- ret = njs_vm_handle_events(vm);
+ ret = NJS_OK;
}
- switch (ret) {
- case NJS_STOP:
- return NJS_OK;
-
- case NXT_AGAIN:
- case NXT_ERROR:
- default:
- return ret;
- }
+ return ret;
}
}
}
- return njs_is_pending_events(vm) ? NJS_AGAIN : NJS_STOP;
+ return njs_is_pending_events(vm) ? NJS_AGAIN : NJS_OK;
}
NXT_EXPORT nxt_int_t njs_vm_compile(njs_vm_t *vm, u_char **start, u_char *end);
NXT_EXPORT njs_vm_t *njs_vm_clone(njs_vm_t *vm, njs_external_ptr_t external);
-NXT_EXPORT nxt_int_t njs_vm_call(njs_vm_t *vm, njs_function_t *function,
- const njs_value_t *args, nxt_uint_t nargs);
NXT_EXPORT njs_vm_event_t njs_vm_add_event(njs_vm_t *vm,
njs_function_t *function, nxt_uint_t once, njs_host_event_t host_ev,
NXT_EXPORT nxt_int_t njs_vm_post_event(njs_vm_t *vm, njs_vm_event_t vm_event,
const njs_value_t *args, nxt_uint_t nargs);
+/*
+ * Runs the specified function with provided arguments.
+ * NJS_OK successful run.
+ * NJS_ERROR some exception or internal error happens.
+ *
+ * njs_vm_retval(vm) can be used to get the retval or exception value.
+ */
+NXT_EXPORT nxt_int_t njs_vm_call(njs_vm_t *vm, njs_function_t *function,
+ const njs_value_t *args, nxt_uint_t nargs);
+
+/*
+ * Runs posted events.
+ * NJS_OK successfully processed all posted events, no more events.
+ * NJS_AGAIN successfully processed all events, some posted events are
+ * still pending.
+ * NJS_ERROR some exception or internal error happens.
+ * njs_vm_retval(vm) can be used to get the retval or exception value.
+ */
NXT_EXPORT nxt_int_t njs_vm_run(njs_vm_t *vm);
+/*
+ * Runs the global code.
+ * NJS_OK successful run.
+ * NJS_ERROR some exception or internal error happens.
+ *
+ * njs_vm_retval(vm) can be used to get the retval or exception value.
+ */
+NXT_EXPORT nxt_int_t njs_vm_start(njs_vm_t *vm);
+
NXT_EXPORT const njs_extern_t *njs_vm_external_prototype(njs_vm_t *vm,
njs_external_t *external);
NXT_EXPORT nxt_int_t njs_vm_external_create(njs_vm_t *vm,