Ignore:
Timestamp:
Jun 9, 2009, 12:46:31 AM (16 years ago)
Author:
[email protected]
Message:

2009-06-09 Gavin Barraclough <[email protected]>

Reviewed by Mark Rowe & Geoff Garen.

Enable JIT_OPTIMIZE_PROPERTY_ACCESS on ARMv7 platforms.

Firm up interface for planting load intructions that will be repatched by
repatchLoadPtrToLEA(). This method should now no longer be applied to just
any loadPtr instruction.

  • assembler/MacroAssemblerARMv7.h: (JSC::MacroAssemblerARMv7::loadPtrWithPatchToLEA):

Implement loadPtrWithPatchToLEA interface (plants a load with a fixed width address).

(JSC::MacroAssemblerARMv7::move):
(JSC::MacroAssemblerARMv7::nearCall):
(JSC::MacroAssemblerARMv7::call):
(JSC::MacroAssemblerARMv7::moveWithPatch):
(JSC::MacroAssemblerARMv7::tailRecursiveCall):

Switch to use common method 'moveFixedWidthEncoding()' to perform fixed width (often patchable) loads.

(JSC::MacroAssemblerARMv7::moveFixedWidthEncoding):

Move an immediate to a register, always plants movT3/movt instruction pair.

  • assembler/MacroAssemblerX86.h: (JSC::MacroAssemblerX86::loadPtrWithPatchToLEA):

Implement loadPtrWithPatchToLEA interface (just a regular 32-bit load on x86).

  • assembler/MacroAssemblerX86_64.h: (JSC::MacroAssemblerX86_64::loadPtrWithPatchToLEA):

Implement loadPtrWithPatchToLEA interface (just a regular 64-bit load on x86_64).

  • jit/JITPropertyAccess.cpp: (JSC::JIT::compileGetByIdHotPath): (JSC::JIT::emit_op_put_by_id):
  • wtf/Platform.h:

Change to enable JIT_OPTIMIZE_PROPERTY_ACCESS.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/jit/JITPropertyAccess.cpp

    r44476 r44525  
    291291    ASSERT(differenceBetween(hotPathBegin, structureCheck) == patchOffsetGetByIdBranchToSlowCase);
    292292
    293     Label externalLoad(this);
    294     loadPtr(Address(regT0, FIELD_OFFSET(JSObject, m_externalStorage)), regT0);
     293    Label externalLoad = loadPtrWithPatchToLEA(Address(regT0, FIELD_OFFSET(JSObject, m_externalStorage)), regT0);
    295294    Label externalLoadComplete(this);
    296295    ASSERT(differenceBetween(hotPathBegin, externalLoad) == patchOffsetGetByIdExternalLoad);
     
    363362
    364363    // Plant a load from a bogus ofset in the object's property map; we will patch this later, if it is to be used.
    365     Label externalLoad(this);
    366     loadPtr(Address(regT0, FIELD_OFFSET(JSObject, m_externalStorage)), regT0);
     364    Label externalLoad = loadPtrWithPatchToLEA(Address(regT0, FIELD_OFFSET(JSObject, m_externalStorage)), regT0);
    367365    Label externalLoadComplete(this);
    368366    ASSERT(differenceBetween(hotPathBegin, externalLoad) == patchOffsetPutByIdExternalLoad);
Note: See TracChangeset for help on using the changeset viewer.