Print this page
XXX review feedback from keith
XXX error handling cleanup
XXX rework to avoid changing api
XXX well, it works now...
XXX first cut of crosscall
@@ -451,19 +451,22 @@
return (rp);
}
extern "C" nvlist_t *
-v8plus_method_call(void *cop, const char *name, const nvlist_t *lp)
+v8plus_method_call_direct(void *cop, const char *name, const nvlist_t *lp)
{
v8plus::ObjectWrap *op = v8plus::ObjectWrap::objlookup(cop);
const int max_argc = nvlist_length(lp);
int argc, err;
v8::Handle<v8::Value> argv[max_argc];
v8::Handle<v8::Value> res;
nvlist_t *rp;
+ if (v8plus_in_event_thread() != _B_TRUE)
+ v8plus_panic("direct method call outside of event loop");
+
argc = max_argc;
nvlist_to_v8_argv(lp, &argc, argv);
if ((err = nvlist_alloc(&rp, NV_UNIQUE_NAME, 0)) != 0)
return (v8plus_nverr(err, NULL));