# Copyright (c) 2021-2022 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # This file describes copmiler-to-runtime entrypoints. # Fields: # * properties: # - no_return: entrypoint doesn't jump back to the caller. # - external: don't generate entrypoint and bridge declarations, initialize table's element by nullptr. # - irtoc: entrypoint is generated by irtoc tool # - intrinsic: this is call of intrinsic wrapped in entrypoint bridge # * signature: signature of the entrypoint, the first element is the return value, the rest are arguments. # * entrypoint: entrypoint function name. entrypoints: - name: Deoptimize entrypoint: DeoptimizeEntrypoint bridge: entrypoint properties: [no_return] signature: - void - uint8_t - name: AbstractMethodError entrypoint: AbstractMethodErrorEntrypoint bridge: entrypoint properties: [no_return] signature: - void - panda::Method* - name: AnnotateSanitizers entrypoint: AnnotateSanitizersEntrypoint bridge: entrypoint properties: [] signature: - void - void const* - size_t - name: AnnotateSanitizersNoBridge entrypoint: AnnotateSanitizersEntrypoint bridge: none properties: [] signature: - void - void const* - size_t - name: CheckCast entrypoint: CheckCastEntrypoint bridge: entrypoint properties: [] signature: - void - const panda::ObjectHeader* - panda::Class * - name: CheckCastInterface entrypoint: CheckCastInterfaceEntrypoint bridge: none properties: [irtoc] signature: - void - const panda::ObjectHeader* - panda::Class * - name: CheckStoreArrayReference entrypoint: CheckStoreArrayReferenceEntrypoint bridge: entrypoint properties: [] signature: - void - panda::coretypes::Array* - panda::ObjectHeader* - name: ArithmeticException entrypoint: ArithmeticExceptionEntrypoint bridge: entrypoint properties: [no_return] signature: - void - name: ArrayIndexOutOfBoundsException entrypoint: ArrayIndexOutOfBoundsExceptionEntrypoint bridge: entrypoint properties: [no_return] signature: - void - ssize_t - size_t - name: StringIndexOutOfBoundsException entrypoint: StringIndexOutOfBoundsExceptionEntrypoint bridge: entrypoint properties: [no_return] signature: - void - ssize_t - size_t - name: ClassCastException entrypoint: ClassCastExceptionEntrypoint bridge: entrypoint properties: [no_return] signature: - void - panda::Class* - panda::ObjectHeader* - name: NegativeArraySizeException entrypoint: NegativeArraySizeExceptionEntrypoint bridge: entrypoint properties: [no_return] signature: - void - ssize_t - name: NullPointerException entrypoint: NullPointerExceptionEntrypoint bridge: entrypoint properties: [no_return] signature: - void - name: StackOverflowException entrypoint: StackOverflowExceptionEntrypoint bridge: entrypoint properties: [no_return] signature: - void - name: ThrowException entrypoint: ThrowExceptionEntrypoint bridge: entrypoint properties: [no_return] signature: - void - panda::ObjectHeader* - name: CreateMultiArray entrypoint: CreateMultiArrayEntrypoint bridge: entrypoint properties: [] signature: - panda::coretypes::Array* - panda::Class* - uint32_t - size_t* - name: ResolveLiteralArray entrypoint: ResolveLiteralArrayEntrypoint bridge: entrypoint properties: [] signature: - panda::coretypes::Array* - const panda::Method* - panda::FileEntityId - name: CreateObjectByClass entrypoint: CreateObjectByClassEntrypoint bridge: entrypoint properties: [] signature: - panda::ObjectHeader* - panda::Class* - name: CloneObject entrypoint: CloneObjectEntrypoint bridge: entrypoint properties: [] signature: - panda::ObjectHeader* - panda::ObjectHeader* - name: PostBarrierWrite entrypoint: PostBarrierWriteEntrypoint bridge: entrypoint properties: [] signature: - panda::ObjectHeader* - panda::ObjectHeader* - size_t - name: Safepoint entrypoint: SafepointEntrypoint bridge: entrypoint properties: [] signature: - void - name: GetCalleeMethod entrypoint: GetCalleeMethodEntrypoint bridge: entrypoint properties: [] signature: - panda::Method* - const panda::Method* - size_t - name: GetCalleeMethodDirect entrypoint: GetCalleeMethodEntrypoint bridge: none properties: [] signature: - panda::Method* - const panda::Method* - size_t - name: GetUnknownCalleeMethod entrypoint: GetUnknownCalleeMethodEntrypoint bridge: entrypoint properties: [] signature: - panda::Method* - const panda::Method* - size_t - size_t* - name: GetFieldOffset entrypoint: GetFieldOffsetEntrypoint bridge: entrypoint properties: [] signature: - size_t - panda::Method* - uint32_t - name: GetStaticFieldAddress entrypoint: GetStaticFieldAddressEntrypoint bridge: entrypoint properties: [] signature: - uintptr_t - panda::Method* - uint32_t - name: GetUnknownStaticFieldMemoryAddress entrypoint: GetUnknownStaticFieldMemoryAddressEntrypoint bridge: entrypoint properties: [] signature: - uintptr_t - panda::Method* - uint32_t - size_t* - name: GetUnknownStaticFieldPtr entrypoint: GetUnknownStaticFieldPtrEntrypoint bridge: entrypoint properties: [] signature: - uintptr_t - panda::Method* - uint32_t - size_t* - name: InitializeClass entrypoint: InitializeClassEntrypoint bridge: entrypoint properties: [] signature: - void - panda::Class* - name: InitializeClassById entrypoint: InitializeClassByIdEntrypoint bridge: entrypoint properties: [] signature: - panda::Class* - const panda::Method* - panda::FileEntityId - name: InitializeClassByIdDirect entrypoint: InitializeClassByIdEntrypoint bridge: none properties: [] signature: - panda::Class* - const panda::Method* - panda::FileEntityId - name: IsInstance entrypoint: IsInstanceEntrypoint bridge: entrypoint properties: [] signature: - uint8_t - panda::ObjectHeader* - panda::Class* - name: PostWrbUpdateCardFuncNoBridge entrypoint: PostWrbUpdateCardFuncEntrypoint bridge: none properties: [] signature: - void - const void* - const void* - name: PreWrbFuncNoBridge entrypoint: PreWrbFuncEntrypoint bridge: none properties: [] signature: - void - void* - name: ResolveClass entrypoint: ResolveClassEntrypoint bridge: entrypoint properties: [] signature: - void* - const panda::Method* - panda::FileEntityId - name: ResolveClassDirect entrypoint: ResolveClassEntrypoint bridge: none properties: [] signature: - void* - const panda::Method* - panda::FileEntityId - name: ResolveClassObject entrypoint: ResolveClassObjectEntrypoint bridge: entrypoint properties: [] signature: - void* - const panda::Method* - panda::FileEntityId - name: ResolveString entrypoint: ResolveStringEntrypoint bridge: entrypoint properties: [] signature: - panda::coretypes::String* - const panda::Method* - panda::FileEntityId - name: ResolveStringAot entrypoint: ResolveStringAotEntrypoint bridge: entrypoint properties: [] signature: - panda::coretypes::String* - const panda::Method* - panda::FileEntityId - panda::ObjectHeader** - name: ResolveUnknownVirtualCall entrypoint: ResolveUnknownVirtualCallEntrypoint bridge: entrypoint properties: [] signature: - uintptr_t - const panda::Method* - panda::ObjectHeader* - size_t - size_t* - name: ResolveVirtualCallAot entrypoint: ResolveVirtualCallAotEntrypoint bridge: entrypoint properties: [] signature: - uintptr_t - const panda::Method* - panda::ObjectHeader* - size_t - uintptr_t - name: ResolveVirtualCall entrypoint: ResolveVirtualCallEntrypoint bridge: entrypoint properties: [] signature: - uintptr_t - const panda::Method* - panda::ObjectHeader* - name: Trace entrypoint: TraceEntrypoint bridge: entrypoint properties: [] signature: - void - size_t pid - ... - name: WriteTlabStats entrypoint: WriteTlabStatsEntrypoint bridge: entrypoint properties: [] signature: - void - size_t - name: WriteTlabStatsNoBridge entrypoint: WriteTlabStatsEntrypoint bridge: none properties: [] signature: - void - size_t - name: LockObject entrypoint: LockObjectEntrypoint bridge: entrypoint properties: [] signature: - void - panda::ObjectHeader* - name: UnlockObject entrypoint: UnlockObjectEntrypoint bridge: entrypoint properties: [] signature: - void - panda::ObjectHeader* - name: IncompatibleClassChangeErrorForMethodConflict entrypoint: IncompatibleClassChangeErrorForMethodConflictEntrypoint bridge: none properties: [no_return] signature: - void - panda::Method* - name: AllocateObjectTlab entrypoint: AllocateObjectTlab bridge: none properties: [irtoc] signature: - void* - void* - size_t - name: CreateObjectByClassSlowPath entrypoint: CreateObjectByClassEntrypoint bridge: slow_path properties: [] signature: - panda::ObjectHeader* - panda::Class* - name: AllocateArrayTlab8 entrypoint: AllocateArrayTlab8 bridge: none properties: [irtoc] signature: - void* - void* - size_t - name: AllocateArrayTlab16 entrypoint: AllocateArrayTlab16 bridge: none properties: [irtoc] signature: - void* - void* - size_t - name: AllocateArrayTlab32 entrypoint: AllocateArrayTlab32 bridge: none properties: [irtoc] signature: - void* - void* - size_t - name: AllocateArrayTlab64 entrypoint: AllocateArrayTlab64 bridge: none properties: [irtoc] signature: - void* - void* - size_t - name: CreateArray entrypoint: CreateArraySlowPathEntrypoint bridge: entrypoint properties: [] signature: - panda::coretypes::Array* - panda::Class* - size_t - name: CreateArraySlowPath entrypoint: CreateArraySlowPathEntrypoint bridge: slow_path properties: [] signature: - panda::coretypes::Array* - panda::Class* - size_t - name: ClassResolver entrypoint: ClassResolver bridge: none properties: [irtoc] signature: - void* - name: ClassInitResolver entrypoint: ClassInitResolver bridge: none properties: [irtoc] signature: - void* - name: CallVirtualResolver entrypoint: CallVirtualResolver bridge: none properties: [irtoc] signature: - void* - name: IntfInlineCache entrypoint: IntfInlineCache bridge: none properties: [irtoc] signature: - panda::Method* - const panda::Method* - panda::ObjectHeader* - size_t - void* - name: MonitorEnterFastPath entrypoint: MonitorEnterFastPath bridge: none properties: [irtoc] signature: - void - void* - name: MonitorExitFastPath entrypoint: MonitorExitFastPath bridge: none properties: [irtoc] signature: - void - void* - name: MonitorEnterSlowPath entrypoint: LockObjectSlowPathEntrypoint bridge: slow_path properties: [] signature: - void - panda::ObjectHeader* - name: MonitorExitSlowPath entrypoint: UnlockObjectSlowPathEntrypoint bridge: slow_path properties: [] signature: - void - panda::ObjectHeader*