1*b5da552cSAndrew Rist /************************************************************** 2*b5da552cSAndrew Rist * 3*b5da552cSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*b5da552cSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*b5da552cSAndrew Rist * distributed with this work for additional information 6*b5da552cSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*b5da552cSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*b5da552cSAndrew Rist * "License"); you may not use this file except in compliance 9*b5da552cSAndrew Rist * with the License. You may obtain a copy of the License at 10*b5da552cSAndrew Rist * 11*b5da552cSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*b5da552cSAndrew Rist * 13*b5da552cSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*b5da552cSAndrew Rist * software distributed under the License is distributed on an 15*b5da552cSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b5da552cSAndrew Rist * KIND, either express or implied. See the License for the 17*b5da552cSAndrew Rist * specific language governing permissions and limitations 18*b5da552cSAndrew Rist * under the License. 19*b5da552cSAndrew Rist * 20*b5da552cSAndrew Rist *************************************************************/ 21*b5da552cSAndrew Rist 22cdf0e10cSrcweir .text 23cdf0e10cSrcweir 24cdf0e10cSrcweir .globl _privateSnippetExecutorGeneral 25cdf0e10cSrcweir _privateSnippetExecutorGeneral: 26cdf0e10cSrcweir .LFBg: 27cdf0e10cSrcweir movl %esp,%ecx 28cdf0e10cSrcweir pushl %ebp # proper stack frame needed for exception handling 29cdf0e10cSrcweir .LCFIg0: 30cdf0e10cSrcweir movl %esp,%ebp 31cdf0e10cSrcweir .LCFIg1: 32cdf0e10cSrcweir subl $0x4,%esp # 32bit returnValue 33cdf0e10cSrcweir pushl %esp # 32bit &returnValue 34cdf0e10cSrcweir pushl %ecx # 32bit pCallStack 35cdf0e10cSrcweir pushl %edx # 32bit nVtableOffset 36cdf0e10cSrcweir pushl %eax # 32bit nFunctionIndex 37cdf0e10cSrcweir call _cpp_vtable_call 38cdf0e10cSrcweir movl 16(%esp),%eax # 32bit returnValue 39cdf0e10cSrcweir leave 40cdf0e10cSrcweir ret 41cdf0e10cSrcweir .LFEg: 42cdf0e10cSrcweir .long .-_privateSnippetExecutorGeneral 43cdf0e10cSrcweir 44cdf0e10cSrcweir .globl _privateSnippetExecutorVoid 45cdf0e10cSrcweir _privateSnippetExecutorVoid: 46cdf0e10cSrcweir .LFBv: 47cdf0e10cSrcweir movl %esp,%ecx 48cdf0e10cSrcweir pushl %ebp # proper stack frame needed for exception handling 49cdf0e10cSrcweir .LCFIv0: 50cdf0e10cSrcweir movl %esp,%ebp 51cdf0e10cSrcweir .LCFIv1: 52cdf0e10cSrcweir pushl $0 # 32bit null pointer (returnValue not used) 53cdf0e10cSrcweir pushl %ecx # 32bit pCallStack 54cdf0e10cSrcweir pushl %edx # 32bit nVtableOffset 55cdf0e10cSrcweir pushl %eax # 32bit nFunctionIndex 56cdf0e10cSrcweir call _cpp_vtable_call 57cdf0e10cSrcweir leave 58cdf0e10cSrcweir ret 59cdf0e10cSrcweir .LFEv: 60cdf0e10cSrcweir .long .-_privateSnippetExecutorVoid 61cdf0e10cSrcweir 62cdf0e10cSrcweir .globl _privateSnippetExecutorHyper 63cdf0e10cSrcweir _privateSnippetExecutorHyper: 64cdf0e10cSrcweir .LFBh: 65cdf0e10cSrcweir movl %esp,%ecx 66cdf0e10cSrcweir pushl %ebp # proper stack frame needed for exception handling 67cdf0e10cSrcweir .LCFIh0: 68cdf0e10cSrcweir movl %esp,%ebp 69cdf0e10cSrcweir .LCFIh1: 70cdf0e10cSrcweir subl $0x8,%esp # 64bit returnValue 71cdf0e10cSrcweir pushl %esp # 32bit &returnValue 72cdf0e10cSrcweir pushl %ecx # 32bit pCallStack 73cdf0e10cSrcweir pushl %edx # 32bit nVtableOffset 74cdf0e10cSrcweir pushl %eax # 32bit nFunctionIndex 75cdf0e10cSrcweir call _cpp_vtable_call 76cdf0e10cSrcweir movl 16(%esp),%eax # 64bit returnValue, lower half 77cdf0e10cSrcweir movl 20(%esp),%edx # 64bit returnValue, upper half 78cdf0e10cSrcweir leave 79cdf0e10cSrcweir ret 80cdf0e10cSrcweir .LFEh: 81cdf0e10cSrcweir .long .-_privateSnippetExecutorHyper 82cdf0e10cSrcweir 83cdf0e10cSrcweir .globl _privateSnippetExecutorFloat 84cdf0e10cSrcweir _privateSnippetExecutorFloat: 85cdf0e10cSrcweir .LFBf: 86cdf0e10cSrcweir movl %esp,%ecx 87cdf0e10cSrcweir pushl %ebp # proper stack frame needed for exception handling 88cdf0e10cSrcweir .LCFIf0: 89cdf0e10cSrcweir movl %esp,%ebp 90cdf0e10cSrcweir .LCFIf1: 91cdf0e10cSrcweir subl $0x4,%esp # 32bit returnValue 92cdf0e10cSrcweir pushl %esp # 32bit &returnValue 93cdf0e10cSrcweir pushl %ecx # 32bit pCallStack 94cdf0e10cSrcweir pushl %edx # 32bit nVtableOffset 95cdf0e10cSrcweir pushl %eax # 32bit nFunctionIndex 96cdf0e10cSrcweir call _cpp_vtable_call 97cdf0e10cSrcweir flds 16(%esp) # 32bit returnValue 98cdf0e10cSrcweir leave 99cdf0e10cSrcweir ret 100cdf0e10cSrcweir .LFEf: 101cdf0e10cSrcweir .long .-_privateSnippetExecutorFloat 102cdf0e10cSrcweir 103cdf0e10cSrcweir .globl _privateSnippetExecutorDouble 104cdf0e10cSrcweir _privateSnippetExecutorDouble: 105cdf0e10cSrcweir .LFBd: 106cdf0e10cSrcweir movl %esp,%ecx 107cdf0e10cSrcweir pushl %ebp # proper stack frame needed for exception handling 108cdf0e10cSrcweir .LCFId0: 109cdf0e10cSrcweir movl %esp,%ebp 110cdf0e10cSrcweir .LCFId1: 111cdf0e10cSrcweir subl $0x8,%esp # 64bit returnValue 112cdf0e10cSrcweir pushl %esp # 32bit &returnValue 113cdf0e10cSrcweir pushl %ecx # 32bit pCallStack 114cdf0e10cSrcweir pushl %edx # 32bit nVtableOffset 115cdf0e10cSrcweir pushl %eax # 32bit nFunctionIndex 116cdf0e10cSrcweir call _cpp_vtable_call 117cdf0e10cSrcweir fldl 16(%esp) # 64bit returnValue 118cdf0e10cSrcweir leave 119cdf0e10cSrcweir ret 120cdf0e10cSrcweir .LFEd: 121cdf0e10cSrcweir .long .-_privateSnippetExecutorDouble 122cdf0e10cSrcweir 123cdf0e10cSrcweir .globl _privateSnippetExecutorClass 124cdf0e10cSrcweir _privateSnippetExecutorClass: 125cdf0e10cSrcweir .LFBc: 126cdf0e10cSrcweir movl %esp,%ecx 127cdf0e10cSrcweir pushl %ebp # proper stack frame needed for exception handling 128cdf0e10cSrcweir .LCFIc0: 129cdf0e10cSrcweir movl %esp,%ebp 130cdf0e10cSrcweir .LCFIc1: 131cdf0e10cSrcweir subl $0x4,%esp # 32bit returnValue 132cdf0e10cSrcweir pushl %esp # 32bit &returnValue 133cdf0e10cSrcweir pushl %ecx # 32bit pCallStack 134cdf0e10cSrcweir pushl %edx # 32bit nVtableOffset 135cdf0e10cSrcweir pushl %eax # 32bit nFunctionIndex 136cdf0e10cSrcweir call _cpp_vtable_call 137cdf0e10cSrcweir movl 16(%esp),%eax # 32bit returnValue 138cdf0e10cSrcweir leave 139cdf0e10cSrcweir ret $4 140cdf0e10cSrcweir .LFEc: 141cdf0e10cSrcweir .long .-_privateSnippetExecutorClass 142cdf0e10cSrcweir 143cdf0e10cSrcweir .section .eh_frame,"dr" 144cdf0e10cSrcweir .Lframe1: 145cdf0e10cSrcweir .long .LECIE1-.LSCIE1 # length 146cdf0e10cSrcweir .LSCIE1: 147cdf0e10cSrcweir .long 0 # CIE_ID 148cdf0e10cSrcweir .byte 1 # version 149cdf0e10cSrcweir .string "zR" # augmentation 150cdf0e10cSrcweir .uleb128 1 # code_alignment_factor 151cdf0e10cSrcweir .sleb128 -4 # data_alignment_factor 152cdf0e10cSrcweir .byte 8 # return_address_register 153cdf0e10cSrcweir .uleb128 1 # augmentation size 1: 154cdf0e10cSrcweir .byte 0x1B # FDE Encoding (pcrel sdata4) 155cdf0e10cSrcweir # initial_instructions: 156cdf0e10cSrcweir .byte 0x0C # DW_CFA_def_cfa %esp, 4 157cdf0e10cSrcweir .uleb128 4 158cdf0e10cSrcweir .uleb128 4 159cdf0e10cSrcweir .byte 0x88 # DW_CFA_offset ret, 1 160cdf0e10cSrcweir .uleb128 1 161cdf0e10cSrcweir .align 4 162cdf0e10cSrcweir .LECIE1: 163cdf0e10cSrcweir .LSFDEg: 164cdf0e10cSrcweir .long .LEFDEg-.LASFDEg # length 165cdf0e10cSrcweir .LASFDEg: 166cdf0e10cSrcweir .long .LASFDEg-.Lframe1 # CIE_pointer 167cdf0e10cSrcweir .long .LFBg-. # initial_location 168cdf0e10cSrcweir .long .LFEg-.LFBg # address_range 169cdf0e10cSrcweir .uleb128 0 # augmentation size 0 170cdf0e10cSrcweir # instructions: 171cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 172cdf0e10cSrcweir .long .LCFIg0-.LFBg 173cdf0e10cSrcweir .byte 0x0E # DW_CFA_def_cfa_offset 8 174cdf0e10cSrcweir .uleb128 8 175cdf0e10cSrcweir .byte 0x85 # DW_CFA_offset %ebp, 2 176cdf0e10cSrcweir .uleb128 2 177cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 178cdf0e10cSrcweir .long .LCFIg1-.LCFIg0 179cdf0e10cSrcweir .byte 0x0D # DW_CFA_def_cfa_register %ebp 180cdf0e10cSrcweir .uleb128 5 181cdf0e10cSrcweir .align 4 182cdf0e10cSrcweir .LEFDEg: 183cdf0e10cSrcweir .LSFDEv: 184cdf0e10cSrcweir .long .LEFDEv-.LASFDEv # length 185cdf0e10cSrcweir .LASFDEv: 186cdf0e10cSrcweir .long .LASFDEv-.Lframe1 # CIE_pointer 187cdf0e10cSrcweir .long .LFBv-. # initial_location 188cdf0e10cSrcweir .long .LFEv-.LFBv # address_range 189cdf0e10cSrcweir .uleb128 0 # augmentation size 0 190cdf0e10cSrcweir # instructions: 191cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 192cdf0e10cSrcweir .long .LCFIv0-.LFBv 193cdf0e10cSrcweir .byte 0x0E # DW_CFA_def_cfa_offset 8 194cdf0e10cSrcweir .uleb128 8 195cdf0e10cSrcweir .byte 0x85 # DW_CFA_offset %ebp, 2 196cdf0e10cSrcweir .uleb128 2 197cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 198cdf0e10cSrcweir .long .LCFIv1-.LCFIv0 199cdf0e10cSrcweir .byte 0x0D # DW_CFA_def_cfa_register %ebp 200cdf0e10cSrcweir .uleb128 5 201cdf0e10cSrcweir .align 4 202cdf0e10cSrcweir .LEFDEv: 203cdf0e10cSrcweir .LSFDEh: 204cdf0e10cSrcweir .long .LEFDEh-.LASFDEh # length 205cdf0e10cSrcweir .LASFDEh: 206cdf0e10cSrcweir .long .LASFDEh-.Lframe1 # CIE_pointer 207cdf0e10cSrcweir .long .LFBh-. # initial_location 208cdf0e10cSrcweir .long .LFEh-.LFBh # address_range 209cdf0e10cSrcweir .uleb128 0 # augmentation size 0 210cdf0e10cSrcweir # instructions: 211cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 212cdf0e10cSrcweir .long .LCFIh0-.LFBh 213cdf0e10cSrcweir .byte 0x0E # DW_CFA_def_cfa_offset 8 214cdf0e10cSrcweir .uleb128 8 215cdf0e10cSrcweir .byte 0x85 # DW_CFA_offset %ebp, 2 216cdf0e10cSrcweir .uleb128 2 217cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 218cdf0e10cSrcweir .long .LCFIh1-.LCFIh0 219cdf0e10cSrcweir .byte 0x0D # DW_CFA_def_cfa_register %ebp 220cdf0e10cSrcweir .uleb128 5 221cdf0e10cSrcweir .align 4 222cdf0e10cSrcweir .LEFDEh: 223cdf0e10cSrcweir .LSFDEf: 224cdf0e10cSrcweir .long .LEFDEf-.LASFDEf # length 225cdf0e10cSrcweir .LASFDEf: 226cdf0e10cSrcweir .long .LASFDEf-.Lframe1 # CIE_pointer 227cdf0e10cSrcweir .long .LFBf-. # initial_location 228cdf0e10cSrcweir .long .LFEf-.LFBf # address_range 229cdf0e10cSrcweir .uleb128 0 # augmentation size 0 230cdf0e10cSrcweir # instructions: 231cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 232cdf0e10cSrcweir .long .LCFIf0-.LFBf 233cdf0e10cSrcweir .byte 0x0E # DW_CFA_def_cfa_offset 8 234cdf0e10cSrcweir .uleb128 8 235cdf0e10cSrcweir .byte 0x85 # DW_CFA_offset %ebp, 2 236cdf0e10cSrcweir .uleb128 2 237cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 238cdf0e10cSrcweir .long .LCFIf1-.LCFIf0 239cdf0e10cSrcweir .byte 0x0D # DW_CFA_def_cfa_register %ebp 240cdf0e10cSrcweir .uleb128 5 241cdf0e10cSrcweir .align 4 242cdf0e10cSrcweir .LEFDEf: 243cdf0e10cSrcweir .LSFDEd: 244cdf0e10cSrcweir .long .LEFDEd-.LASFDEd # length 245cdf0e10cSrcweir .LASFDEd: 246cdf0e10cSrcweir .long .LASFDEd-.Lframe1 # CIE_pointer 247cdf0e10cSrcweir .long .LFBd-. # initial_location 248cdf0e10cSrcweir .long .LFEd-.LFBd # address_range 249cdf0e10cSrcweir .uleb128 0 # augmentation size 0 250cdf0e10cSrcweir # instructions: 251cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 252cdf0e10cSrcweir .long .LCFId0-.LFBd 253cdf0e10cSrcweir .byte 0x0E # DW_CFA_def_cfa_offset 8 254cdf0e10cSrcweir .uleb128 8 255cdf0e10cSrcweir .byte 0x85 # DW_CFA_offset %ebp, 2 256cdf0e10cSrcweir .uleb128 2 257cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 258cdf0e10cSrcweir .long .LCFId1-.LCFId0 259cdf0e10cSrcweir .byte 0x0D # DW_CFA_def_cfa_register %ebp 260cdf0e10cSrcweir .uleb128 5 261cdf0e10cSrcweir .align 4 262cdf0e10cSrcweir .LEFDEd: 263cdf0e10cSrcweir .LSFDEc: 264cdf0e10cSrcweir .long .LEFDEc-.LASFDEc # length 265cdf0e10cSrcweir .LASFDEc: 266cdf0e10cSrcweir .long .LASFDEc-.Lframe1 # CIE_pointer 267cdf0e10cSrcweir .long .LFBc-. # initial_location 268cdf0e10cSrcweir .long .LFEc-.LFBc # address_range 269cdf0e10cSrcweir .uleb128 0 # augmentation size 0 270cdf0e10cSrcweir # instructions: 271cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 272cdf0e10cSrcweir .long .LCFIc0-.LFBc 273cdf0e10cSrcweir .byte 0x0E # DW_CFA_def_cfa_offset 8 274cdf0e10cSrcweir .uleb128 8 275cdf0e10cSrcweir .byte 0x85 # DW_CFA_offset %ebp, 2 276cdf0e10cSrcweir .uleb128 2 277cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 278cdf0e10cSrcweir .long .LCFIc1-.LCFIc0 279cdf0e10cSrcweir .byte 0x0D # DW_CFA_def_cfa_register %ebp 280cdf0e10cSrcweir .uleb128 5 281cdf0e10cSrcweir .align 4 282cdf0e10cSrcweir .LEFDEc: 283