diff options
Diffstat (limited to 'Source/JavaScriptCore/jit/JITStubsMSVC64.asm')
-rw-r--r-- | Source/JavaScriptCore/jit/JITStubsMSVC64.asm | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/jit/JITStubsMSVC64.asm b/Source/JavaScriptCore/jit/JITStubsMSVC64.asm new file mode 100644 index 000000000..4a00e0d14 --- /dev/null +++ b/Source/JavaScriptCore/jit/JITStubsMSVC64.asm @@ -0,0 +1,84 @@ +;/* +; Copyright (C) 2013 Digia Plc. and/or its subsidiary(-ies) +; +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions +; are met: +; 1. Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +; 2. Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the distribution. +; +; THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY +; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR +; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +; OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +;*/ + +EXTERN cti_vm_throw : near +PUBLIC ctiTrampoline +PUBLIC ctiVMThrowTrampoline +PUBLIC ctiOpThrowNotCaught + +_TEXT SEGMENT + +ctiTrampoline PROC + ; Dump register parameters to their home address + mov qword ptr[rsp+20h], r9 + mov qword ptr[rsp+18h], r8 + mov qword ptr[rsp+10h], rdx + mov qword ptr[rsp+8h], rcx + + push rbp + mov rbp, rsp + push r12 + push r13 + push r14 + push r15 + push rbx + + ; Decrease rsp to point to the start of our JITStackFrame + sub rsp, 58h + mov r12, 512 + mov r14, 0FFFF000000000000h + mov r15, 0FFFF000000000002h + mov r13, r8 + call rcx + add rsp, 58h + pop rbx + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + ret +ctiTrampoline ENDP + +ctiVMThrowTrampoline PROC + mov rcx, rsp + call cti_vm_throw + int 3 +ctiVMThrowTrampoline ENDP + +ctiOpThrowNotCaught PROC + add rsp, 58h + pop rbx + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + ret +ctiOpThrowNotCaught ENDP + +_TEXT ENDS + +END
\ No newline at end of file |