Changeset 43481 in webkit for trunk/JavaScriptCore


Ignore:
Timestamp:
May 10, 2009, 11:06:30 PM (16 years ago)
Author:
[email protected]
Message:

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

Reviewed by Geoff Garen.


Accound for the 64-bit instruction prefix when rewriting mov to lea on 64-bit.


  • jit/JIT.h:
  • jit/JITPropertyAccess.cpp: (JSC::JIT::patchGetByIdSelf): (JSC::JIT::patchPutByIdReplace):
Location:
trunk/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r43479 r43481  
     12009-05-10  Maciej Stachowiak  <[email protected]>
     2
     3        Reviewed by Geoff Garen.
     4       
     5        - fixed REGRESSION(r43432): Many JavaScriptCore tests crash in 64-bit
     6        https://bugs.webkit.org/show_bug.cgi?id=25680
     7
     8        Accound for the 64-bit instruction prefix when rewriting mov to lea on 64-bit.
     9       
     10        * jit/JIT.h:
     11        * jit/JITPropertyAccess.cpp:
     12        (JSC::JIT::patchGetByIdSelf):
     13        (JSC::JIT::patchPutByIdReplace):
     14
    1152009-05-10  Darin Adler  <[email protected]>
    216
  • trunk/JavaScriptCore/jit/JIT.h

    r43432 r43481  
    229229        static const int patchOffsetPutByIdExternalLoad = 20;
    230230        static const int patchLengthPutByIdExternalLoad = 4;
     231        static const int patchLengthPutByIdExternalLoadPrefix = 1;
    231232        static const int patchOffsetPutByIdPropertyMapOffset = 31;
    232233        // These architecture specific value are used to enable patching - see comment on op_get_by_id.
     
    235236        static const int patchOffsetGetByIdExternalLoad = 20;
    236237        static const int patchLengthGetByIdExternalLoad = 4;
     238        static const int patchLengthGetByIdExternalLoadPrefix = 1;
    237239        static const int patchOffsetGetByIdPropertyMapOffset = 31;
    238240        static const int patchOffsetGetByIdPutResult = 31;
     
    248250        static const int patchOffsetPutByIdExternalLoad = 13;
    249251        static const int patchLengthPutByIdExternalLoad = 3;
     252        static const int patchLengthPutByIdExternalLoadPrefix = 0;
    250253        static const int patchOffsetPutByIdPropertyMapOffset = 22;
    251254        // These architecture specific value are used to enable patching - see comment on op_get_by_id.
     
    254257        static const int patchOffsetGetByIdExternalLoad = 13;
    255258        static const int patchLengthGetByIdExternalLoad = 3;
     259        static const int patchLengthGetByIdExternalLoadPrefix = 0;
    256260        static const int patchOffsetGetByIdPropertyMapOffset = 22;
    257261        static const int patchOffsetGetByIdPutResult = 22;
  • trunk/JavaScriptCore/jit/JITPropertyAccess.cpp

    r43432 r43481  
    331331    // and makes the subsequent load's offset automatically correct
    332332    if (structure->isUsingInlineStorage())
    333         stubInfo->hotPathBegin.instructionAtOffset(patchOffsetGetByIdExternalLoad).patchLoadToLEA();
     333        stubInfo->hotPathBegin.instructionAtOffset(patchOffsetGetByIdExternalLoad + patchLengthGetByIdExternalLoadPrefix).patchLoadToLEA();
    334334
    335335    // Patch the offset into the propoerty map to load from, then patch the Structure to look for.
     
    349349    // and makes the subsequent load's offset automatically correct
    350350    if (structure->isUsingInlineStorage())
    351         stubInfo->hotPathBegin.instructionAtOffset(patchOffsetGetByIdExternalLoad).patchLoadToLEA();
     351        stubInfo->hotPathBegin.instructionAtOffset(patchOffsetPutByIdExternalLoad + patchLengthPutByIdExternalLoadPrefix).patchLoadToLEA();
    352352
    353353    // Patch the offset into the propoerty map to load from, then patch the Structure to look for.
Note: See TracChangeset for help on using the changeset viewer.