Esempio n. 1
0
JSD_SetContextFlags(JSDContext *jsdc, uint32 flags)
{
    uint32 oldFlags = jsdc->flags;
    JSD_ASSERT_VALID_CONTEXT(jsdc);
    jsdc->flags = flags;
    if ((flags & JSD_COLLECT_PROFILE_DATA) ||
        !(flags & JSD_DISABLE_OBJECT_TRACE)) {
        /* Need to reenable our call hooks now */
        JS_SetExecuteHook(jsdc->jsrt, jsd_TopLevelCallHook, jsdc);
        JS_SetCallHook(jsdc->jsrt, jsd_FunctionCallHook, jsdc);
    }
    if ((oldFlags ^ flags) & JSD_DISABLE_OBJECT_TRACE) {
        /* Changing our JSD_DISABLE_OBJECT_TRACE flag */
        if (!(flags & JSD_DISABLE_OBJECT_TRACE)) {
            /* Need to reenable our object hooks now */
            JS_SetObjectHook(jsdc->jsrt, jsd_ObjectHook, jsdc);
        } else {
            jsd_DestroyObjects(jsdc);
            JS_SetObjectHook(jsdc->jsrt, NULL, NULL);
        }
    }
}
Esempio n. 2
0
/*
 * call-seq:
 *   debugger=(debugger)
 *
 * Sets a debugger object
 */
static VALUE
set_debugger(VALUE self, VALUE debugger)
{
  JohnsonRuntime* runtime;
  JSDebugHooks* debug_hooks;

  rb_iv_set(self, "@debugger", debugger);
  Data_Get_Struct(self, JohnsonRuntime, runtime);
  Data_Get_Struct(debugger, JSDebugHooks, debug_hooks);

  JSContext * context = johnson_get_current_context(runtime);

  JS_SetInterrupt(          runtime->js,
                            debug_hooks->interruptHandler,
                            debug_hooks->interruptHandlerData);
  JS_SetNewScriptHook(      runtime->js,
                            debug_hooks->newScriptHook,
                            debug_hooks->newScriptHookData);
  JS_SetDestroyScriptHook(  runtime->js,
                            debug_hooks->destroyScriptHook,
                            debug_hooks->destroyScriptHookData);
  JS_SetDebuggerHandler(    runtime->js,
                            debug_hooks->debuggerHandler,
                            debug_hooks->debuggerHandlerData);
  JS_SetSourceHandler(      runtime->js,
                            debug_hooks->sourceHandler,
                            debug_hooks->sourceHandlerData);
  JS_SetExecuteHook(        runtime->js,
                            debug_hooks->executeHook,
                            debug_hooks->executeHookData);
  JS_SetCallHook(           runtime->js,
                            debug_hooks->callHook,
                            debug_hooks->callHookData);
  JS_SetObjectHook(         runtime->js,
                            debug_hooks->objectHook,
                            debug_hooks->objectHookData);
  JS_SetThrowHook(          runtime->js,
                            debug_hooks->throwHook,
                            debug_hooks->throwHookData);
  JS_SetDebugErrorHook(     runtime->js,
                            debug_hooks->debugErrorHook,
                            debug_hooks->debugErrorHookData);

  JS_SetContextDebugHooks(context, debug_hooks);

  return debugger;
}