1# Copyright (c) 2021 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# * signature: signature of the entrypoint, the first element is the return value, the rest are arguments. 20# * entrypoint: explicitly defined Entrypoint name. 21 22entrypoints: 23- name: Deoptimize 24 properties: [no_return] 25 signature: 26 - void 27 - uint8_t 28 29- name: AbstractMethodError 30 properties: [no_return] 31 signature: 32 - void 33 - panda::Method* 34 35- name: AnnotateSanitizers 36 properties: [] 37 signature: 38 - void 39 - void const* 40 - size_t 41 42- name: CheckCast 43 properties: [] 44 signature: 45 - void 46 - const panda::Method* 47 - const panda::ObjectHeader* 48 - panda::FileEntityId 49 50- name: CheckStoreArrayReference 51 properties: [] 52 signature: 53 - void 54 - panda::coretypes::Array* 55 - panda::ObjectHeader* 56 57- name: ArithmeticException 58 properties: [no_return] 59 signature: 60 - void 61 62- name: ArrayIndexOutOfBoundsException 63 properties: [no_return] 64 signature: 65 - void 66 - ssize_t 67 - size_t 68 69- name: StringIndexOutOfBoundsException 70 properties: [no_return] 71 signature: 72 - void 73 - ssize_t 74 - size_t 75 76- name: ClassCastException 77 properties: [no_return] 78 signature: 79 - void 80 - panda::Class* 81 - panda::ObjectHeader* 82 83- name: NegativeArraySizeException 84 properties: [no_return] 85 signature: 86 - void 87 - ssize_t 88 89- name: NullPointerException 90 properties: [no_return] 91 signature: 92 - void 93 94- name: ThrowException 95 properties: [no_return] 96 signature: 97 - void 98 - panda::ObjectHeader* 99 100- name: ThrowNativeException 101 properties: [no_return] 102 signature: 103 - void 104 105- name: CreateArray 106 properties: [] 107 signature: 108 - panda::coretypes::Array* 109 - const panda::Method* 110 - panda::FileEntityId 111 - size_t 112 113- name: CreateMultiArray 114 properties: [] 115 signature: 116 - panda::coretypes::Array* 117 - panda::Class* 118 - uint32_t 119 - size_t* 120 121- name: CreateObjectByClass 122 properties: [] 123 signature: 124 - panda::ObjectHeader* 125 - panda::Class* 126 127- name: Safepoint 128 properties: [] 129 signature: 130 - void 131 132- name: GetCalleeMethod 133 properties: [] 134 signature: 135 - panda::Method* 136 - const panda::Method* 137 - size_t 138 139- name: GetCalleeMethodDirect 140 properties: [] 141 entrypoint: GetCalleeMethodEntrypoint 142 signature: 143 - panda::Method* 144 - const panda::Method* 145 - size_t 146 147- name: GetUnknownCalleeMethod 148 properties: [] 149 signature: 150 - panda::Method* 151 - const panda::Method* 152 - size_t 153 - size_t* 154 155- name: GetFieldOffset 156 properties: [] 157 signature: 158 - size_t 159 - panda::Method* 160 - uint32_t 161 162- name: GetStaticFieldAddress 163 properties: [] 164 signature: 165 - uintptr_t 166 - panda::Method* 167 - uint32_t 168 169- name: GetUnknownStaticFieldMemoryAddress 170 properties: [] 171 signature: 172 - uintptr_t 173 - panda::Method* 174 - uint32_t 175 - size_t* 176 177- name: GetUnknownStaticFieldPtr 178 properties: [] 179 signature: 180 - uintptr_t 181 - panda::Method* 182 - uint32_t 183 - size_t* 184 185- name: InitializeClass 186 properties: [] 187 signature: 188 - void 189 - panda::Class* 190 191- name: InitializeClassById 192 properties: [] 193 signature: 194 - panda::Class* 195 - const panda::Method* 196 - panda::FileEntityId 197 198- name: InitializeClassByIdDirect 199 properties: [] 200 entrypoint: InitializeClassByIdEntrypoint 201 signature: 202 - panda::Class* 203 - const panda::Method* 204 - panda::FileEntityId 205 206- name: IsInstance 207 properties: [] 208 signature: 209 - uint8_t 210 - const panda::Method* 211 - panda::ObjectHeader* 212 - panda::FileEntityId 213 214- name: PostWrbUpdateCardFunc 215 properties: [external] 216 signature: 217 - void 218 219- name: PreWrbFunc 220 properties: [external] 221 signature: 222 - void 223 - void* 224 225- name: ResolveClass 226 properties: [] 227 signature: 228 - void* 229 - const panda::Method* 230 - panda::FileEntityId 231 232- name: ResolveClassDirect 233 properties: [] 234 entrypoint: ResolveClassEntrypoint 235 signature: 236 - void* 237 - const panda::Method* 238 - panda::FileEntityId 239 240- name: ResolveClassObject 241 properties: [] 242 signature: 243 - void* 244 - const panda::Method* 245 - panda::FileEntityId 246 247- name: ResolveString 248 properties: [] 249 signature: 250 - panda::coretypes::String* 251 - const panda::Method* 252 - panda::FileEntityId 253 254- name: ResolveStringAot 255 properties: [] 256 signature: 257 - panda::coretypes::String* 258 - const panda::Method* 259 - panda::FileEntityId 260 - panda::ObjectHeader** 261 262- name: ResolveUnknownVirtualCall 263 properties: [] 264 signature: 265 - uintptr_t 266 - const panda::Method* 267 - panda::ObjectHeader* 268 - size_t 269 - size_t* 270 271- name: ResolveVirtualCallAot 272 properties: [] 273 signature: 274 - uintptr_t 275 - const panda::Method* 276 - panda::ObjectHeader* 277 - size_t 278 279- name: ResolveVirtualCall 280 properties: [] 281 signature: 282 - uintptr_t 283 - const panda::Method* 284 - panda::ObjectHeader* 285 286- name: Trace 287 properties: [] 288 signature: 289 - void 290 - size_t pid 291 - ... 292 293- name: WriteTlabStats 294 properties: [] 295 signature: 296 - void 297 - size_t 298 299- name: LockObject 300 properties: [] 301 signature: 302 - void 303 - panda::ObjectHeader* 304 305- name: UnlockObject 306 properties: [] 307 signature: 308 - void 309 - panda::ObjectHeader* 310