1 .global privateSnippetExecutor
2 .type privateSnippetExecutor,2
3 privateSnippetExecutor
:
4 ! save
%sp
, -96, %sp already done in code snippet
11 ! %o0
: functionIndex
, stored by code snippet
12 ! %o1
: vtableOffset
, stored by code snippet
15 .privateSnippetExecutorExceptionPosition:
32 .size privateSnippetExecutor,(.-privateSnippetExecutor)
36 .global callVirtualMethod
37 .type callVirtualMethod,2
39 ! allocate FIRST stack to have own local registers
47 ! copy stack longs if necessary
52 ! prepare source location
98 ! prepare complex return pointer
101 ! get virtual table entry
110 .callVirtualMethodExceptionPosition:
114 subcc
%i3
, 2, %l3
! typelib_TypeClass_BOOLEAN
116 subcc
%i3
, 3, %l3
! typelib_TypeClass_BYTE
120 subcc
%i3
, 4, %l3
! typelib_TypeClass_SHORT
122 subcc
%i3
, 5, %l3
! typelib_TypeClass_UNSIGNED_SHORT
124 subcc
%i3
, 1, %l3
! typelib_TypeClass_CHAR
(sal_Unicode
==sal_uInt16
)
128 subcc
%i3
, 6, %l3
! typelib_TypeClass_LONG
130 subcc
%i3
, 7, %l3
! typelib_TypeClass_UNSIGNED_LONG
132 subcc
%i3
, 15, %l3
! typelib_TypeClass_ENUM
136 subcc
%i3
, 8, %l3
! typelib_TypeClass_HYPER
138 subcc
%i3
, 9, %l3
! typelib_TypeClass_UNSIGNED_HYPER
142 subcc
%i3
, 10, %l3
! typelib_TypeClass_FLOAT
146 subcc
%i3
, 11, %l3
! typelib_TypeClass_DOUBLE
149 ! default
: return void
183 restore
! stack frame for own locals
184 .size callVirtualMethod,(.-callVirtualMethod)
188 call __1cG__CrunMex_rethrow_q6F_v_
191 .section ".exception_ranges",#alloc
192 .word %r_disp32(.privateSnippetExecutorExceptionPosition)
194 .word .rethrow_handler-.privateSnippetExecutorExceptionPosition
196 .word %r_disp32(.callVirtualMethodExceptionPosition)
198 .word .rethrow_handler-.callVirtualMethodExceptionPosition