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