• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021-2022 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6# http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13#
14# This file describes copmiler-to-runtime entrypoints.
15# Fields:
16#  * properties:
17#    - no_return: entrypoint doesn't jump back to the caller.
18#    - external: don't generate entrypoint and bridge declarations, initialize table's element by nullptr.
19#    - irtoc: entrypoint is generated by irtoc tool
20#    - intrinsic: this is call of intrinsic wrapped in entrypoint bridge
21#  * signature: signature of the entrypoint, the first element is the return value, the rest are arguments.
22#  * entrypoint: entrypoint function name.
23
24entrypoints:
25- name: Deoptimize
26  entrypoint: DeoptimizeEntrypoint
27  bridge: entrypoint
28  properties: [no_return]
29  signature:
30  - void
31  - uint8_t
32
33- name: AbstractMethodError
34  entrypoint: AbstractMethodErrorEntrypoint
35  bridge: entrypoint
36  properties: [no_return]
37  signature:
38  - void
39  - panda::Method*
40
41- name: AnnotateSanitizers
42  entrypoint: AnnotateSanitizersEntrypoint
43  bridge: entrypoint
44  properties: []
45  signature:
46  - void
47  - void const*
48  - size_t
49
50- name: AnnotateSanitizersNoBridge
51  entrypoint: AnnotateSanitizersEntrypoint
52  bridge: none
53  properties: []
54  signature:
55  - void
56  - void const*
57  - size_t
58
59- name: CheckCast
60  entrypoint: CheckCastEntrypoint
61  bridge: entrypoint
62  properties: []
63  signature:
64  - void
65  - const panda::ObjectHeader*
66  - panda::Class *
67
68- name: CheckCastInterface
69  entrypoint: CheckCastInterfaceEntrypoint
70  bridge: none
71  properties: [irtoc]
72  signature:
73  - void
74  - const panda::ObjectHeader*
75  - panda::Class *
76
77- name: CheckStoreArrayReference
78  entrypoint: CheckStoreArrayReferenceEntrypoint
79  bridge: entrypoint
80  properties: []
81  signature:
82  - void
83  - panda::coretypes::Array*
84  - panda::ObjectHeader*
85
86- name: ArithmeticException
87  entrypoint: ArithmeticExceptionEntrypoint
88  bridge: entrypoint
89  properties: [no_return]
90  signature:
91  - void
92
93- name: ArrayIndexOutOfBoundsException
94  entrypoint: ArrayIndexOutOfBoundsExceptionEntrypoint
95  bridge: entrypoint
96  properties: [no_return]
97  signature:
98  - void
99  - ssize_t
100  - size_t
101
102- name: StringIndexOutOfBoundsException
103  entrypoint: StringIndexOutOfBoundsExceptionEntrypoint
104  bridge: entrypoint
105  properties: [no_return]
106  signature:
107  - void
108  - ssize_t
109  - size_t
110
111- name: ClassCastException
112  entrypoint: ClassCastExceptionEntrypoint
113  bridge: entrypoint
114  properties: [no_return]
115  signature:
116  - void
117  - panda::Class*
118  - panda::ObjectHeader*
119
120- name: NegativeArraySizeException
121  entrypoint: NegativeArraySizeExceptionEntrypoint
122  bridge: entrypoint
123  properties: [no_return]
124  signature:
125  - void
126  - ssize_t
127
128- name: NullPointerException
129  entrypoint: NullPointerExceptionEntrypoint
130  bridge: entrypoint
131  properties: [no_return]
132  signature:
133  - void
134
135- name: StackOverflowException
136  entrypoint: StackOverflowExceptionEntrypoint
137  bridge: entrypoint
138  properties: [no_return]
139  signature:
140  - void
141
142- name: ThrowException
143  entrypoint: ThrowExceptionEntrypoint
144  bridge: entrypoint
145  properties: [no_return]
146  signature:
147  - void
148  - panda::ObjectHeader*
149
150- name: CreateMultiArray
151  entrypoint: CreateMultiArrayEntrypoint
152  bridge: entrypoint
153  properties: []
154  signature:
155  - panda::coretypes::Array*
156  - panda::Class*
157  - uint32_t
158  - size_t*
159
160- name: ResolveLiteralArray
161  entrypoint: ResolveLiteralArrayEntrypoint
162  bridge: entrypoint
163  properties: []
164  signature:
165  - panda::coretypes::Array*
166  - const panda::Method*
167  - panda::FileEntityId
168
169- name: CreateObjectByClass
170  entrypoint: CreateObjectByClassEntrypoint
171  bridge: entrypoint
172  properties: []
173  signature:
174  - panda::ObjectHeader*
175  - panda::Class*
176
177- name: CloneObject
178  entrypoint: CloneObjectEntrypoint
179  bridge: entrypoint
180  properties: []
181  signature:
182  - panda::ObjectHeader*
183  - panda::ObjectHeader*
184
185- name: PostBarrierWrite
186  entrypoint: PostBarrierWriteEntrypoint
187  bridge: entrypoint
188  properties: []
189  signature:
190  - panda::ObjectHeader*
191  - panda::ObjectHeader*
192  - size_t
193
194- name: Safepoint
195  entrypoint: SafepointEntrypoint
196  bridge: entrypoint
197  properties: []
198  signature:
199  - void
200
201- name: GetCalleeMethod
202  entrypoint: GetCalleeMethodEntrypoint
203  bridge: entrypoint
204  properties: []
205  signature:
206  - panda::Method*
207  - const panda::Method*
208  - size_t
209
210- name: GetCalleeMethodDirect
211  entrypoint: GetCalleeMethodEntrypoint
212  bridge: none
213  properties: []
214  signature:
215  - panda::Method*
216  - const panda::Method*
217  - size_t
218
219- name: GetUnknownCalleeMethod
220  entrypoint: GetUnknownCalleeMethodEntrypoint
221  bridge: entrypoint
222  properties: []
223  signature:
224  - panda::Method*
225  - const panda::Method*
226  - size_t
227  - size_t*
228
229- name: GetFieldOffset
230  entrypoint: GetFieldOffsetEntrypoint
231  bridge: entrypoint
232  properties: []
233  signature:
234  - size_t
235  - panda::Method*
236  - uint32_t
237
238- name: GetStaticFieldAddress
239  entrypoint: GetStaticFieldAddressEntrypoint
240  bridge: entrypoint
241  properties: []
242  signature:
243  - uintptr_t
244  - panda::Method*
245  - uint32_t
246
247- name: GetUnknownStaticFieldMemoryAddress
248  entrypoint: GetUnknownStaticFieldMemoryAddressEntrypoint
249  bridge: entrypoint
250  properties: []
251  signature:
252  - uintptr_t
253  - panda::Method*
254  - uint32_t
255  - size_t*
256
257- name: GetUnknownStaticFieldPtr
258  entrypoint: GetUnknownStaticFieldPtrEntrypoint
259  bridge: entrypoint
260  properties: []
261  signature:
262  - uintptr_t
263  - panda::Method*
264  - uint32_t
265  - size_t*
266
267- name: InitializeClass
268  entrypoint: InitializeClassEntrypoint
269  bridge: entrypoint
270  properties: []
271  signature:
272  - void
273  - panda::Class*
274
275- name: InitializeClassById
276  entrypoint: InitializeClassByIdEntrypoint
277  bridge: entrypoint
278  properties: []
279  signature:
280  - panda::Class*
281  - const panda::Method*
282  - panda::FileEntityId
283
284- name: InitializeClassByIdDirect
285  entrypoint: InitializeClassByIdEntrypoint
286  bridge: none
287  properties: []
288  signature:
289  - panda::Class*
290  - const panda::Method*
291  - panda::FileEntityId
292
293- name: IsInstance
294  entrypoint: IsInstanceEntrypoint
295  bridge: entrypoint
296  properties: []
297  signature:
298  - uint8_t
299  - panda::ObjectHeader*
300  - panda::Class*
301
302- name: PostWrbUpdateCardFuncNoBridge
303  entrypoint: PostWrbUpdateCardFuncEntrypoint
304  bridge: none
305  properties: []
306  signature:
307  - void
308  - const void*
309  - const void*
310
311- name: PreWrbFuncNoBridge
312  entrypoint: PreWrbFuncEntrypoint
313  bridge: none
314  properties: []
315  signature:
316  - void
317  - void*
318
319- name: ResolveClass
320  entrypoint: ResolveClassEntrypoint
321  bridge: entrypoint
322  properties: []
323  signature:
324  - void*
325  - const panda::Method*
326  - panda::FileEntityId
327
328- name: ResolveClassDirect
329  entrypoint: ResolveClassEntrypoint
330  bridge: none
331  properties: []
332  signature:
333  - void*
334  - const panda::Method*
335  - panda::FileEntityId
336
337- name: ResolveClassObject
338  entrypoint: ResolveClassObjectEntrypoint
339  bridge: entrypoint
340  properties: []
341  signature:
342  - void*
343  - const panda::Method*
344  - panda::FileEntityId
345
346- name: ResolveString
347  entrypoint: ResolveStringEntrypoint
348  bridge: entrypoint
349  properties: []
350  signature:
351  - panda::coretypes::String*
352  - const panda::Method*
353  - panda::FileEntityId
354
355- name: ResolveStringAot
356  entrypoint: ResolveStringAotEntrypoint
357  bridge: entrypoint
358  properties: []
359  signature:
360  - panda::coretypes::String*
361  - const panda::Method*
362  - panda::FileEntityId
363  - panda::ObjectHeader**
364
365- name: ResolveUnknownVirtualCall
366  entrypoint: ResolveUnknownVirtualCallEntrypoint
367  bridge: entrypoint
368  properties: []
369  signature:
370  - uintptr_t
371  - const panda::Method*
372  - panda::ObjectHeader*
373  - size_t
374  - size_t*
375
376- name: ResolveVirtualCallAot
377  entrypoint: ResolveVirtualCallAotEntrypoint
378  bridge: entrypoint
379  properties: []
380  signature:
381  - uintptr_t
382  - const panda::Method*
383  - panda::ObjectHeader*
384  - size_t
385  - uintptr_t
386
387- name: ResolveVirtualCall
388  entrypoint: ResolveVirtualCallEntrypoint
389  bridge: entrypoint
390  properties: []
391  signature:
392  - uintptr_t
393  - const panda::Method*
394  - panda::ObjectHeader*
395
396- name: Trace
397  entrypoint: TraceEntrypoint
398  bridge: entrypoint
399  properties: []
400  signature:
401  - void
402  - size_t pid
403  - ...
404
405- name: WriteTlabStats
406  entrypoint: WriteTlabStatsEntrypoint
407  bridge: entrypoint
408  properties: []
409  signature:
410  - void
411  - size_t
412
413- name: WriteTlabStatsNoBridge
414  entrypoint: WriteTlabStatsEntrypoint
415  bridge: none
416  properties: []
417  signature:
418  - void
419  - size_t
420
421- name: LockObject
422  entrypoint: LockObjectEntrypoint
423  bridge: entrypoint
424  properties: []
425  signature:
426  - void
427  - panda::ObjectHeader*
428
429- name: UnlockObject
430  entrypoint: UnlockObjectEntrypoint
431  bridge: entrypoint
432  properties: []
433  signature:
434  - void
435  - panda::ObjectHeader*
436
437- name: IncompatibleClassChangeErrorForMethodConflict
438  entrypoint: IncompatibleClassChangeErrorForMethodConflictEntrypoint
439  bridge: none
440  properties: [no_return]
441  signature:
442  - void
443  - panda::Method*
444
445- name: AllocateObjectTlab
446  entrypoint: AllocateObjectTlab
447  bridge: none
448  properties: [irtoc]
449  signature:
450  - void*
451  - void*
452  - size_t
453
454- name: CreateObjectByClassSlowPath
455  entrypoint: CreateObjectByClassEntrypoint
456  bridge: slow_path
457  properties: []
458  signature:
459  - panda::ObjectHeader*
460  - panda::Class*
461
462- name: AllocateArrayTlab8
463  entrypoint: AllocateArrayTlab8
464  bridge: none
465  properties: [irtoc]
466  signature:
467    - void*
468    - void*
469    - size_t
470
471- name: AllocateArrayTlab16
472  entrypoint: AllocateArrayTlab16
473  bridge: none
474  properties: [irtoc]
475  signature:
476    - void*
477    - void*
478    - size_t
479
480- name: AllocateArrayTlab32
481  entrypoint: AllocateArrayTlab32
482  bridge: none
483  properties: [irtoc]
484  signature:
485    - void*
486    - void*
487    - size_t
488
489- name: AllocateArrayTlab64
490  entrypoint: AllocateArrayTlab64
491  bridge: none
492  properties: [irtoc]
493  signature:
494    - void*
495    - void*
496    - size_t
497
498- name: CreateArray
499  entrypoint: CreateArraySlowPathEntrypoint
500  bridge: entrypoint
501  properties: []
502  signature:
503    - panda::coretypes::Array*
504    - panda::Class*
505    - size_t
506
507- name: CreateArraySlowPath
508  entrypoint: CreateArraySlowPathEntrypoint
509  bridge: slow_path
510  properties: []
511  signature:
512    - panda::coretypes::Array*
513    - panda::Class*
514    - size_t
515
516- name: ClassResolver
517  entrypoint: ClassResolver
518  bridge: none
519  properties: [irtoc]
520  signature:
521    - void*
522
523- name: ClassInitResolver
524  entrypoint: ClassInitResolver
525  bridge: none
526  properties: [irtoc]
527  signature:
528    - void*
529
530- name: CallVirtualResolver
531  entrypoint: CallVirtualResolver
532  bridge: none
533  properties: [irtoc]
534  signature:
535    - void*
536
537- name: IntfInlineCache
538  entrypoint: IntfInlineCache
539  bridge: none
540  properties: [irtoc]
541  signature:
542    - panda::Method*
543    - const panda::Method*
544    - panda::ObjectHeader*
545    - size_t
546    - void*
547
548- name: MonitorEnterFastPath
549  entrypoint: MonitorEnterFastPath
550  bridge: none
551  properties: [irtoc]
552  signature:
553    - void
554    - void*
555
556- name: MonitorExitFastPath
557  entrypoint: MonitorExitFastPath
558  bridge: none
559  properties: [irtoc]
560  signature:
561    - void
562    - void*
563
564- name: MonitorEnterSlowPath
565  entrypoint: LockObjectSlowPathEntrypoint
566  bridge: slow_path
567  properties: []
568  signature:
569    - void
570    - panda::ObjectHeader*
571
572- name: MonitorExitSlowPath
573  entrypoint: UnlockObjectSlowPathEntrypoint
574  bridge: slow_path
575  properties: []
576  signature:
577    - void
578    - panda::ObjectHeader*
579