Changeset 43849 in webkit for trunk/JavaScriptCore/jit


Ignore:
Timestamp:
May 18, 2009, 8:40:09 PM (16 years ago)
Author:
[email protected]
Message:

2009-05-18 Maciej Stachowiak <[email protected]>

Reviewed by Geoff Garen.

  • Improve code generation for access to prototype properties


~0.4% speedup on SunSpider.


Based on a suggestion from Geoff Garen.

  • jit/JIT.h:
  • jit/JITPropertyAccess.cpp: (JSC::JIT::compileGetDirectOffset): (JSC::JIT::privateCompileGetByIdProto): (JSC::JIT::privateCompileGetByIdProtoList): (JSC::JIT::privateCompileGetByIdChainList): (JSC::JIT::privateCompileGetByIdChain):
Location:
trunk/JavaScriptCore/jit
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/jit/JIT.h

    r43839 r43849  
    389389
    390390        void compileGetDirectOffset(RegisterID base, RegisterID result, Structure* structure, size_t cachedOffset);
    391         void compileGetDirectOffset(JSObject* base, RegisterID temp, RegisterID result, size_t cachedOffset);
     391        void compileGetDirectOffset(JSObject* base, RegisterID result, size_t cachedOffset);
    392392        void compilePutDirectOffset(RegisterID base, RegisterID value, Structure* structure, size_t cachedOffset);
    393393
  • trunk/JavaScriptCore/jit/JITPropertyAccess.cpp

    r43839 r43849  
    324324}
    325325
    326 void JIT::compileGetDirectOffset(JSObject* base, RegisterID temp, RegisterID result, size_t cachedOffset)
     326void JIT::compileGetDirectOffset(JSObject* base, RegisterID result, size_t cachedOffset)
    327327{
    328328    if (base->isUsingInlineStorage())
    329329        loadPtr(static_cast<void*>(&base->m_inlineStorage[cachedOffset]), result);
    330     else {
    331         PropertyStorage* protoPropertyStorage = &base->m_externalStorage;
    332         loadPtr(static_cast<void*>(protoPropertyStorage), temp);
    333         loadPtr(Address(temp, cachedOffset * sizeof(JSValue)), result);
    334     }
     330    else
     331        loadPtr(static_cast<void*>(&base->m_externalStorage[cachedOffset]), result);
    335332}
    336333
     
    529526
    530527    // Checks out okay! - getDirectOffset
    531     compileGetDirectOffset(protoObject, regT1, regT0, cachedOffset);
     528    compileGetDirectOffset(protoObject, regT0, cachedOffset);
    532529
    533530    Jump success = jump();
     
    602599
    603600    // Checks out okay! - getDirectOffset
    604     compileGetDirectOffset(protoObject, regT1, regT0, cachedOffset);
     601    compileGetDirectOffset(protoObject, regT0, cachedOffset);
    605602
    606603    Jump success = jump();
     
    656653    ASSERT(protoObject);
    657654
    658     compileGetDirectOffset(protoObject, regT1, regT0, cachedOffset);
     655    compileGetDirectOffset(protoObject, regT0, cachedOffset);
    659656    Jump success = jump();
    660657
     
    712709    ASSERT(protoObject);
    713710
    714     compileGetDirectOffset(protoObject, regT1, regT0, cachedOffset);
     711    compileGetDirectOffset(protoObject, regT0, cachedOffset);
    715712    Jump success = jump();
    716713
Note: See TracChangeset for help on using the changeset viewer.