Changeset 34784 in webkit for trunk/JavaScriptCore


Ignore:
Timestamp:
Jun 24, 2008, 5:41:40 PM (17 years ago)
Author:
[email protected]
Message:

2008-06-24 Cameron Zwarich <[email protected]>

Reviewed by Maciej.

Make the conversion of the pair (less, jtrue) to jless use register
reference counting information for safety instead of requiring callers
to decide whether it is safe.

No changes on SunSpider codegen.

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitJumpIfTrue):
  • VM/CodeGenerator.h:
  • kjs/nodes.cpp: (KJS::DoWhileNode::emitCode): (KJS::WhileNode::emitCode): (KJS::ForNode::emitCode): (KJS::CaseBlockNode::emitCodeForBlock):
Location:
trunk/JavaScriptCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r34781 r34784  
     12008-06-24  Cameron Zwarich  <[email protected]>
     2
     3        Reviewed by Maciej.
     4
     5        Make the conversion of the pair (less, jtrue) to jless use register
     6        reference counting information for safety instead of requiring callers
     7        to decide whether it is safe.
     8
     9        No changes on SunSpider codegen.
     10
     11        * VM/CodeGenerator.cpp:
     12        (KJS::CodeGenerator::emitJumpIfTrue):
     13        * VM/CodeGenerator.h:
     14        * kjs/nodes.cpp:
     15        (KJS::DoWhileNode::emitCode):
     16        (KJS::WhileNode::emitCode):
     17        (KJS::ForNode::emitCode):
     18        (KJS::CaseBlockNode::emitCodeForBlock):
     19
    1202008-06-24  Kevin McCullough  <[email protected]>
    221
  • trunk/JavaScriptCore/VM/CodeGenerator.cpp

    r34781 r34784  
    426426}
    427427
    428 PassRefPtr<LabelID> CodeGenerator::emitJumpIfTrueMayCombine(RegisterID* cond, LabelID* target)
     428PassRefPtr<LabelID> CodeGenerator::emitJumpIfTrue(RegisterID* cond, LabelID* target)
    429429{
    430430    if (m_lastOpcodeID == op_less) {
     
    435435        retrieveLastBinaryOp(dstIndex, src1Index, src2Index);
    436436       
    437         if (cond->index() == dstIndex) {
     437        if (cond->index() == dstIndex && !cond->refCount()) {
    438438            rewindBinaryOp();
    439439            emitOpcode(op_jless);
     
    445445    }
    446446   
    447     return emitJumpIfTrue(cond, target);
    448 }
    449 
    450 PassRefPtr<LabelID> CodeGenerator::emitJumpIfTrue(RegisterID* cond, LabelID* target)
    451 {
    452447    emitOpcode(op_jtrue);
    453448    instructions().append(cond->index());
  • trunk/JavaScriptCore/VM/CodeGenerator.h

    r34659 r34784  
    246246        PassRefPtr<LabelID> emitLabel(LabelID*);
    247247        PassRefPtr<LabelID> emitJump(LabelID* target);
    248         PassRefPtr<LabelID> emitJumpIfTrueMayCombine(RegisterID* cond, LabelID* target);
    249248        PassRefPtr<LabelID> emitJumpIfTrue(RegisterID* cond, LabelID* target);
    250249        PassRefPtr<LabelID> emitJumpIfFalse(RegisterID* cond, LabelID* target);
  • trunk/JavaScriptCore/kjs/nodes.cpp

    r34770 r34784  
    12011201    generator.emitLabel(continueTarget.get());
    12021202    RegisterID* cond = generator.emitNode(m_expr.get());
    1203     generator.emitJumpIfTrueMayCombine(cond, topOfLoop.get());
     1203    generator.emitJumpIfTrue(cond, topOfLoop.get());
    12041204    generator.emitLabel(breakTarget.get());
    12051205    return result.get();
     
    12231223    generator.emitLabel(continueTarget.get());
    12241224    RegisterID* cond = generator.emitNode(m_expr.get());
    1225     generator.emitJumpIfTrueMayCombine(cond, topOfLoop.get());
     1225    generator.emitJumpIfTrue(cond, topOfLoop.get());
    12261226
    12271227    generator.emitLabel(breakTarget.get());
     
    12551255    if (m_expr2) {
    12561256        RegisterID* cond = generator.emitNode(m_expr2.get());
    1257         generator.emitJumpIfTrueMayCombine(cond, topOfLoop.get());
     1257        generator.emitJumpIfTrue(cond, topOfLoop.get());
    12581258    } else {
    12591259        generator.emitJump(topOfLoop.get());
     
    14231423        generator.emitBinaryOp(op_stricteq, clauseVal, clauseVal, switchExpression);
    14241424        labelVector.append(generator.newLabel());
    1425         generator.emitJumpIfTrueMayCombine(clauseVal, labelVector[labelVector.size() - 1].get());
     1425        generator.emitJumpIfTrue(clauseVal, labelVector[labelVector.size() - 1].get());
    14261426    }
    14271427
     
    14301430        generator.emitBinaryOp(op_stricteq, clauseVal, clauseVal, switchExpression);
    14311431        labelVector.append(generator.newLabel());
    1432         generator.emitJumpIfTrueMayCombine(clauseVal, labelVector[labelVector.size() - 1].get());
     1432        generator.emitJumpIfTrue(clauseVal, labelVector[labelVector.size() - 1].get());
    14331433    }
    14341434
Note: See TracChangeset for help on using the changeset viewer.