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# 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: panda::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: panda::intrinsics::AbsI32 46 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 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: panda::intrinsics::AbsI64 58 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 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: panda::intrinsics::AbsF32 70 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 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: panda::intrinsics::AbsF64 82 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 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: panda::intrinsics::MinI32 93 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 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: panda::intrinsics::MinI64 104 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 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: panda::intrinsics::MinF32 115 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 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: panda::intrinsics::MinF64 126 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 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: panda::intrinsics::MaxI32 137 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 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: panda::intrinsics::MaxI64 148 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 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: panda::intrinsics::MaxF32 159 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 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: panda::intrinsics::MaxF64 170 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 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: panda::intrinsics::IsInfF64 182 codegen_func: CreateFloatIsInf 183 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 184 185- name: FloatIsInf 186 space: core 187 class_name: Float 188 method_name: isInfinite 189 static: true 190 signature: 191 ret: u1 192 args: 193 - f32 194 impl: panda::intrinsics::IsInfF32 195 codegen_func: CreateFloatIsInf 196 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 197 198- name: MathSinF32 199 space: core 200 class_name: Math 201 method_name: fsin 202 static: true 203 signature: 204 ret: f32 205 args: 206 - f32 207 impl: panda::intrinsics::SinF32 208 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 209 210- name: MathSinF64 211 space: core 212 class_name: Math 213 method_name: sin 214 static: true 215 signature: 216 ret: f64 217 args: 218 - f64 219 impl: panda::intrinsics::SinF64 220 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 221 222- name: MathCosF32 223 space: core 224 class_name: Math 225 method_name: fcos 226 static: true 227 signature: 228 ret: f32 229 args: 230 - f32 231 impl: panda::intrinsics::CosF32 232 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 233 234- name: MathCosF64 235 space: core 236 class_name: Math 237 method_name: cos 238 static: true 239 signature: 240 ret: f64 241 args: 242 - f64 243 impl: panda::intrinsics::CosF64 244 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 245 246- name: MathPowF32 247 space: core 248 class_name: Math 249 method_name: fpow 250 static: true 251 signature: 252 ret: f32 253 args: 254 - f32 255 - f32 256 impl: panda::intrinsics::PowF32 257 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 258 259- name: MathPowF64 260 space: core 261 class_name: Math 262 method_name: pow 263 static: true 264 signature: 265 ret: f64 266 args: 267 - f64 268 - f64 269 impl: panda::intrinsics::PowF64 270 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 271 272- name: MathSqrtF32 273 space: core 274 class_name: Math 275 method_name: fsqrt 276 static: true 277 signature: 278 ret: f32 279 args: 280 - f32 281 impl: panda::intrinsics::SqrtF32 282 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 283 284- name: MathSqrtF64 285 space: core 286 class_name: Math 287 method_name: sqrt 288 static: true 289 signature: 290 ret: f64 291 args: 292 - f64 293 impl: panda::intrinsics::SqrtF64 294 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 295 296- name: IOPrintString 297 space: core 298 class_name: IO 299 method_name: printString 300 static: true 301 signature: 302 ret: void 303 args: 304 - panda.String 305 impl: panda::intrinsics::PrintString 306 clear_flags: [require_state, runtime_call] 307 308- name: IOPrintF32 309 space: core 310 class_name: IO 311 method_name: printF32 312 static: true 313 signature: 314 ret: void 315 args: 316 - f32 317 impl: panda::intrinsics::PrintF32 318 clear_flags: [require_state, runtime_call] 319 320- name: IOPrintF64 321 space: core 322 class_name: IO 323 method_name: printF64 324 static: true 325 signature: 326 ret: void 327 args: 328 - f64 329 impl: panda::intrinsics::PrintF64 330 clear_flags: [require_state, runtime_call] 331 332- name: IOPrintI32 333 space: core 334 class_name: IO 335 method_name: printI32 336 static: true 337 signature: 338 ret: void 339 args: 340 - i32 341 impl: panda::intrinsics::PrintI32 342 clear_flags: [require_state, runtime_call] 343 344- name: IOPrintU32 345 space: core 346 class_name: IO 347 method_name: printU32 348 static: true 349 signature: 350 ret: void 351 args: 352 - u32 353 impl: panda::intrinsics::PrintU32 354 clear_flags: [require_state, runtime_call] 355 356- name: IOPrintI64 357 space: core 358 class_name: IO 359 method_name: printI64 360 static: true 361 signature: 362 ret: void 363 args: 364 - i64 365 impl: panda::intrinsics::PrintI64 366 clear_flags: [require_state, runtime_call] 367 368- name: IOPrintU64 369 space: core 370 class_name: IO 371 method_name: printU64 372 static: true 373 signature: 374 ret: void 375 args: 376 - u64 377 impl: panda::intrinsics::PrintU64 378 clear_flags: [require_state, runtime_call] 379 380- name: SystemCompileMethod 381 space: core 382 class_name: System 383 method_name: compileMethod 384 static: true 385 private: true 386 signature: 387 ret: u8 388 args: [panda.String] 389 impl: panda::intrinsics::CompileMethod 390 391- name: SystemExit 392 space: core 393 class_name: System 394 method_name: exit 395 static: true 396 signature: 397 ret: void 398 args: 399 - i32 400 impl: panda::intrinsics::SystemExit 401 clear_flags: [require_state, runtime_call] 402 403- name: SystemNanoTime 404 space: core 405 class_name: System 406 method_name: nanoTime 407 static: true 408 signature: 409 ret: i64 410 args: [] 411 impl: panda::intrinsics::NanoTime 412 clear_flags: [require_state, runtime_call] 413 414- name: SystemAssert 415 space: core 416 class_name: System 417 method_name: assert 418 static: true 419 signature: 420 ret: void 421 args: [u1] 422 impl: panda::intrinsics::Assert 423 clear_flags: [require_state, runtime_call] 424 425- name: SystemAssertPrint 426 space: core 427 class_name: System 428 method_name: assertPrint 429 static: true 430 signature: 431 ret: void 432 args: [u1, panda.String] 433 impl: panda::intrinsics::AssertPrint 434 clear_flags: [require_state, runtime_call] 435 436- name: ConvertStringToI32 437 space: core 438 class_name: Convert 439 method_name: stringToI32 440 static: true 441 signature: 442 ret: i32 443 args: [panda.String] 444 impl: panda::intrinsics::ConvertStringToI32 445 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 446 447- name: ConvertStringToU32 448 space: core 449 class_name: Convert 450 method_name: stringToU32 451 static: true 452 signature: 453 ret: u32 454 args: [panda.String] 455 impl: panda::intrinsics::ConvertStringToU32 456 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 457 458- name: ConvertStringToI64 459 space: core 460 class_name: Convert 461 method_name: stringToI64 462 static: true 463 signature: 464 ret: i64 465 args: [panda.String] 466 impl: panda::intrinsics::ConvertStringToI64 467 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 468 469- name: ConvertStringToU64 470 space: core 471 class_name: Convert 472 method_name: stringToU64 473 static: true 474 signature: 475 ret: u64 476 args: [panda.String] 477 impl: panda::intrinsics::ConvertStringToU64 478 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 479 480- name: ConvertStringToF32 481 space: core 482 class_name: Convert 483 method_name: stringToF32 484 static: true 485 signature: 486 ret: f32 487 args: [panda.String] 488 impl: panda::intrinsics::ConvertStringToF32 489 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 490 491- name: ConvertStringToF64 492 space: core 493 class_name: Convert 494 method_name: stringToF64 495 static: true 496 signature: 497 ret: f64 498 args: [panda.String] 499 impl: panda::intrinsics::ConvertStringToF64 500 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 501 502- name: ObjectCreateNonMovable 503 space: core 504 class_name: Object 505 method_name: createNonMovable 506 static: true 507 signature: 508 ret: panda.Object 509 args: [panda.Class] 510 impl: panda::intrinsics::ObjectCreateNonMovable 511 set_flags: [can_throw] 512 513- name: ObjectMonitorEnter 514 space: core 515 class_name: Object 516 method_name: monitorEnter 517 static: true 518 signature: 519 ret: void 520 args: [panda.Object] 521 impl: panda::intrinsics::ObjectMonitorEnter 522 523- name: ObjectMonitorExit 524 space: core 525 class_name: Object 526 method_name: monitorExit 527 static: true 528 signature: 529 ret: void 530 args: [panda.Object] 531 impl: panda::intrinsics::ObjectMonitorExit 532 533- name: ObjectWait 534 space: core 535 class_name: Object 536 method_name: Wait 537 static: true 538 signature: 539 ret: void 540 args: [panda.Object] 541 impl: panda::intrinsics::ObjectWait 542 543- name: ObjectTimedWait 544 space: core 545 class_name: Object 546 method_name: TimedWait 547 static: true 548 signature: 549 ret: void 550 args: [panda.Object, u64] 551 impl: panda::intrinsics::ObjectTimedWait 552 553- name: ObjectTimedWaitNanos 554 space: core 555 class_name: Object 556 method_name: TimedWaitNanos 557 static: true 558 signature: 559 ret: void 560 args: [panda.Object, u64, u64] 561 impl: panda::intrinsics::ObjectTimedWaitNanos 562 563- name: ObjectNotify 564 space: core 565 class_name: Object 566 method_name: Notify 567 static: true 568 signature: 569 ret: void 570 args: [panda.Object] 571 impl: panda::intrinsics::ObjectNotify 572 clear_flags: [require_state, runtime_call] 573 574- name: ObjectNotifyAll 575 space: core 576 class_name: Object 577 method_name: NotifyAll 578 static: true 579 signature: 580 ret: void 581 args: [panda.Object] 582 impl: panda::intrinsics::ObjectNotifyAll 583 clear_flags: [require_state, runtime_call] 584