Ignore:
Timestamp:
Jun 23, 2011, 3:47:04 PM (14 years ago)
Author:
[email protected]
Message:

2011-06-23 Oliver Hunt <[email protected]>

Reviewed by Gavin Barraclough.

Add the ability to dynamically modify linked call sites
https://bugs.webkit.org/show_bug.cgi?id=63291

Add JITWriteBarrier as a writebarrier class that allows
reading and writing directly into the code stream.

This required adding logic to all the assemblers to allow
us to read values back out of the instruction stream.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/ARMAssembler.h: (JSC::ARMAssembler::readPointer):
  • assembler/ARMv7Assembler.h: (JSC::ARMv7Assembler::readPointer): (JSC::ARMv7Assembler::readInt32): (JSC::ARMv7Assembler::decodeTwoWordOp5i6Imm4Reg4EncodedImmFirst): (JSC::ARMv7Assembler::decodeTwoWordOp5i6Imm4Reg4EncodedImmSecond):
  • assembler/AbstractMacroAssembler.h: (JSC::AbstractMacroAssembler::readPointer):
  • assembler/MIPSAssembler.h: (JSC::MIPSAssembler::readInt32): (JSC::MIPSAssembler::readPointer):
  • assembler/MacroAssemblerCodeRef.h: (JSC::MacroAssemblerCodePtr::operator!):
  • assembler/SH4Assembler.h: (JSC::SH4Assembler::readPCrelativeAddress): (JSC::SH4Assembler::readPointer): (JSC::SH4Assembler::readInt32):
  • assembler/X86Assembler.h: (JSC::X86Assembler::readPointer):
  • bytecode/CodeBlock.cpp: (JSC::CodeBlock::visitAggregate):
  • bytecode/CodeBlock.h: (JSC::MethodCallLinkInfo::seenOnce): (JSC::MethodCallLinkInfo::setSeen):
  • heap/MarkStack.h:
  • jit/JIT.cpp: (JSC::JIT::privateCompile): (JSC::JIT::linkCall): (JSC::JIT::linkConstruct):
  • jit/JITPropertyAccess.cpp: (JSC::JIT::patchMethodCallProto):
  • jit/JITPropertyAccess32_64.cpp:
  • jit/JITWriteBarrier.h: Added. (JSC::JITWriteBarrierBase::operator UnspecifiedBoolType*): (JSC::JITWriteBarrierBase::operator!): (JSC::JITWriteBarrierBase::setFlagOnBarrier): (JSC::JITWriteBarrierBase::isFlagged): (JSC::JITWriteBarrierBase::setLocation): (JSC::JITWriteBarrierBase::location): (JSC::JITWriteBarrierBase::JITWriteBarrierBase): (JSC::JITWriteBarrierBase::set): (JSC::JITWriteBarrierBase::get): (JSC::JITWriteBarrier::JITWriteBarrier): (JSC::JITWriteBarrier::set): (JSC::JITWriteBarrier::get): (JSC::MarkStack::append):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/assembler/X86Assembler.h

    r87527 r89630  
    15661566        setPointer(where, value);
    15671567    }
     1568   
     1569    static void* readPointer(void* where)
     1570    {
     1571        return reinterpret_cast<void**>(where)[-1];
     1572    }
    15681573
    15691574    static unsigned getCallReturnOffset(AssemblerLabel call)
Note: See TracChangeset for help on using the changeset viewer.