Ignore:
Timestamp:
Nov 13, 2013, 11:39:30 PM (12 years ago)
Author:
[email protected]
Message:

Change callToJavaScript thunk into an offline assembled stub
https://bugs.webkit.org/show_bug.cgi?id=124251

Reviewed by Geoffrey Garen.

Changed callToJavaScript and throwNotCaught into stubs generated by the offline assembler.
Added popCalleeSaves and pushCalleeSaves pseudo ops to the offline assembler to handle
the saving and restoring of callee save registers. Fixed callFrameRegister differences
between arm traditional (r11) and arm Thumb2 (r7) in GPRInfo.h. Also fixed implementation
of pop & push in arm.rb.

Since the offline assembler and therefore the LLInt don't work on Windows, the Windows stubs
are handled as inline assembly in JITStubsX86.h and JITStubsMSVC64.asm.

  • dfg/DFGDriver.cpp:

(JSC::DFG::compileImpl):

  • jit/GPRInfo.h:

(JSC::GPRInfo::toIndex):
(JSC::GPRInfo::debugName):

  • jit/JITCode.cpp:

(JSC::JITCode::execute):

  • jit/JITExceptions.cpp:

(JSC::genericUnwind):

  • jit/JITStubs.h:
  • jit/JITStubsMSVC64.asm:
  • jit/JITStubsX86.h:
  • jit/ThunkGenerators.cpp:
  • jit/ThunkGenerators.h:
  • llint/LLIntThunks.h:
  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • offlineasm/arm.rb:
  • offlineasm/arm64.rb:
  • offlineasm/instructions.rb:
  • offlineasm/mips.rb:
  • offlineasm/registers.rb:
  • offlineasm/sh4.rb:
  • offlineasm/x86.rb:
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/offlineasm/arm.rb

    r158883 r159276  
    9898            "r4"
    9999        when "t4"
    100             "r10"
     100            "r8"
     101        when "t5"
     102            "r9"
    101103        when "cfr"
    102104            isARMv7 ?  "r7" : "r11"
     
    452454            raise "ARM does not support this opcode yet, #{codeOrigin}"
    453455        when "pop"
    454             $asm.puts "pop #{operands[0].armOperand}"
     456            $asm.puts "pop { #{operands[0].armOperand} }"
    455457        when "push"
    456             $asm.puts "push #{operands[0].armOperand}"
     458            $asm.puts "push { #{operands[0].armOperand} }"
     459        when "popCalleeSaves"
     460            if isARMv7
     461                $asm.puts "pop {r4-r6, r8-r11}"               
     462            else
     463                $asm.puts "pop {r4-r10}"
     464            end
     465        when "pushCalleeSaves"
     466            if isARMv7
     467                $asm.puts "push {r4-r6, r8-r11}"
     468            else
     469                $asm.puts "push {r4-r10}"
     470            end
    457471        when "move"
    458472            if operands[0].immediate?
Note: See TracChangeset for help on using the changeset viewer.