JSBool jsd_ClearExecutionHook(JSDContext* jsdc, JSDScript* jsdscript, jsuword pc) { JSDExecHook* jsdhook; JSD_LOCK(); jsdhook = _findHook(jsdc, jsdscript, pc); if( ! jsdhook ) { JSD_UNLOCK(); return JS_FALSE; } JS_ClearTrap(jsdc->dumbContext, jsdscript->script, (jsbytecode*)pc, NULL, NULL ); JS_REMOVE_LINK(&jsdhook->links); free(jsdhook); JSD_UNLOCK(); return JS_TRUE; }
JSBool jsd_ClearExecutionHook(JSDContext* jsdc, JSDScript* jsdscript, uintptr_t pc) { JSCompartment* oldCompartment; JSDExecHook* jsdhook; JSD_LOCK(); jsdhook = _findHook(jsdc, jsdscript, pc); if( ! jsdhook ) { JSD_UNLOCK(); return JS_FALSE; } oldCompartment = JS_EnterCompartmentOfScript(jsdc->dumbContext, jsdscript->script); JS_ClearTrap(jsdc->dumbContext, jsdscript->script, (jsbytecode*)pc, NULL, NULL ); JS_LeaveCompartment(jsdc->dumbContext, oldCompartment); JS_REMOVE_LINK(&jsdhook->links); free(jsdhook); JSD_UNLOCK(); return JS_TRUE; }
JSBool jsd_ClearExecutionHook(JSDContext* jsdc, JSDScript* jsdscript, jsuword pc) { JSCrossCompartmentCall *call; JSDExecHook* jsdhook; JSD_LOCK(); jsdhook = _findHook(jsdc, jsdscript, pc); if( ! jsdhook ) { JSD_UNLOCK(); return JS_FALSE; } call = JS_EnterCrossCompartmentCallScript(jsdc->dumbContext, jsdscript->script); if(!call) { JSD_UNLOCK(); return JS_FALSE; } JS_ClearTrap(jsdc->dumbContext, jsdscript->script, (jsbytecode*)pc, NULL, NULL ); JS_LeaveCrossCompartmentCall(call); JS_REMOVE_LINK(&jsdhook->links); free(jsdhook); JSD_UNLOCK(); return JS_TRUE; }
void CThreadDebugger::ClearTrap(CActiveBreakPoint* activeBreakPoint) { ENSURE(activeBreakPoint->m_Script != NULL && activeBreakPoint->m_Pc != NULL); JSTrapHandler prevHandler; jsval prevClosure; JS_ClearTrap(m->m_pScriptInterface->GetContext(), activeBreakPoint->m_Script, activeBreakPoint->m_Pc, &prevHandler, &prevClosure); activeBreakPoint->m_Script = NULL; activeBreakPoint->m_Pc = NULL; }