JSDContext* jsd_DebuggerOnForUser(JSTaskState* jstaskstate, JSD_UserCallbacks* callbacks, void* user) { JSDContext* jsdc; JSContext* iter = NULL; JSContext* cx; jsdc = _newJSDContext(jstaskstate, callbacks, user); if( ! jsdc ) return NULL; /* set hooks here */ JS_SetNewScriptHookProc(jsdc->jstaskstate, jsd_NewScriptHookProc, jsdc); JS_SetDestroyScriptHookProc(jsdc->jstaskstate, jsd_DestroyScriptHookProc, jsdc); #ifdef LIVEWIRE LWDBG_SetNewScriptHookProc(jsd_NewScriptHookProc, jsdc); #endif /* enumerate contexts for JSTaskState and add them to our table */ while( NULL != (cx = JS_ContextIterator(jsdc->jstaskstate, &iter)) ) jsd_JSContextUsed(jsdc, cx); if( jsdc->userCallbacks.setContext ) jsdc->userCallbacks.setContext(jsdc, jsdc->user); return jsdc; }
JSDContext* jsd_DebuggerOnForUser(JSRuntime* jsrt, JSD_UserCallbacks* callbacks, void* user, JSObject* scopeobj) { JSDContext* jsdc; JSContext* iter = NULL; jsdc = _newJSDContext(jsrt, callbacks, user, scopeobj); if( ! jsdc ) return NULL; /* * Set hooks here. The new/destroy script hooks are on even when * the debugger is paused. The destroy hook so we'll clean up * internal data structures when scripts are destroyed, and the * newscript hook for backwards compatibility for now. We'd like * to stop doing that. */ JS_SetNewScriptHookProc(jsdc->jsrt, jsd_NewScriptHookProc, jsdc); JS_SetDestroyScriptHookProc(jsdc->jsrt, jsd_DestroyScriptHookProc, jsdc); jsd_DebuggerUnpause(jsdc); #ifdef LIVEWIRE LWDBG_SetNewScriptHookProc(jsd_NewScriptHookProc, jsdc); #endif if( jsdc->userCallbacks.setContext ) jsdc->userCallbacks.setContext(jsdc, jsdc->user); return jsdc; }