1# Copyright (c) 2023-2024 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 24- name: CreateLaunchStaticCoroutine 25 entrypoint: CreateLaunchStaticCoroutineEntrypoint 26 bridge: entrypoint 27 properties: [] 28 signature: 29 - void 30 - ark::Method* 31 - ark::ObjectHeader* 32 - uint64_t* 33 34- name: CreateLaunchVirtualCoroutine 35 entrypoint: CreateLaunchVirtualCoroutineEntrypoint 36 bridge: entrypoint 37 properties: [] 38 signature: 39 - void 40 - ark::Method* 41 - ark::ObjectHeader* 42 - uint64_t* 43 - ark::ObjectHeader* 44 45- name: ArrayCopyTo1bSlowPath 46 entrypoint: StdCoreByteCopyTo 47 bridge: slow_path 48 properties: [intrinsic] 49 signature: 50 - void 51 - void* 52 - void* 53 - int32_t 54 - int32_t 55 - int32_t 56 57- name: ArrayCopyTo2bSlowPath 58 entrypoint: StdCoreShortCopyTo 59 bridge: slow_path 60 properties: [intrinsic] 61 signature: 62 - void 63 - void* 64 - void* 65 - int32_t 66 - int32_t 67 - int32_t 68 69- name: ArrayCopyTo4bSlowPath 70 entrypoint: StdCoreIntCopyTo 71 bridge: slow_path 72 properties: [intrinsic] 73 signature: 74 - void 75 - void* 76 - void* 77 - int32_t 78 - int32_t 79 - int32_t 80 81- name: ArrayCopyTo8bSlowPath 82 entrypoint: StdCoreLongCopyTo 83 bridge: slow_path 84 properties: [intrinsic] 85 signature: 86 - void 87 - void* 88 - void* 89 - int32_t 90 - int32_t 91 - int32_t 92 93- name: ArrayCopyTo1bOddSaved 94 entrypoint: StdCoreByteCopyTo 95 bridge: odd_saved 96 properties: [intrinsic] 97 signature: 98 - void 99 - void* 100 - void* 101 - int32_t 102 - int32_t 103 - int32_t 104 105- name: ArrayCopyTo2bOddSaved 106 entrypoint: StdCoreShortCopyTo 107 bridge: odd_saved 108 properties: [intrinsic] 109 signature: 110 - void 111 - void* 112 - void* 113 - int32_t 114 - int32_t 115 - int32_t 116 117- name: ArrayCopyTo4bOddSaved 118 entrypoint: StdCoreIntCopyTo 119 bridge: odd_saved 120 properties: [intrinsic] 121 signature: 122 - void 123 - void* 124 - void* 125 - int32_t 126 - int32_t 127 - int32_t 128 129- name: ArrayCopyTo8bOddSaved 130 entrypoint: StdCoreLongCopyTo 131 bridge: odd_saved 132 properties: [intrinsic] 133 signature: 134 - void 135 - void* 136 - void* 137 - int32_t 138 - int32_t 139 - int32_t 140 141- name: StringBuilderAppendLong 142 entrypoint: StringBuilderAppendLong 143 bridge: none 144 properties: [irtoc] 145 signature: 146 - ark::ObjectHeader* # string builder (result) 147 - ark::ObjectHeader* # string builder 148 - int64_t # long value 149 - ark::Class* # array class pointer 150 151- name: StringBuilderAppendLongSlowPath 152 entrypoint: StringBuilderAppendLongEntrypoint 153 bridge: slow_path 154 properties: [] 155 signature: 156 - ark::ObjectHeader* # string builder (result) 157 - ark::ObjectHeader* # string builder 158 - int64_t # long value 159 160- name: StringBuilderAppendLong3Arg 161 entrypoint: StringBuilderAppendLongEntrypoint 162 bridge: odd_saved3 163 properties: [] 164 signature: 165 - ark::ObjectHeader* # string builder (result) 166 - ark::ObjectHeader* # string builder 167 - int64_t # long value 168 169- name: StringBuilderAppendChar 170 entrypoint: StringBuilderAppendChar 171 bridge: none 172 properties: [irtoc] 173 signature: 174 - ark::ObjectHeader* # string builder (result) 175 - ark::ObjectHeader* # string builder 176 - uint16_t # char 177 - ark::Class* # array class pointer 178 179- name: StringBuilderAppendCharCompressed 180 entrypoint: StringBuilderAppendCharCompressed 181 bridge: none 182 properties: [irtoc] 183 signature: 184 - ark::ObjectHeader* # string builder (result) 185 - ark::ObjectHeader* # string builder 186 - uint16_t # char 187 - ark::Class* # array class pointer 188 189- name: StringBuilderAppendCharSlowPath 190 entrypoint: StringBuilderAppendCharEntrypoint 191 bridge: slow_path 192 properties: [] 193 signature: 194 - ark::ObjectHeader* # string builder (result) 195 - ark::ObjectHeader* # string builder 196 - uint16_t # char 197 198- name: StringBuilderAppendChar3Arg 199 entrypoint: StringBuilderAppendCharEntrypoint 200 bridge: odd_saved3 201 properties: [] 202 signature: 203 - ark::ObjectHeader* # string builder (result) 204 - ark::ObjectHeader* # string builder 205 - uint16_t # char 206 207- name: StringBuilderAppendBool 208 entrypoint: StringBuilderAppendBool 209 bridge: none 210 properties: [irtoc] 211 signature: 212 - ark::ObjectHeader* # string builder (result) 213 - ark::ObjectHeader* # string builder 214 - uint8_t # boolean 215 - ark::Class* # array class pointer 216 217- name: StringBuilderAppendBoolSlowPath 218 entrypoint: StringBuilderAppendBoolEntrypoint 219 bridge: slow_path 220 properties: [] 221 signature: 222 - ark::ObjectHeader* # string builder (result) 223 - ark::ObjectHeader* # string builder 224 - uint8_t # boolean 225 226- name: StringBuilderAppendBool3Arg 227 entrypoint: StringBuilderAppendBoolEntrypoint 228 bridge: odd_saved3 229 properties: [] 230 signature: 231 - ark::ObjectHeader* # string builder (result) 232 - ark::ObjectHeader* # string builder 233 - uint8_t # boolean 234 235- name: StringBuilderAppendString 236 entrypoint: StringBuilderAppendStringEntrypoint 237 bridge: entrypoint 238 properties: [] 239 signature: 240 - ark::ObjectHeader* # string builder (result) 241 - ark::ObjectHeader* # string builder 242 - ark::ObjectHeader* # string 243 244- name: StringBuilderAppendNullString 245 entrypoint: StringBuilderAppendNullStringEntrypoint 246 bridge: entrypoint 247 properties: [] 248 signature: 249 - ark::ObjectHeader* # string builder (result) 250 - ark::ObjectHeader* # string builder 251 252- name: StringBuilderToString 253 entrypoint: StringBuilderToString 254 bridge: none 255 properties: [irtoc] 256 signature: 257 - ark::ObjectHeader* # string (result) 258 - ark::ObjectHeader* # string builder 259 - ark::Class* # string class pointer 260 261- name: StringBuilderToStringSlowPath 262 entrypoint: StringBuilderToStringEntrypoint 263 bridge: slow_path 264 properties: [] 265 signature: 266 - ark::ObjectHeader* # string (result) 267 - ark::ObjectHeader* # string builder 268 269- name: StringBuilderToString2Arg 270 entrypoint: StringBuilderToStringEntrypoint 271 bridge: odd_saved2 272 properties: [] 273 signature: 274 - ark::ObjectHeader* # string (result) 275 - ark::ObjectHeader* # string builder 276 277- name: DoubleToStringDecimal 278 entrypoint: DoubleToStringDecimal 279 bridge: none 280 properties: [irtoc] 281 signature: 282 - ark::ObjectHeader* # string (result) 283 - ark::ObjectHeader* # cache 284 - uint64_t # number 285 - uint64_t # unused 286 287- name: DoubleToStringDecimalSlowPath 288 entrypoint: DoubleToStringDecimalEntrypoint 289 bridge: slow_path 290 properties: [] 291 signature: 292 - ark::ObjectHeader* # string (result) 293 - ark::ObjectHeader* # cache 294 - uint64_t # number 295 296- name: DoubleToStringDecimal3Arg 297 entrypoint: DoubleToStringDecimalEntrypoint 298 bridge: odd_saved3 299 properties: [] 300 signature: 301 - ark::ObjectHeader* # string (result) 302 - ark::ObjectHeader* # cache 303 - uint64_t # number 304 305- name: DoubleToStringDecimalStoreSlowPath 306 entrypoint: DoubleToStringDecimalStoreEntrypoint 307 bridge: slow_path 308 properties: [] 309 signature: 310 - ark::ObjectHeader* # string (result) 311 - ark::ObjectHeader* # cache element 312 - uint64_t # number 313 - uint64_t # cache data 314 315- name: DoubleToStringDecimalStoreOddSaved 316 entrypoint: DoubleToStringDecimalStoreEntrypoint 317 bridge: odd_saved 318 properties: [] 319 signature: 320 - ark::ObjectHeader* # string (result) 321 - ark::ObjectHeader* # cache element 322 - uint64_t # number 323 - uint64_t # cache data 324 325- name: DoubleToStringDecimalNoCacheSlowPath 326 entrypoint: DoubleToStringDecimalNoCacheEntrypoint 327 bridge: slow_path 328 properties: [] 329 signature: 330 - ark::ObjectHeader* # string (result) 331 - uint64_t # number 332 333- name: DoubleToStringDecimalNoCache3Arg 334 entrypoint: DoubleToStringDecimalNoCacheEntrypoint 335 bridge: odd_saved3 336 properties: [] 337 signature: 338 - ark::ObjectHeader* # string (result) 339 - uint64_t # number 340 341- name: StringEmpty 342 entrypoint: StringEmpty 343 bridge: none 344 properties: [irtoc] 345 signature: 346 - ark::ObjectHeader* # string (result) 347 - ark::ObjectHeader* # string (to obtain klass) 348 349- name: StringTrimLeft 350 entrypoint: StringTrimLeft 351 bridge: none 352 properties: [irtoc] 353 signature: 354 - ark::ObjectHeader* # string (result) 355 - ark::ObjectHeader* # string to trim 356 - int32_t # unused 357 - int32_t # unused 358 359- name: StringTrimLeftBase 360 entrypoint: StringTrimLeftBase 361 bridge: none 362 properties: [irtoc] 363 signature: 364 - ark::ObjectHeader* # string (result) 365 - ark::ObjectHeader* # string to trim 366 - int32_t # unused 367 - int32_t # unused 368 369- name: StringTrimRight 370 entrypoint: StringTrimRight 371 bridge: none 372 properties: [irtoc] 373 signature: 374 - ark::ObjectHeader* # string (result) 375 - ark::ObjectHeader* # string to trim 376 - int32_t # unused 377 - int32_t # unused 378 379- name: StringTrimRightBase 380 entrypoint: StringTrimRightBase 381 bridge: none 382 properties: [irtoc] 383 signature: 384 - ark::ObjectHeader* # string (result) 385 - ark::ObjectHeader* # string to trim 386 - int32_t # unused 387 - int32_t # unused 388 389- name: StringTrim 390 entrypoint: StringTrim 391 bridge: none 392 properties: [irtoc] 393 signature: 394 - ark::ObjectHeader* # string (result) 395 - ark::ObjectHeader* # string to trim 396 - int32_t # unused 397 - int32_t # unused 398 399- name: StringTrimBase 400 entrypoint: StringTrimBase 401 bridge: none 402 properties: [irtoc] 403 signature: 404 - ark::ObjectHeader* # string (result) 405 - ark::ObjectHeader* # string to trim 406 - int32_t # unused 407 - int32_t # unused 408 409- name: CharIsWhiteSpace 410 entrypoint: CharIsWhiteSpace 411 bridge: none 412 properties: [irtoc] 413 signature: 414 - uint8_t # result (true/false) 415 - uint16_t # char to test 416