Changeset 35224 in webkit for trunk/JavaScriptCore/kjs/nodes.cpp


Ignore:
Timestamp:
Jul 17, 2008, 12:24:57 PM (17 years ago)
Author:
[email protected]
Message:

2008-07-17 Gavin Barraclough <[email protected]>

Reviewed by Sam Weinig.

Merge pre&post dot nodes to simplify the parse tree.
Sunspider results show 0.6% progression (no performance change expected).

  • kjs/grammar.y:
  • kjs/nodes.cpp:
  • kjs/nodes.h:
  • kjs/nodes2string.cpp:
File:
1 edited

Legend:

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

    r35222 r35224  
    528528// ------------------------------ PostfixDotNode ----------------------------------
    529529
    530 RegisterID* PostIncDotNode::emitCode(CodeGenerator& generator, RegisterID* dst)
     530RegisterID* PostfixDotNode::emitCode(CodeGenerator& generator, RegisterID* dst)
    531531{
    532532    RefPtr<RegisterID> base = generator.emitNode(m_base.get());
     
    535535    if (dst == ignoredResult()) {
    536536        oldValue = 0;
    537         generator.emitPreInc(value.get());
     537        if (m_operator == OpPlusPlus)
     538            generator.emitPreInc(value.get());
     539        else
     540            generator.emitPreDec(value.get());
    538541    } else {
    539         oldValue = generator.emitPostInc(generator.finalDestination(dst), value.get());
    540     }
    541     generator.emitPutById(base.get(), m_ident, value.get());
    542     return oldValue;
    543 }
    544 
    545 RegisterID* PostDecDotNode::emitCode(CodeGenerator& generator, RegisterID* dst)
    546 {
    547     RefPtr<RegisterID> base = generator.emitNode(m_base.get());
    548     RefPtr<RegisterID> value = generator.emitGetById(generator.newTemporary(), base.get(), m_ident);
    549     RegisterID* oldValue;
    550     if (dst == ignoredResult()) {
    551         oldValue = 0;
    552         generator.emitPreDec(value.get());
    553     } else {
    554         oldValue = generator.emitPostDec(generator.finalDestination(dst), value.get());
     542        oldValue = (m_operator == OpPlusPlus) ? generator.emitPostInc(generator.finalDestination(dst), value.get()) : generator.emitPostDec(generator.finalDestination(dst), value.get());
    555543    }
    556544    generator.emitPutById(base.get(), m_ident, value.get());
     
    694682// ------------------------------ PrefixDotNode ----------------------------------
    695683
    696 RegisterID* PreIncDotNode::emitCode(CodeGenerator& generator, RegisterID* dst)
     684RegisterID* PrefixDotNode::emitCode(CodeGenerator& generator, RegisterID* dst)
    697685{
    698686    RefPtr<RegisterID> base = generator.emitNode(m_base.get());
    699687    RefPtr<RegisterID> propDst = generator.tempDestination(dst);
    700688    RegisterID* value = generator.emitGetById(propDst.get(), base.get(), m_ident);
    701     generator.emitPreInc(value);
    702     generator.emitPutById(base.get(), m_ident, value);
    703     return generator.moveToDestinationIfNeeded(dst, propDst.get());
    704 }
    705 
    706 RegisterID* PreDecDotNode::emitCode(CodeGenerator& generator, RegisterID* dst)
    707 {
    708     RefPtr<RegisterID> base = generator.emitNode(m_base.get());
    709     RefPtr<RegisterID> propDst = generator.tempDestination(dst);
    710     RegisterID* value = generator.emitGetById(propDst.get(), base.get(), m_ident);
    711     generator.emitPreDec(value);
     689    if (m_operator == OpPlusPlus)
     690        generator.emitPreInc(value);
     691    else
     692        generator.emitPreDec(value);
    712693    generator.emitPutById(base.get(), m_ident, value);
    713694    return generator.moveToDestinationIfNeeded(dst, propDst.get());
Note: See TracChangeset for help on using the changeset viewer.