Ignore:
Timestamp:
Apr 24, 2012, 5:06:04 PM (13 years ago)
Author:
[email protected]
Message:

Add explicit patchableBranchPtrWithPatch/patchableJump methods
https://bugs.webkit.org/show_bug.cgi?id=84498

Reviewed by Filip Pizlo.

Don't rely on inUninterruptedSequence to distinguish which jumps we need to be able to repatch.

  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::PatchableJump::PatchableJump):
(PatchableJump):
(JSC::AbstractMacroAssembler::PatchableJump::operator Jump&):
(AbstractMacroAssembler):
(JSC::AbstractMacroAssembler::AbstractMacroAssembler):

  • Added PatchableJump type, removed inUninterruptedSequence.
  • assembler/LinkBuffer.h:

(LinkBuffer):
(JSC::LinkBuffer::locationOf):

  • Only allow the location to be taken of patchable branches
  • assembler/MacroAssembler.h:

(MacroAssembler):
(JSC::MacroAssembler::patchableBranchPtrWithPatch):
(JSC::MacroAssembler::patchableJump):
(JSC::MacroAssembler::shouldBlind):

  • Added default implementation of patchableBranchPtrWithPatch, patchableJump.
  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::MacroAssemblerARMv7):
(MacroAssemblerARMv7):
(JSC::MacroAssemblerARMv7::patchableBranchPtrWithPatch):
(JSC::MacroAssemblerARMv7::patchableJump):
(JSC::MacroAssemblerARMv7::jump):
(JSC::MacroAssemblerARMv7::makeBranch):

  • Added ARMv7 implementation of patchableBranchPtrWithPatch, patchableJump.
  • dfg/DFGCorrectableJumpPoint.h:

(DFG):
(JSC::DFG::CorrectableJumpPoint::switchToLateJump):

  • Late jumps are PatchableJumps.
  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::linkOSRExits):

  • replace use of inUninterruptedSequence
  • dfg/DFGJITCompiler.h:

(JSC::DFG::PropertyAccessRecord::PropertyAccessRecord):
(PropertyAccessRecord):

  • replace use of inUninterruptedSequence
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedPutById):

  • replace use of inUninterruptedSequence
  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedPutById):

  • replace use of inUninterruptedSequence
  • jit/JIT.h:

(PropertyStubCompilationInfo):

  • replace use of inUninterruptedSequence
  • jit/JITInlineMethods.h:

(JSC::JIT::beginUninterruptedSequence):
(JSC::JIT::endUninterruptedSequence):

  • replace use of inUninterruptedSequence
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::compileGetByIdHotPath):

  • replace use of inUninterruptedSequence
  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::compileGetByIdHotPath):

  • replace use of inUninterruptedSequence
File:
1 edited

Legend:

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

    r114183 r115141  
    370370
    371371    DataLabelPtr structureToCompare;
    372     Jump structureCheck = branchPtrWithPatch(NotEqual, Address(regT0, JSCell::structureOffset()), structureToCompare, TrustedImmPtr(reinterpret_cast<void*>(patchGetByIdDefaultStructure)));
     372    PatchableJump structureCheck = patchableBranchPtrWithPatch(NotEqual, Address(regT0, JSCell::structureOffset()), structureToCompare, TrustedImmPtr(reinterpret_cast<void*>(patchGetByIdDefaultStructure)));
    373373    addSlowCase(structureCheck);
    374374
Note: See TracChangeset for help on using the changeset viewer.