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