void JS_FASTCALL stubs::LeaveScript(VMFrame &f) { JSStackFrame *fp = f.fp(); JSContext *cx = f.cx; Probes::exitJSFun(cx, fp->maybeFun(), fp->maybeScript()); if (fp->script()->debugMode) { void *hookData; JSInterpreterHook hook = fp->isExecuteFrame() ? cx->debugHooks->executeHook : cx->debugHooks->callHook; if (JS_UNLIKELY(hook != NULL) && (hookData = fp->maybeHookData())) { JSBool ok = JS_TRUE; hook(cx, fp, JS_FALSE, &ok, hookData); if (!ok) THROW(); } } }
void JS_FASTCALL stubs::EnterScript(VMFrame &f) { JSStackFrame *fp = f.fp(); JSContext *cx = f.cx; if (fp->script()->debugMode) { if (fp->isExecuteFrame()) { JSInterpreterHook hook = cx->debugHooks->executeHook; if (JS_UNLIKELY(hook != NULL)) fp->setHookData(hook(cx, fp, JS_TRUE, 0, cx->debugHooks->executeHookData)); } else { JSInterpreterHook hook = cx->debugHooks->callHook; if (JS_UNLIKELY(hook != NULL)) fp->setHookData(hook(cx, fp, JS_TRUE, 0, cx->debugHooks->callHookData)); } } Probes::enterJSFun(cx, fp->maybeFun(), fp->script()); }