]> git.saurik.com Git - apple/javascriptcore.git/blob - jit/JITStubsMSVC64.asm
JavaScriptCore-1218.35.tar.gz
[apple/javascriptcore.git] / jit / JITStubsMSVC64.asm
1 ;/*
2 ; Copyright (C) 2013 Digia Plc. and/or its subsidiary(-ies)
3 ;
4 ; Redistribution and use in source and binary forms, with or without
5 ; modification, are permitted provided that the following conditions
6 ; are met:
7 ; 1. Redistributions of source code must retain the above copyright
8 ; notice, this list of conditions and the following disclaimer.
9 ; 2. Redistributions in binary form must reproduce the above copyright
10 ; notice, this list of conditions and the following disclaimer in the
11 ; documentation and/or other materials provided with the distribution.
12 ;
13 ; THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 ; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 ; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 ; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17 ; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 ; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 ; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 ; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 ; OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 ; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 ; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 ;*/
25
26 EXTERN cti_vm_throw : near
27 PUBLIC ctiTrampoline
28 PUBLIC ctiVMThrowTrampoline
29 PUBLIC ctiOpThrowNotCaught
30
31 _TEXT SEGMENT
32
33 ctiTrampoline PROC
34 ; Dump register parameters to their home address
35 mov qword ptr[rsp+20h], r9
36 mov qword ptr[rsp+18h], r8
37 mov qword ptr[rsp+10h], rdx
38 mov qword ptr[rsp+8h], rcx
39
40 push rbp
41 mov rbp, rsp
42 push r12
43 push r13
44 push r14
45 push r15
46 push rbx
47
48 ; Decrease rsp to point to the start of our JITStackFrame
49 sub rsp, 58h
50 mov r12, 512
51 mov r14, 0FFFF000000000000h
52 mov r15, 0FFFF000000000002h
53 mov r13, r8
54 call rcx
55 add rsp, 58h
56 pop rbx
57 pop r15
58 pop r14
59 pop r13
60 pop r12
61 pop rbp
62 ret
63 ctiTrampoline ENDP
64
65 ctiVMThrowTrampoline PROC
66 mov rcx, rsp
67 call cti_vm_throw
68 int 3
69 ctiVMThrowTrampoline ENDP
70
71 ctiOpThrowNotCaught PROC
72 add rsp, 58h
73 pop rbx
74 pop r15
75 pop r14
76 pop r13
77 pop r12
78 pop rbp
79 ret
80 ctiOpThrowNotCaught ENDP
81
82 _TEXT ENDS
83
84 END