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));