Changeset 34351 in webkit


Ignore:
Timestamp:
Jun 3, 2008 3:48:52 PM (16 years ago)
Author:
oliver@apple.com
Message:

Bug 12983: Web Inspector break on the debugger keyword
<https://bugs.webkit.org/show_bug.cgi?id=12983>

Reviewed by Tim

Added a DebuggerStatementNode to handle codegen, and added a new
DidReachBreakPoint debug event (which will hopefully be useful
if we ever move breakpoint management into JSC proper). Also
added didReachBreakpoint to Debugger to allow us to actually respond
to this event.

Location:
trunk
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r34338 r34351  
     12008-06-03  Oliver Hunt  <oliver@apple.com>
     2
     3        Reviewed by Tim.
     4
     5        Bug 12983: Web Inspector break on the debugger keyword
     6        <https://bugs.webkit.org/show_bug.cgi?id=12983>
     7
     8        Added a DebuggerStatementNode to handle codegen, and added a new
     9        DidReachBreakPoint debug event (which will hopefully be useful
     10        if we ever move breakpoint management into JSC proper).  Also
     11        added didReachBreakpoint to Debugger to allow us to actually respond
     12        to this event.
     13
     14        * VM/CodeBlock.cpp:
     15        (KJS::debugHookName):
     16        * VM/Machine.cpp:
     17        (KJS::Machine::debug):
     18        * VM/Machine.h:
     19        (KJS::):
     20        * kjs/debugger.h:
     21        * kjs/grammar.y:
     22        * kjs/nodes.cpp:
     23        (KJS::DebuggerStatementNode::emitCode):
     24        (KJS::DebuggerStatementNode::execute):
     25        * kjs/nodes.h:
     26        (KJS::DebuggerStatementNode::):
     27        * kjs/nodes2string.cpp:
     28        (KJS::DebuggerStatementNode::streamTo):
     29
    1302008-06-03  Maciej Stachowiak  <mjs@apple.com>
    231
  • trunk/JavaScriptCore/VM/CodeBlock.cpp

    r34182 r34351  
    109109    case DidExecuteProgram:
    110110        return "didExecuteProgram";
     111    case DidReachBreakpoint:
     112        return "didReachBreakpoint";
    111113    }
    112114   
  • trunk/JavaScriptCore/VM/Machine.cpp

    r34338 r34351  
    862862        return;
    863863    }
     864    case DidReachBreakpoint: {
     865        debugger->didReachBreakpoint(debuggerCallFrame, codeBlock->ownerNode->sourceId(), lastLine);
     866        return;
     867    }
    864868    }
    865869}
  • trunk/JavaScriptCore/VM/Machine.h

    r34304 r34351  
    5151        DidExecuteProgram,
    5252        DidEnterCallFrame,
     53        DidReachBreakpoint,
    5354        WillLeaveCallFrame,
    5455        WillExecuteStatement
  • trunk/JavaScriptCore/kjs/debugger.h

    r34182 r34351  
    167167    virtual void willExecuteProgram(const DebuggerCallFrame&, int sourceId, int lineno) = 0;
    168168    virtual void didExecuteProgram(const DebuggerCallFrame&, int sourceId, int lineno) = 0;
     169    virtual void didReachBreakpoint(const DebuggerCallFrame&, int sourceId, int lineno) = 0;
    169170
    170171  private:
  • trunk/JavaScriptCore/kjs/grammar.y

    r33979 r34351  
    10211021
    10221022DebuggerStatement:
    1023     DEBUGGER ';'                        { $$ = createNodeDeclarationInfo<StatementNode*>(new EmptyStatementNode(), 0, 0, 0);
     1023    DEBUGGER ';'                        { $$ = createNodeDeclarationInfo<StatementNode*>(new DebuggerStatementNode(), 0, 0, 0);
    10241024                                          DBG($$.m_node, @1, @2); }
    1025   | DEBUGGER error                      { $$ = createNodeDeclarationInfo<StatementNode*>(new EmptyStatementNode(), 0, 0, 0);
     1025  | DEBUGGER error                      { $$ = createNodeDeclarationInfo<StatementNode*>(new DebuggerStatementNode(), 0, 0, 0);
    10261026                                          DBG($$.m_node, @1, @1); AUTO_SEMICOLON; }
    10271027;
  • trunk/JavaScriptCore/kjs/nodes.cpp

    r34334 r34351  
    48454845}
    48464846
     4847// ------------------------------ DebuggerStatementNode ---------------------------
     4848
     4849RegisterID* DebuggerStatementNode::emitCode(CodeGenerator& generator, RegisterID* dst)
     4850{
     4851    generator.emitDebugHook(DidReachBreakpoint, firstLine(), lastLine());
     4852    return dst;
     4853}
     4854
     4855JSValue* DebuggerStatementNode::execute(OldInterpreterExecState* exec)
     4856{
     4857    return exec->setNormalCompletion();
     4858}
     4859
    48474860// ------------------------------ ExprStatementNode ----------------------------
    48484861
  • trunk/JavaScriptCore/kjs/nodes.h

    r34319 r34351  
    26392639        virtual bool isEmptyStatement() const KJS_FAST_CALL { return true; }
    26402640    };
     2641   
     2642    class DebuggerStatementNode : public StatementNode {
     2643    public:
     2644        DebuggerStatementNode() KJS_FAST_CALL
     2645        {
     2646        }
     2647       
     2648        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2649
     2650        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
     2651        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
     2652    };
    26412653
    26422654    class ExprStatementNode : public StatementNode {
  • trunk/JavaScriptCore/kjs/nodes2string.cpp

    r31149 r34351  
    821821}
    822822
     823void DebuggerStatementNode::streamTo(SourceStream& s) const
     824{
     825    s << Endl << "debugger;";
     826}
     827
    823828void ExprStatementNode::streamTo(SourceStream& s) const
    824829{
  • trunk/WebCore/ChangeLog

    r34349 r34351  
     12008-06-03  Oliver Hunt  <oliver@apple.com>
     2
     3        Reviewed by Tim.
     4
     5        Bug 12983: Web Inspector break on the debugger keyword
     6        <https://bugs.webkit.org/show_bug.cgi?id=12983>
     7
     8        Added support for the new debugger didReachBreakpoint
     9        callback so that WebInspector receives the debugger event
     10        and breaks.
     11
     12        * page/JavaScriptDebugServer.cpp:
     13        (WebCore::JavaScriptDebugServer::didReachBreakpoint):
     14        * page/JavaScriptDebugServer.h:
     15
    1162008-06-03  Darin Adler  <darin@apple.com>
    217
  • trunk/WebCore/page/JavaScriptDebugServer.cpp

    r34182 r34351  
    500500}
    501501
     502void JavaScriptDebugServer::didReachBreakpoint(const DebuggerCallFrame& debuggerCallFrame, int sourceID, int lineNumber)
     503{
     504    if (m_paused)
     505        return;
     506   
     507    ASSERT(m_currentCallFrame);
     508    if (!m_currentCallFrame)
     509        return;
     510
     511    m_pauseOnNextStatement = true;
     512    m_currentCallFrame->update(debuggerCallFrame, sourceID, lineNumber);
     513    pauseIfNeeded(toPage(debuggerCallFrame.dynamicGlobalObject()));
     514}
     515
    502516} // namespace WebCore
  • trunk/WebCore/page/JavaScriptDebugServer.h

    r34182 r34351  
    103103        virtual void willExecuteProgram(const KJS::DebuggerCallFrame&, int sourceId, int lineno);
    104104        virtual void didExecuteProgram(const KJS::DebuggerCallFrame&, int sourceId, int lineno);
     105        virtual void didReachBreakpoint(const KJS::DebuggerCallFrame&, int sourceId, int lineno);
    105106
    106107        typedef HashMap<Page*, ListenerSet*> PageListenersMap;
  • trunk/WebKit/mac/ChangeLog

    r34347 r34351  
     12008-06-03  Oliver Hunt  <oliver@apple.com>
     2
     3        Reviewed by Tim.
     4
     5        Bug 12983: Web Inspector break on the debugger keyword
     6        <https://bugs.webkit.org/show_bug.cgi?id=12983>
     7
     8        Add stubs to allow old webkit debugger interface to build.
     9
     10        * WebView/WebScriptDebugger.h:
     11        * WebView/WebScriptDebugger.mm:
     12
    1132008-06-03  Anders Carlsson  <andersca@apple.com>
    214
  • trunk/WebKit/mac/WebView/WebScriptDebugger.h

    r34182 r34351  
    5959    virtual void willExecuteProgram(const KJS::DebuggerCallFrame&, int sourceId, int lineno);
    6060    virtual void didExecuteProgram(const KJS::DebuggerCallFrame&, int sourceId, int lineno);
     61    virtual void didReachBreakpoint(const KJS::DebuggerCallFrame&, int sourceId, int lineno);
    6162
    6263private:
  • trunk/WebKit/mac/WebView/WebScriptDebugger.mm

    r34182 r34351  
    189189    [m_topCallFrame.get() _clearDebuggerCallFrame];
    190190}
     191
     192void WebScriptDebugger::didReachBreakpoint(const DebuggerCallFrame&, int, int)
     193{
     194    return;
     195}
Note: See TracChangeset for help on using the changeset viewer.