Changeset 34500 in webkit


Ignore:
Timestamp:
Jun 11, 2008 5:33:48 PM (16 years ago)
Author:
cwzwarich@webkit.org
Message:

2008-06-11 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Maciej.

Bug 19498: REGRESSION (r34497): crash while loading GMail
<https://bugs.webkit.org/show_bug.cgi?id=19498>

JavaScriptCore:

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitJumpIfTrueOptimized): (KJS::CodeGenerator::emitJumpIfTrue):
  • VM/CodeGenerator.h:
  • kjs/nodes.cpp: (KJS::DoWhileNode::emitCode): (KJS::WhileNode::emitCode): (KJS::ForNode::emitCode): (KJS::CaseBlockNode::emitCodeForBlock):

LayoutTests:

  • fast/js/logical-or-jless-expected.txt: Added.
  • fast/js/logical-or-jless.html: Added.
  • fast/js/resources/logical-or-jless.js: Added.
Location:
trunk
Files:
3 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r34499 r34500  
     12008-06-11  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
     2
     3        Reviewed by Maciej.
     4
     5        Bug 19498: REGRESSION (r34497): crash while loading GMail
     6        <https://bugs.webkit.org/show_bug.cgi?id=19498>
     7
     8        * VM/CodeGenerator.cpp:
     9        (KJS::CodeGenerator::emitJumpIfTrueMayCombine):
     10        (KJS::CodeGenerator::emitJumpIfTrue):
     11        * VM/CodeGenerator.h:
     12        * kjs/nodes.cpp:
     13        (KJS::DoWhileNode::emitCode):
     14        (KJS::WhileNode::emitCode):
     15        (KJS::ForNode::emitCode):
     16        (KJS::CaseBlockNode::emitCodeForBlock):
     17
    1182008-06-11  Darin Adler  <darin@apple.com>
    219
  • trunk/JavaScriptCore/VM/CodeGenerator.cpp

    r34497 r34500  
    415415}
    416416
    417 PassRefPtr<LabelID> CodeGenerator::emitJumpIfTrue(RegisterID* cond, LabelID* target)
     417PassRefPtr<LabelID> CodeGenerator::emitJumpIfTrueMayCombine(RegisterID* cond, LabelID* target)
    418418{
    419419    if (m_lastOpcodeID == op_less) {
     
    434434    }
    435435   
     436    return emitJumpIfTrue(cond, target);
     437}
     438
     439PassRefPtr<LabelID> CodeGenerator::emitJumpIfTrue(RegisterID* cond, LabelID* target)
     440{
    436441    emitOpcode(op_jtrue);
    437442    instructions().append(cond->index());
  • trunk/JavaScriptCore/VM/CodeGenerator.h

    r34497 r34500  
    261261        PassRefPtr<LabelID> emitLabel(LabelID*);
    262262        PassRefPtr<LabelID> emitJump(LabelID* target);
     263        PassRefPtr<LabelID> emitJumpIfTrueMayCombine(RegisterID* cond, LabelID* target);
    263264        PassRefPtr<LabelID> emitJumpIfTrue(RegisterID* cond, LabelID* target);
    264265        PassRefPtr<LabelID> emitJumpIfFalse(RegisterID* cond, LabelID* target);
  • trunk/JavaScriptCore/kjs/nodes.cpp

    r34457 r34500  
    13551355    generator.emitLabel(continueTarget.get());
    13561356    RegisterID* cond = generator.emitNode(m_expr.get());
    1357     generator.emitJumpIfTrue(cond, topOfLoop.get());
     1357    generator.emitJumpIfTrueMayCombine(cond, topOfLoop.get());
    13581358    generator.emitLabel(breakTarget.get());
    13591359    return result.get();
     
    13771377    generator.emitLabel(continueTarget.get());
    13781378    RegisterID* cond = generator.emitNode(m_expr.get());
    1379     generator.emitJumpIfTrue(cond, topOfLoop.get());
     1379    generator.emitJumpIfTrueMayCombine(cond, topOfLoop.get());
    13801380
    13811381    generator.emitLabel(breakTarget.get());
     
    14091409    if (m_expr2) {
    14101410        RegisterID* cond = generator.emitNode(m_expr2.get());
    1411         generator.emitJumpIfTrue(cond, topOfLoop.get());
     1411        generator.emitJumpIfTrueMayCombine(cond, topOfLoop.get());
    14121412    } else {
    14131413        generator.emitJump(topOfLoop.get());
     
    15771577        generator.emitStrictEqual(clauseVal, clauseVal, switchExpression);
    15781578        labelVector.append(generator.newLabel());
    1579         generator.emitJumpIfTrue(clauseVal, labelVector[labelVector.size() - 1].get());
     1579        generator.emitJumpIfTrueMayCombine(clauseVal, labelVector[labelVector.size() - 1].get());
    15801580    }
    15811581
     
    15841584        generator.emitStrictEqual(clauseVal, clauseVal, switchExpression);
    15851585        labelVector.append(generator.newLabel());
    1586         generator.emitJumpIfTrue(clauseVal, labelVector[labelVector.size() - 1].get());
     1586        generator.emitJumpIfTrueMayCombine(clauseVal, labelVector[labelVector.size() - 1].get());
    15871587    }
    15881588
  • trunk/LayoutTests/ChangeLog

    r34498 r34500  
     12008-06-11  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
     2
     3        Reviewed by Maciej.
     4
     5        Test for:
     6
     7        Bug 19498: REGRESSION (r34497): crash while loading GMail
     8        <https://bugs.webkit.org/show_bug.cgi?id=19498>
     9
     10        * fast/js/logical-or-jless-expected.txt: Added.
     11        * fast/js/logical-or-jless.html: Added.
     12        * fast/js/resources/logical-or-jless.js: Added.
     13
    1142008-06-11  Sam Weinig  <sam@webkit.org>
    215
Note: See TracChangeset for help on using the changeset viewer.