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 26EXTERN cti_vm_throw : near 27PUBLIC ctiTrampoline 28PUBLIC ctiVMThrowTrampoline 29PUBLIC ctiOpThrowNotCaught 30 31_TEXT SEGMENT 32 33ctiTrampoline 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 63ctiTrampoline ENDP 64 65ctiVMThrowTrampoline PROC 66 mov rcx, rsp 67 call cti_vm_throw 68 int 3 69ctiVMThrowTrampoline ENDP 70 71ctiOpThrowNotCaught 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 80ctiOpThrowNotCaught ENDP 81 82_TEXT ENDS 83 84END