• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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