1# Copyright (c) 2021-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# Mapping beetween managed core types and C++ mirror classes 15coretypes: 16- managed_class: panda.Object 17 mirror_class: ObjectHeader 18 19- managed_class: panda.String 20 mirror_class: coretypes::String 21 22- managed_class: panda.Class 23 mirror_class: coretypes::Class 24 25# Namespace that contains intrinsics implementation. For functions from 26# this namespace declaration in intrinsics.h will be generated 27intrinsics_namespace: ark::intrinsics 28 29# NB! The `space` property allows to group intrinsics and control 30# which intrinsics are loaded during startup. By default only "core" 31# space is loaded. See --load-runtimes for more details. 32# 33# The `signature` for instance intrinsics (`static` is false) doesn't include 34# `this` argument. 35intrinsics: 36- name: MathAbsI32 37 space: core 38 class_name: Math 39 method_name: absI32 40 static: true 41 signature: 42 ret: i32 43 args: 44 - i32 45 impl: ark::intrinsics::AbsI32 46 safe_intrinsic: true 47 48- name: MathAbsI64 49 space: core 50 class_name: Math 51 method_name: absI64 52 static: true 53 signature: 54 ret: i64 55 args: 56 - i64 57 impl: ark::intrinsics::AbsI64 58 safe_intrinsic: true 59 60- name: MathAbsF32 61 space: core 62 class_name: Math 63 method_name: absF32 64 static: true 65 signature: 66 ret: f32 67 args: 68 - f32 69 impl: ark::intrinsics::AbsF32 70 safe_intrinsic: true 71 72- name: MathAbsF64 73 space: core 74 class_name: Math 75 method_name: absF64 76 static: true 77 signature: 78 ret: f64 79 args: 80 - f64 81 impl: ark::intrinsics::AbsF64 82 safe_intrinsic: true 83 84- name: MathMinI32 85 space: core 86 class_name: Math 87 method_name: minI32 88 static: true 89 signature: 90 ret: i32 91 args: [i32, i32] 92 impl: ark::intrinsics::MinI32 93 safe_intrinsic: true 94 95- name: MathMinI64 96 space: core 97 class_name: Math 98 method_name: minI64 99 static: true 100 signature: 101 ret: i64 102 args: [i64, i64] 103 impl: ark::intrinsics::MinI64 104 safe_intrinsic: true 105 106- name: MathMinF32 107 space: core 108 class_name: Math 109 method_name: minF32 110 static: true 111 signature: 112 ret: f32 113 args: [f32, f32] 114 impl: ark::intrinsics::MinF32 115 safe_intrinsic: true 116 117- name: MathMinF64 118 space: core 119 class_name: Math 120 method_name: minF64 121 static: true 122 signature: 123 ret: f64 124 args: [f64, f64] 125 impl: ark::intrinsics::MinF64 126 safe_intrinsic: true 127 128- name: MathMaxI32 129 space: core 130 class_name: Math 131 method_name: maxI32 132 static: true 133 signature: 134 ret: i32 135 args: [i32, i32] 136 impl: ark::intrinsics::MaxI32 137 safe_intrinsic: true 138 139- name: MathMaxI64 140 space: core 141 class_name: Math 142 method_name: maxI64 143 static: true 144 signature: 145 ret: i64 146 args: [i64, i64] 147 impl: ark::intrinsics::MaxI64 148 safe_intrinsic: true 149 150- name: MathMaxF32 151 space: core 152 class_name: Math 153 method_name: maxF32 154 static: true 155 signature: 156 ret: f32 157 args: [f32, f32] 158 impl: ark::intrinsics::MaxF32 159 safe_intrinsic: true 160 161- name: MathMaxF64 162 space: core 163 class_name: Math 164 method_name: maxF64 165 static: true 166 signature: 167 ret: f64 168 args: [f64, f64] 169 impl: ark::intrinsics::MaxF64 170 safe_intrinsic: true 171 172- name: DoubleIsInf 173 space: core 174 class_name: Double 175 method_name: isInfinite 176 static: true 177 signature: 178 ret: u1 179 args: 180 - f64 181 impl: ark::intrinsics::IsInfF64 182 codegen_func: CreateFloatIsInf 183 llvm_codegen_func: EmitIsInf 184 safe_intrinsic: true 185 186- name: FloatIsInf 187 space: core 188 class_name: Float 189 method_name: isInfinite 190 static: true 191 signature: 192 ret: u1 193 args: 194 - f32 195 impl: ark::intrinsics::IsInfF32 196 codegen_func: CreateFloatIsInf 197 llvm_codegen_func: EmitIsInf 198 safe_intrinsic: true 199 200- name: MathSinF32 201 space: core 202 class_name: Math 203 method_name: fsin 204 static: true 205 signature: 206 ret: f32 207 args: 208 - f32 209 impl: ark::intrinsics::SinF32 210 llvm_impl: sin 211 safe_intrinsic: true 212 213- name: MathSinF64 214 space: core 215 class_name: Math 216 method_name: sin 217 static: true 218 signature: 219 ret: f64 220 args: 221 - f64 222 impl: ark::intrinsics::SinF64 223 llvm_impl: sin 224 safe_intrinsic: true 225 226- name: MathCosF32 227 space: core 228 class_name: Math 229 method_name: fcos 230 static: true 231 signature: 232 ret: f32 233 args: 234 - f32 235 impl: ark::intrinsics::CosF32 236 llvm_impl: cos 237 safe_intrinsic: true 238 239- name: MathCosF64 240 space: core 241 class_name: Math 242 method_name: cos 243 static: true 244 signature: 245 ret: f64 246 args: 247 - f64 248 impl: ark::intrinsics::CosF64 249 llvm_impl: cos 250 safe_intrinsic: true 251 252- name: MathPowF32 253 space: core 254 class_name: Math 255 method_name: fpow 256 static: true 257 signature: 258 ret: f32 259 args: 260 - f32 261 - f32 262 impl: ark::intrinsics::PowF32 263 llvm_impl: pow 264 safe_intrinsic: true 265 266- name: MathPowF64 267 space: core 268 class_name: Math 269 method_name: pow 270 static: true 271 signature: 272 ret: f64 273 args: 274 - f64 275 - f64 276 impl: ark::intrinsics::PowF64 277 llvm_impl: pow 278 safe_intrinsic: true 279 280- name: MathSqrtF32 281 space: core 282 class_name: Math 283 method_name: fsqrt 284 static: true 285 signature: 286 ret: f32 287 args: 288 - f32 289 impl: ark::intrinsics::SqrtF32 290 safe_intrinsic: true 291 292- name: MathSqrtF64 293 space: core 294 class_name: Math 295 method_name: sqrt 296 static: true 297 signature: 298 ret: f64 299 args: 300 - f64 301 impl: ark::intrinsics::SqrtF64 302 safe_intrinsic: true 303 304- name: MathCalculateDouble 305 space: core 306 class_name: Math 307 method_name: calculateDouble 308 static: true 309 private: true 310 signature: 311 ret: f64 312 args: [u32, f64] 313 impl: ark::intrinsics::CalculateDouble 314 clear_flags: [ can_throw, heap_inv ] 315 316- name: MathCalculateFloat 317 space: core 318 class_name: Math 319 method_name: calculateFloat 320 static: true 321 private: true 322 signature: 323 ret: f32 324 args: [u32, f32] 325 impl: ark::intrinsics::CalculateFloat 326 clear_flags: [ can_throw, heap_inv ] 327 328- name: IOPrintString 329 space: core 330 class_name: IO 331 method_name: printString 332 static: true 333 signature: 334 ret: void 335 args: 336 - panda.String 337 impl: ark::intrinsics::PrintString 338 clear_flags: [require_state, runtime_call, can_throw, heap_inv] 339 340- name: IOPrintF32 341 space: core 342 class_name: IO 343 method_name: printF32 344 static: true 345 signature: 346 ret: void 347 args: 348 - f32 349 impl: ark::intrinsics::PrintF32 350 clear_flags: [require_state, runtime_call, can_throw, heap_inv] 351 352- name: IOPrintF64 353 space: core 354 class_name: IO 355 method_name: printF64 356 static: true 357 signature: 358 ret: void 359 args: 360 - f64 361 impl: ark::intrinsics::PrintF64 362 clear_flags: [require_state, runtime_call, can_throw, heap_inv] 363 364- name: IOPrintI32 365 space: core 366 class_name: IO 367 method_name: printI32 368 static: true 369 signature: 370 ret: void 371 args: 372 - i32 373 impl: ark::intrinsics::PrintI32 374 clear_flags: [require_state, runtime_call, can_throw, heap_inv] 375 376- name: IOPrintU32 377 space: core 378 class_name: IO 379 method_name: printU32 380 static: true 381 signature: 382 ret: void 383 args: 384 - u32 385 impl: ark::intrinsics::PrintU32 386 clear_flags: [require_state, runtime_call, can_throw, heap_inv] 387 388- name: IOPrintI64 389 space: core 390 class_name: IO 391 method_name: printI64 392 static: true 393 signature: 394 ret: void 395 args: 396 - i64 397 impl: ark::intrinsics::PrintI64 398 clear_flags: [require_state, runtime_call, can_throw, heap_inv] 399 400- name: IOPrintU64 401 space: core 402 class_name: IO 403 method_name: printU64 404 static: true 405 signature: 406 ret: void 407 args: 408 - u64 409 impl: ark::intrinsics::PrintU64 410 clear_flags: [require_state, runtime_call, can_throw, heap_inv] 411 412- name: SystemCompileMethod 413 space: core 414 class_name: System 415 method_name: compileMethod 416 static: true 417 private: true 418 signature: 419 ret: u8 420 args: [panda.String] 421 impl: ark::intrinsics::CompileMethod 422 423- name: SystemExit 424 space: core 425 class_name: System 426 method_name: exit 427 static: true 428 signature: 429 ret: void 430 args: 431 - i32 432 impl: ark::intrinsics::SystemExit 433 clear_flags: [require_state, runtime_call, can_throw, heap_inv] 434 435- name: SystemNanoTime 436 space: core 437 class_name: System 438 method_name: nanoTime 439 static: true 440 signature: 441 ret: i64 442 args: [] 443 impl: ark::intrinsics::NanoTime 444 clear_flags: [require_state, runtime_call, can_throw, heap_inv] 445 446- name: SystemAssert 447 space: core 448 class_name: System 449 method_name: assert 450 static: true 451 signature: 452 ret: void 453 args: [u1] 454 impl: ark::intrinsics::Assert 455 clear_flags: [require_state, runtime_call, can_throw, heap_inv] 456 457- name: SystemAssertPrint 458 space: core 459 class_name: System 460 method_name: assertPrint 461 static: true 462 signature: 463 ret: void 464 args: [u1, panda.String] 465 impl: ark::intrinsics::AssertPrint 466 clear_flags: [require_state, runtime_call, can_throw, heap_inv] 467 468- name: SystemScheduleCoroutine 469 space: core 470 class_name: System 471 method_name: scheduleCoroutine 472 static: true 473 signature: 474 ret: void 475 args: [] 476 impl: ark::intrinsics::SystemScheduleCoroutine 477 478- name: SystemCoroutineGetWorkerId 479 space: core 480 class_name: System 481 method_name: getCoroutineWorkerId 482 static: true 483 signature: 484 ret: i32 485 args: [] 486 impl: ark::intrinsics::SystemCoroutineGetWorkerId 487 488- name: CheckTag 489 space: core 490 class_name: DebugUtils 491 method_name: checkTag 492 static: true 493 signature: 494 ret: void 495 args: [i64, i64] 496 impl: ark::intrinsics::CheckTag 497 clear_flags: [require_state, runtime_call, can_throw, heap_inv ] 498 499- name: ConvertStringToI32 500 space: core 501 class_name: Convert 502 method_name: stringToI32 503 static: true 504 signature: 505 ret: i32 506 args: [panda.String] 507 impl: ark::intrinsics::ConvertStringToI32 508 safe_intrinsic: true 509 510- name: ConvertStringToU32 511 space: core 512 class_name: Convert 513 method_name: stringToU32 514 static: true 515 signature: 516 ret: u32 517 args: [panda.String] 518 impl: ark::intrinsics::ConvertStringToU32 519 safe_intrinsic: true 520 521- name: ConvertStringToI64 522 space: core 523 class_name: Convert 524 method_name: stringToI64 525 static: true 526 signature: 527 ret: i64 528 args: [panda.String] 529 impl: ark::intrinsics::ConvertStringToI64 530 safe_intrinsic: true 531 532- name: ConvertStringToU64 533 space: core 534 class_name: Convert 535 method_name: stringToU64 536 static: true 537 signature: 538 ret: u64 539 args: [panda.String] 540 impl: ark::intrinsics::ConvertStringToU64 541 safe_intrinsic: true 542 543- name: ConvertStringToF32 544 space: core 545 class_name: Convert 546 method_name: stringToF32 547 static: true 548 signature: 549 ret: f32 550 args: [panda.String] 551 impl: ark::intrinsics::ConvertStringToF32 552 safe_intrinsic: true 553 554- name: ConvertStringToF64 555 space: core 556 class_name: Convert 557 method_name: stringToF64 558 static: true 559 signature: 560 ret: f64 561 args: [panda.String] 562 impl: ark::intrinsics::ConvertStringToF64 563 safe_intrinsic: true 564 565- name: ObjectCreateNonMovable 566 space: core 567 class_name: Object 568 method_name: createNonMovable 569 static: true 570 signature: 571 ret: panda.Object 572 args: [panda.Class] 573 impl: ark::intrinsics::ObjectCreateNonMovable 574 clear_flags: [ heap_inv ] 575 576- name: ObjectMonitorEnter 577 space: core 578 class_name: Object 579 method_name: monitorEnter 580 static: true 581 signature: 582 ret: void 583 args: [panda.Object] 584 impl: ark::intrinsics::ObjectMonitorEnter 585 586- name: ObjectMonitorExit 587 space: core 588 class_name: Object 589 method_name: monitorExit 590 static: true 591 signature: 592 ret: void 593 args: [panda.Object] 594 impl: ark::intrinsics::ObjectMonitorExit 595 596- name: ObjectWait 597 space: core 598 class_name: Object 599 method_name: Wait 600 static: true 601 signature: 602 ret: void 603 args: [panda.Object] 604 impl: ark::intrinsics::ObjectWait 605 606- name: ObjectTimedWait 607 space: core 608 class_name: Object 609 method_name: TimedWait 610 static: true 611 signature: 612 ret: void 613 args: [panda.Object, u64] 614 impl: ark::intrinsics::ObjectTimedWait 615 616- name: ObjectTimedWaitNanos 617 space: core 618 class_name: Object 619 method_name: TimedWaitNanos 620 static: true 621 signature: 622 ret: void 623 args: [panda.Object, u64, u64] 624 impl: ark::intrinsics::ObjectTimedWaitNanos 625 626- name: ObjectNotify 627 space: core 628 class_name: Object 629 method_name: Notify 630 static: true 631 signature: 632 ret: void 633 args: [panda.Object] 634 impl: ark::intrinsics::ObjectNotify 635 clear_flags: [require_state, runtime_call, can_throw, heap_inv ] 636 637- name: ObjectNotifyAll 638 space: core 639 class_name: Object 640 method_name: NotifyAll 641 static: true 642 signature: 643 ret: void 644 args: [panda.Object] 645 impl: ark::intrinsics::ObjectNotifyAll 646 clear_flags: [require_state, runtime_call, can_throw, heap_inv ] 647