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