Ignore:
Timestamp:
Oct 26, 2009, 3:49:23 PM (16 years ago)
Author:
[email protected]
Message:

2009-10-26 Gabor Loki <[email protected]>

Reviewed by Gavin Barraclough.

The thunkReturnAddress is on JITStackFrame on ARM JIT as well
https://bugs.webkit.org/show_bug.cgi?id=30782

Move the thunkReturnAddress from top of the stack into the JITStackFrame
structure. This is a requirement for JSValue32_64 support on ARM.

  • assembler/MacroAssemblerARM.h: (JSC::MacroAssemblerARM::ret): Return with link register (JSC::MacroAssemblerARM::prepareCall): Store the return address in link register
  • jit/JIT.h: Remove unused ctiReturnRegister
  • jit/JITInlineMethods.h: Same as ARMv7 (JSC::JIT::restoreArgumentReference): Ditto. (JSC::JIT::restoreArgumentReferenceForTrampoline): Ditto.
  • jit/JITOpcodes.cpp: Remove ctiReturnRegister related instruction
  • jit/JITStubs.cpp: Store thunkReturnAddress on JITStackFrame. Use small trampoline functions which handle return addresses for each CTI_STUB_FUNCTION.
  • jit/JITStubs.h: Store thunkReturnAddress on JITStackFrame (JSC::JITStackFrame::returnAddressSlot): Return with the address of thunkReturnAddress
  • yarr/RegexJIT.cpp: (JSC::Yarr::RegexGenerator::generateEnter): Remove the unnecessary instruction
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/assembler/MacroAssemblerARM.h

    r48782 r50109  
    6666
    6767    static const RegisterID stackPointerRegister = ARMRegisters::sp;
     68    static const RegisterID linkRegister = ARMRegisters::lr;
    6869
    6970    static const Scale ScalePtr = TimesFour;
     
    531532    void ret()
    532533    {
    533         pop(ARMRegisters::pc);
     534        m_assembler.mov_r(ARMRegisters::pc, linkRegister);
    534535    }
    535536
     
    747748    void prepareCall()
    748749    {
    749         ensureSpace(3 * sizeof(ARMWord), sizeof(ARMWord));
    750 
    751         // S0 might be used for parameter passing
    752         m_assembler.add_r(ARMRegisters::S1, ARMRegisters::pc, ARMAssembler::OP2_IMM | 0x4);
    753         m_assembler.push_r(ARMRegisters::S1);
     750        ensureSpace(2 * sizeof(ARMWord), sizeof(ARMWord));
     751
     752        m_assembler.mov_r(linkRegister, ARMRegisters::pc);
    754753    }
    755754
Note: See TracChangeset for help on using the changeset viewer.