Ignore:
Timestamp:
Nov 13, 2009, 5:07:01 PM (16 years ago)
Author:
[email protected]
Message:

https://bugs.webkit.org/show_bug.cgi?id=31050

Patch by Zoltan Herczeg <[email protected]> on 2009-11-13
Reviewed by Gavin Barraclough.

Adding optimization support for mode JSVALUE32_64
on ARM systems.

  • jit/JIT.h:
  • jit/JITCall.cpp:

(JSC::JIT::compileOpCall):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_method_check):
(JSC::JIT::compileGetByIdHotPath):
(JSC::JIT::compileGetByIdSlowCase):
(JSC::JIT::emit_op_put_by_id):

File:
1 edited

Legend:

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

    r50254 r50982  
    213213    emitJumpSlowCaseIfNotJSCell(base, regT1);
    214214
     215    BEGIN_UNINTERRUPTED_SEQUENCE(sequenceMethodCheck);
     216
    215217    Jump structureCheck = branchPtrWithPatch(NotEqual, Address(regT0, OBJECT_OFFSETOF(JSCell, m_structure)), info.structureToCompare, ImmPtr(reinterpret_cast<void*>(patchGetByIdDefaultStructure)));
    216218    DataLabelPtr protoStructureToCompare, protoObj = moveWithPatch(ImmPtr(0), regT2);
     
    219221    // This will be relinked to load the function without doing a load.
    220222    DataLabelPtr putFunction = moveWithPatch(ImmPtr(0), regT0);
     223 
     224    END_UNINTERRUPTED_SEQUENCE(sequenceMethodCheck);
     225   
    221226    move(Imm32(JSValue::CellTag), regT1);
    222227    Jump match = jump();
     
    375380    // to array-length / prototype access tranpolines, and finally we also the the property-map access offset as a label
    376381    // to jump back to if one of these trampolies finds a match.
     382
     383    BEGIN_UNINTERRUPTED_SEQUENCE(sequenceGetByIdHotPath);
     384   
    377385    Label hotPathBegin(this);
    378386    m_propertyAccessCompilationInfo[m_propertyAccessInstructionIndex].hotPathBegin = hotPathBegin;
     
    397405    Label putResult(this);
    398406    ASSERT(differenceBetween(hotPathBegin, putResult) == patchOffsetGetByIdPutResult);
     407
     408    END_UNINTERRUPTED_SEQUENCE(sequenceGetByIdHotPath);
    399409}
    400410
     
    418428    linkSlowCase(iter);
    419429
     430    BEGIN_UNINTERRUPTED_SEQUENCE(sequenceGetByIdSlowCase);
     431
     432#ifndef NDEBUG
    420433    Label coldPathBegin(this);
    421 
     434#endif
    422435    JITStubCall stubCall(this, isMethodCheck ? cti_op_get_by_id_method_check : cti_op_get_by_id);
    423436    stubCall.addArgument(regT1, regT0);
     
    425438    Call call = stubCall.call(dst);
    426439
     440    END_UNINTERRUPTED_SEQUENCE(sequenceGetByIdSlowCase);
     441
    427442    ASSERT(differenceBetween(coldPathBegin, call) == patchOffsetGetByIdSlowCaseCall);
    428443
     
    444459
    445460    emitJumpSlowCaseIfNotJSCell(base, regT1);
     461
     462    BEGIN_UNINTERRUPTED_SEQUENCE(sequencePutById);
    446463
    447464    Label hotPathBegin(this);
     
    462479    DataLabel32 displacementLabel1 = storePtrWithAddressOffsetPatch(regT2, Address(regT0, patchGetByIdDefaultOffset)); // payload
    463480    DataLabel32 displacementLabel2 = storePtrWithAddressOffsetPatch(regT3, Address(regT0, patchGetByIdDefaultOffset)); // tag
     481
     482    END_UNINTERRUPTED_SEQUENCE(sequencePutById);
     483
    464484    ASSERT(differenceBetween(hotPathBegin, displacementLabel1) == patchOffsetPutByIdPropertyMapOffset1);
    465485    ASSERT(differenceBetween(hotPathBegin, displacementLabel2) == patchOffsetPutByIdPropertyMapOffset2);
Note: See TracChangeset for help on using the changeset viewer.