diff --git a/js/src/jsdbgapi.cpp b/js/src/jsdbgapi.cpp index 755b3983971..b43e3c63a6b 100644 --- a/js/src/jsdbgapi.cpp +++ b/js/src/jsdbgapi.cpp @@ -38,6 +38,7 @@ #include "jsobjinlines.h" #include "jsscriptinlines.h" +#include "vm/Debugger-inl.h" #include "vm/Interpreter-inl.h" #include "vm/Stack-inl.h" diff --git a/js/src/vm/Debugger-inl.h b/js/src/vm/Debugger-inl.h new file mode 100644 index 00000000000..bd4ca566f08 --- /dev/null +++ b/js/src/vm/Debugger-inl.h @@ -0,0 +1,25 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * vim: set ts=8 sts=4 et sw=4 tw=99: + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef Debugger_inl_h__ +#define Debugger_inl_h__ + +#include "vm/Debugger.h" + +#include "vm/Stack-inl.h" + +bool +js::Debugger::onLeaveFrame(JSContext *cx, AbstractFramePtr frame, bool ok) +{ + /* Traps must be cleared from eval frames, see slowPathOnLeaveFrame. */ + bool evalTraps = frame.isEvalFrame() && + frame.script()->hasAnyBreakpointsOrStepMode(); + if (!cx->compartment->getDebuggees().empty() || evalTraps) + ok = slowPathOnLeaveFrame(cx, frame, ok); + return ok; +} + +#endif // Debugger_inl_h__ diff --git a/js/src/vm/Debugger.cpp b/js/src/vm/Debugger.cpp index 04f37e08b1c..7c318f828c0 100644 --- a/js/src/vm/Debugger.cpp +++ b/js/src/vm/Debugger.cpp @@ -405,6 +405,13 @@ Debugger::init(JSContext *cx) return ok; } +Debugger * +Debugger::fromJSObject(JSObject *obj) +{ + JS_ASSERT(js::GetObjectClass(obj) == &jsclass); + return (Debugger *) obj->getPrivate(); +} + JS_STATIC_ASSERT(unsigned(JSSLOT_DEBUGFRAME_OWNER) == unsigned(JSSLOT_DEBUGSCRIPT_OWNER)); JS_STATIC_ASSERT(unsigned(JSSLOT_DEBUGFRAME_OWNER) == unsigned(JSSLOT_DEBUGSOURCE_OWNER)); JS_STATIC_ASSERT(unsigned(JSSLOT_DEBUGFRAME_OWNER) == unsigned(JSSLOT_DEBUGOBJECT_OWNER)); @@ -3362,6 +3369,12 @@ DebuggerScript_getLineOffsets(JSContext *cx, unsigned argc, Value *vp) return true; } +bool +Debugger::observesFrame(AbstractFramePtr frame) const +{ + return observesGlobal(&frame.script()->global()); +} + bool Debugger::observesScript(JSScript *script) const { diff --git a/js/src/vm/Debugger.h b/js/src/vm/Debugger.h index 503f7251bfb..2f9ee826cc3 100644 --- a/js/src/vm/Debugger.h +++ b/js/src/vm/Debugger.h @@ -628,13 +628,6 @@ Debugger::toJSObjectRef() return object; } -Debugger * -Debugger::fromJSObject(JSObject *obj) -{ - JS_ASSERT(js::GetObjectClass(obj) == &jsclass); - return (Debugger *) obj->getPrivate(); -} - bool Debugger::observesEnterFrame() const { @@ -659,12 +652,6 @@ Debugger::observesGlobal(GlobalObject *global) const return debuggees.has(global); } -bool -Debugger::observesFrame(AbstractFramePtr frame) const -{ - return observesGlobal(&frame.script()->global()); -} - JSTrapStatus Debugger::onEnterFrame(JSContext *cx, AbstractFramePtr frame, MutableHandleValue vp) { @@ -673,17 +660,6 @@ Debugger::onEnterFrame(JSContext *cx, AbstractFramePtr frame, MutableHandleValue return slowPathOnEnterFrame(cx, frame, vp); } -bool -Debugger::onLeaveFrame(JSContext *cx, AbstractFramePtr frame, bool ok) -{ - /* Traps must be cleared from eval frames, see slowPathOnLeaveFrame. */ - bool evalTraps = frame.isEvalFrame() && - frame.script()->hasAnyBreakpointsOrStepMode(); - if (!cx->compartment->getDebuggees().empty() || evalTraps) - ok = slowPathOnLeaveFrame(cx, frame, ok); - return ok; -} - JSTrapStatus Debugger::onDebuggerStatement(JSContext *cx, MutableHandleValue vp) {