if (JSJ_callbacks->exit_js)
if (JSJ_callbacks && JSJ_callbacks->exit_js)
jsj_exit_js(JSContext *cx, JSJavaThreadState *jsj_env, JSErrorReporter original_reporter){    JNIEnv *jEnv;#ifdef JSJ_THREADSAFE    JS_EndRequest(cx);#endif    /* Restore the JS error reporter */    JS_SetErrorReporter(cx, original_reporter);    jEnv = jsj_env->jEnv;#ifdef DEBUG    /* Any Java exceptions should have been noticed and reported already */    if ((*jEnv)->ExceptionOccurred(jEnv)) {        JS_ASSERT(0);        jsj_LogError("Unhandled Java exception detected");        return JS_FALSE;    }#endif    /*     * Convert reported JS errors to JSExceptions, unless the errors were     * themselves the result of Java exceptions, in which case the original     * Java exception is simply propagated.     */    throw_any_pending_js_error_as_a_java_exception(jsj_env);    /* Invoke callback, presumably used to implement concurrency constraints */    if (JSJ_callbacks->exit_js)        JSJ_callbacks->exit_js(jEnv);    return JS_TRUE;}