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     .type   privateSnippetExecutorGeneral,@function
26 privateSnippetExecutorGeneral:
27 .LFBg:
28     movl    %esp,%ecx
29     pushl   %ebp              # proper stack frame needed for exception handling
30 .LCFIg0:
31     movl    %esp,%ebp
32 .LCFIg1:
33     subl    $0x4,%esp         # 32bit returnValue
34     pushl   %esp              # 32bit &returnValue
35     pushl   %ecx              # 32bit pCallStack
36     pushl   %edx              # 32bit nVtableOffset
37     pushl   %eax              # 32bit nFunctionIndex
38     call    cpp_vtable_call
39     movl    16(%esp),%eax     # 32bit returnValue
40     leave
41     ret
42 .LFEg:
43     .size   privateSnippetExecutorGeneral,.-privateSnippetExecutorGeneral
44 
45 .globl privateSnippetExecutorVoid
46     .type   privateSnippetExecutorVoid,@function
47 privateSnippetExecutorVoid:
48 .LFBv:
49     movl    %esp,%ecx
50     pushl   %ebp              # proper stack frame needed for exception handling
51 .LCFIv0:
52     movl    %esp,%ebp
53 .LCFIv1:
54     pushl   $0                # 32bit null pointer (returnValue not used)
55     pushl   %ecx              # 32bit pCallStack
56     pushl   %edx              # 32bit nVtableOffset
57     pushl   %eax              # 32bit nFunctionIndex
58     call    cpp_vtable_call
59     leave
60     ret
61 .LFEv:
62     .size   privateSnippetExecutorVoid,.-privateSnippetExecutorVoid
63 
64 .globl privateSnippetExecutorHyper
65     .type   privateSnippetExecutorHyper,@function
66 privateSnippetExecutorHyper:
67 .LFBh:
68     movl    %esp,%ecx
69     pushl   %ebp              # proper stack frame needed for exception handling
70 .LCFIh0:
71     movl    %esp,%ebp
72 .LCFIh1:
73     subl    $0x8,%esp         # 64bit returnValue
74     pushl   %esp              # 32bit &returnValue
75     pushl   %ecx              # 32bit pCallStack
76     pushl   %edx              # 32bit nVtableOffset
77     pushl   %eax              # 32bit nFunctionIndex
78     call    cpp_vtable_call
79     movl    16(%esp),%eax     # 64bit returnValue, lower half
80     movl    20(%esp),%edx     # 64bit returnValue, upper half
81     leave
82     ret
83 .LFEh:
84     .size   privateSnippetExecutorHyper,.-privateSnippetExecutorHyper
85 
86 .globl privateSnippetExecutorFloat
87     .type   privateSnippetExecutorFloat,@function
88 privateSnippetExecutorFloat:
89 .LFBf:
90     movl    %esp,%ecx
91     pushl   %ebp              # proper stack frame needed for exception handling
92 .LCFIf0:
93     movl    %esp,%ebp
94 .LCFIf1:
95     subl    $0x4,%esp         # 32bit returnValue
96     pushl   %esp              # 32bit &returnValue
97     pushl   %ecx              # 32bit pCallStack
98     pushl   %edx              # 32bit nVtableOffset
99     pushl   %eax              # 32bit nFunctionIndex
100     call    cpp_vtable_call
101     flds    16(%esp)          # 32bit returnValue
102     leave
103     ret
104 .LFEf:
105     .size   privateSnippetExecutorFloat,.-privateSnippetExecutorFloat
106 
107 .globl privateSnippetExecutorDouble
108     .type   privateSnippetExecutorDouble,@function
109 privateSnippetExecutorDouble:
110 .LFBd:
111     movl    %esp,%ecx
112     pushl   %ebp              # proper stack frame needed for exception handling
113 .LCFId0:
114     movl    %esp,%ebp
115 .LCFId1:
116     subl    $0x8,%esp         # 64bit returnValue
117     pushl   %esp              # 32bit &returnValue
118     pushl   %ecx              # 32bit pCallStack
119     pushl   %edx              # 32bit nVtableOffset
120     pushl   %eax              # 32bit nFunctionIndex
121     call    cpp_vtable_call
122     fldl    16(%esp)          # 64bit returnValue
123     leave
124     ret
125 .LFEd:
126     .size   privateSnippetExecutorDouble,.-privateSnippetExecutorDouble
127 
128 .globl privateSnippetExecutorClass
129     .type   privateSnippetExecutorClass,@function
130 privateSnippetExecutorClass:
131 .LFBc:
132     movl    %esp,%ecx
133     pushl   %ebp              # proper stack frame needed for exception handling
134 .LCFIc0:
135     movl    %esp,%ebp
136 .LCFIc1:
137     subl    $0x4,%esp         # 32bit returnValue
138     pushl   %esp              # 32bit &returnValue
139     pushl   %ecx              # 32bit pCallStack
140     pushl   %edx              # 32bit nVtableOffset
141     pushl   %eax              # 32bit nFunctionIndex
142     call    cpp_vtable_call
143     movl    16(%esp),%eax     # 32bit returnValue
144     leave
145     ret     $4
146 .LFEc:
147     .size   privateSnippetExecutorClass,.-privateSnippetExecutorClass
148 
149     .section .eh_frame,"a",@progbits
150 .Lframe1:
151     .long   .LECIE1-.LSCIE1   # length
152 .LSCIE1:
153     .long   0                 # CIE_ID
154     .byte   1                 # version
155     .string "zR"              # augmentation
156     .uleb128 1                # code_alignment_factor
157     .sleb128 -4               # data_alignment_factor
158     .byte   8                 # return_address_register
159     .uleb128 1                # augmentation size 1:
160     .byte   0x1B              #  FDE Encoding (pcrel sdata4)
161                               # initial_instructions:
162     .byte   0x0C              #  DW_CFA_def_cfa %esp, 4
163     .uleb128 4
164     .uleb128 4
165     .byte   0x88              #  DW_CFA_offset ret, 1
166     .uleb128 1
167     .align 4
168 .LECIE1:
169 .LSFDEg:
170     .long   .LEFDEg-.LASFDEg  # length
171 .LASFDEg:
172     .long   .LASFDEg-.Lframe1 # CIE_pointer
173     .long   .LFBg-.           # initial_location
174     .long   .LFEg-.LFBg       # address_range
175     .uleb128 0                # augmentation size 0
176                               # instructions:
177     .byte   0x04              #  DW_CFA_advance_loc4
178     .long   .LCFIg0-.LFBg
179     .byte   0x0E              #  DW_CFA_def_cfa_offset 8
180     .uleb128 8
181     .byte   0x85              #  DW_CFA_offset %ebp, 2
182     .uleb128 2
183     .byte   0x04              #  DW_CFA_advance_loc4
184     .long   .LCFIg1-.LCFIg0
185     .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
186     .uleb128 5
187     .align 4
188 .LEFDEg:
189 .LSFDEv:
190     .long   .LEFDEv-.LASFDEv  # length
191 .LASFDEv:
192     .long   .LASFDEv-.Lframe1 # CIE_pointer
193     .long   .LFBv-.           # initial_location
194     .long   .LFEv-.LFBv       # address_range
195     .uleb128 0                # augmentation size 0
196                               # instructions:
197     .byte   0x04              #  DW_CFA_advance_loc4
198     .long   .LCFIv0-.LFBv
199     .byte   0x0E              #  DW_CFA_def_cfa_offset 8
200     .uleb128 8
201     .byte   0x85              #  DW_CFA_offset %ebp, 2
202     .uleb128 2
203     .byte   0x04              #  DW_CFA_advance_loc4
204     .long   .LCFIv1-.LCFIv0
205     .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
206     .uleb128 5
207     .align 4
208 .LEFDEv:
209 .LSFDEh:
210     .long   .LEFDEh-.LASFDEh  # length
211 .LASFDEh:
212     .long   .LASFDEh-.Lframe1 # CIE_pointer
213     .long   .LFBh-.           # initial_location
214     .long   .LFEh-.LFBh       # address_range
215     .uleb128 0                # augmentation size 0
216                               # instructions:
217     .byte   0x04              #  DW_CFA_advance_loc4
218     .long   .LCFIh0-.LFBh
219     .byte   0x0E              #  DW_CFA_def_cfa_offset 8
220     .uleb128 8
221     .byte   0x85              #  DW_CFA_offset %ebp, 2
222     .uleb128 2
223     .byte   0x04              #  DW_CFA_advance_loc4
224     .long   .LCFIh1-.LCFIh0
225     .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
226     .uleb128 5
227     .align 4
228 .LEFDEh:
229 .LSFDEf:
230     .long   .LEFDEf-.LASFDEf  # length
231 .LASFDEf:
232     .long   .LASFDEf-.Lframe1 # CIE_pointer
233     .long   .LFBf-.           # initial_location
234     .long   .LFEf-.LFBf       # address_range
235     .uleb128 0                # augmentation size 0
236                               # instructions:
237     .byte   0x04              #  DW_CFA_advance_loc4
238     .long   .LCFIf0-.LFBf
239     .byte   0x0E              #  DW_CFA_def_cfa_offset 8
240     .uleb128 8
241     .byte   0x85              #  DW_CFA_offset %ebp, 2
242     .uleb128 2
243     .byte   0x04              #  DW_CFA_advance_loc4
244     .long   .LCFIf1-.LCFIf0
245     .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
246     .uleb128 5
247     .align 4
248 .LEFDEf:
249 .LSFDEd:
250     .long   .LEFDEd-.LASFDEd  # length
251 .LASFDEd:
252     .long   .LASFDEd-.Lframe1 # CIE_pointer
253     .long   .LFBd-.           # initial_location
254     .long   .LFEd-.LFBd       # address_range
255     .uleb128 0                # augmentation size 0
256                               # instructions:
257     .byte   0x04              #  DW_CFA_advance_loc4
258     .long   .LCFId0-.LFBd
259     .byte   0x0E              #  DW_CFA_def_cfa_offset 8
260     .uleb128 8
261     .byte   0x85              #  DW_CFA_offset %ebp, 2
262     .uleb128 2
263     .byte   0x04              #  DW_CFA_advance_loc4
264     .long   .LCFId1-.LCFId0
265     .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
266     .uleb128 5
267     .align 4
268 .LEFDEd:
269 .LSFDEc:
270     .long   .LEFDEc-.LASFDEc  # length
271 .LASFDEc:
272     .long   .LASFDEc-.Lframe1 # CIE_pointer
273     .long   .LFBc-.           # initial_location
274     .long   .LFEc-.LFBc       # address_range
275     .uleb128 0                # augmentation size 0
276                               # instructions:
277     .byte   0x04              #  DW_CFA_advance_loc4
278     .long   .LCFIc0-.LFBc
279     .byte   0x0E              #  DW_CFA_def_cfa_offset 8
280     .uleb128 8
281     .byte   0x85              #  DW_CFA_offset %ebp, 2
282     .uleb128 2
283     .byte   0x04              #  DW_CFA_advance_loc4
284     .long   .LCFIc1-.LCFIc0
285     .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
286     .uleb128 5
287     .align 4
288 .LEFDEc:
289     .section .note.GNU-stack,"",@progbits
290