Print this page
enable v8plus_call to be used in any thread

@@ -110,10 +110,11 @@
 extern int nvlist_lookup_v8plus_jsfunc(const nvlist_t *, const char *,
     v8plus_jsfunc_t *);
 extern int nvpair_value_v8plus_jsfunc(const nvpair_t *, v8plus_jsfunc_t *);
 extern void v8plus_jsfunc_hold(v8plus_jsfunc_t);
 extern void v8plus_jsfunc_rele(v8plus_jsfunc_t);
+extern void v8plus_jsfunc_rele_direct(v8plus_jsfunc_t);
 
 /*
  * Place or release a hold on the V8 representation of the specified C object.
  * This is rarely necessary; v8plus_defer() performs this action for you, but
  * other asynchronous mechanisms may require it.  If you are returning from

@@ -122,10 +123,11 @@
  * must be balanced.  Use of the object within a thread after releasing is a
  * bug.
  */
 extern void v8plus_obj_hold(const void *);
 extern void v8plus_obj_rele(const void *);
+extern void v8plus_obj_rele_direct(const void *);
 
 /*
  * Convenience functions for dealing with JS arguments.
  */
 extern v8plus_type_t v8plus_typeof(const nvpair_t *);

@@ -152,10 +154,11 @@
  * Call an opaque JavaScript function from C.  The caller is responsible for
  * freeing the returned list.  The first argument is not const because it is
  * possible for the JS code to modify the function represented by the cookie.
  */
 extern nvlist_t *v8plus_call(v8plus_jsfunc_t, const nvlist_t *);
+extern nvlist_t *v8plus_call_direct(v8plus_jsfunc_t, const nvlist_t *);
 
 /*
  * Call the named JavaScript function in the context of the JS object
  * represented by the native object.  Calling and return conventions are the
  * same as for the C interfaces; i.e., the nvlist will be converted into JS