Changeset 36270 in webkit for trunk/JavaScriptCore/kjs


Ignore:
Timestamp:
Sep 8, 2008, 1:26:20 PM (17 years ago)
Author:
[email protected]
Message:

2008-09-08 Kevin McCullough <[email protected]>

Reviewed by Geoff.

<rdar://problem/6134407> Breakpoints in for loops, while loops or
conditions without curly braces don't break. (19306)
-Statement Lists already emit debug hooks but conditionals without
brackets are not lists.

  • kjs/nodes.cpp: (KJS::IfNode::emitCode): (KJS::IfElseNode::emitCode): (KJS::DoWhileNode::emitCode): (KJS::WhileNode::emitCode): (KJS::ForNode::emitCode): (KJS::ForInNode::emitCode):
  • kjs/nodes.h: (KJS::StatementNode::): (KJS::BlockNode::):
Location:
trunk/JavaScriptCore/kjs
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/nodes.cpp

    r36264 r36270  
    11391139    generator.emitJumpIfFalse(cond, afterThen.get());
    11401140
     1141    if (!m_ifBlock->isBlock())
     1142        generator.emitDebugHook(WillExecuteStatement, m_ifBlock->firstLine(), m_ifBlock->lastLine());
     1143
    11411144    generator.emitNode(dst, m_ifBlock.get());
    11421145    generator.emitLabel(afterThen.get());
     
    11541157    generator.emitJumpIfFalse(cond, beforeElse.get());
    11551158
     1159    if (!m_ifBlock->isBlock())
     1160        generator.emitDebugHook(WillExecuteStatement, m_ifBlock->firstLine(), m_ifBlock->lastLine());
     1161
    11561162    generator.emitNode(dst, m_ifBlock.get());
    11571163    generator.emitJump(afterElse.get());
     
    11721178    RefPtr<LabelID> topOfLoop = generator.newLabel();
    11731179    generator.emitLabel(topOfLoop.get());
     1180
     1181    if (!m_statement->isBlock())
     1182        generator.emitDebugHook(WillExecuteStatement, m_statement->firstLine(), m_statement->lastLine());
    11741183
    11751184    RefPtr<LabelID> continueTarget = generator.newLabel();
     
    11831192    RegisterID* cond = generator.emitNode(m_expr.get());
    11841193    generator.emitJumpIfTrue(cond, topOfLoop.get());
     1194
    11851195    generator.emitLabel(breakTarget.get());
    11861196    return result.get();
     
    11971207    generator.emitJump(continueTarget.get());
    11981208    generator.emitLabel(topOfLoop.get());
     1209
     1210    if (!m_statement->isBlock())
     1211        generator.emitDebugHook(WillExecuteStatement, m_statement->firstLine(), m_statement->lastLine());
    11991212   
    12001213    generator.pushJumpContext(&m_labelStack, continueTarget.get(), breakTarget.get(), true);
     
    12401253        generator.emitJump(topOfLoop.get());
    12411254    }
     1255
     1256    if (!m_statement->isBlock())
     1257        generator.emitDebugHook(WillExecuteStatement, m_statement->firstLine(), m_statement->lastLine());
     1258
    12421259    generator.emitLabel(breakTarget.get());
    12431260    return result.get();
     
    13221339    generator.emitNode(dst, m_statement.get());
    13231340    generator.popJumpContext();
     1341
     1342    if (!m_statement->isBlock())
     1343        generator.emitDebugHook(WillExecuteStatement, m_statement->firstLine(), m_statement->lastLine());
    13241344
    13251345    generator.emitLabel(continueTarget.get());
  • trunk/JavaScriptCore/kjs/nodes.h

    r36264 r36270  
    234234        virtual bool isEmptyStatement() const JSC_FAST_CALL { return false; }
    235235
     236        virtual bool isBlock() const KJS_FAST_CALL { return false; }
    236237    protected:
    237238        LabelStack m_labelStack;
     
    18271828        StatementVector& children() { return m_children; }
    18281829
     1830        virtual bool isBlock() const KJS_FAST_CALL { return true; }
    18291831    protected:
    18301832        StatementVector m_children;
Note: See TracChangeset for help on using the changeset viewer.