-
Notifications
You must be signed in to change notification settings - Fork 149
/
Copy pathjit.bi
1731 lines (1678 loc) · 106 KB
/
jit.bi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
'' FreeBASIC binding for libjit-0.1.4
''
'' based on the C header files:
'' Copyright (C) 2004 Southern Storm Software, Pty Ltd.
''
'' The libjit library is free software: you can redistribute it and/or
'' modify it under the terms of the GNU Lesser General Public License
'' as published by the Free Software Foundation, either version 2.1 of
'' the License, or (at your option) any later version.
''
'' The libjit library is distributed in the hope that it will be useful,
'' but WITHOUT ANY WARRANTY; without even the implied warranty of
'' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
'' Lesser General Public License for more details.
''
'' You should have received a copy of the GNU Lesser General Public
'' License along with the libjit library. If not, see
'' <http://www.gnu.org/licenses/>.
''
'' translated to FreeBASIC by:
'' FreeBASIC development team
#pragma once
#inclib "jit"
#include once "crt/stdio.bi"
#include once "crt/longdouble.bi"
'' The following symbols have been renamed:
'' constant JIT_TYPE_VOID => JIT_TYPE_VOID_
'' constant JIT_TYPE_SBYTE => JIT_TYPE_SBYTE_
'' constant JIT_TYPE_UBYTE => JIT_TYPE_UBYTE_
'' constant JIT_TYPE_SHORT => JIT_TYPE_SHORT_
'' constant JIT_TYPE_USHORT => JIT_TYPE_USHORT_
'' constant JIT_TYPE_INT => JIT_TYPE_INT_
'' constant JIT_TYPE_UINT => JIT_TYPE_UINT_
'' constant JIT_TYPE_NINT => JIT_TYPE_NINT_
'' constant JIT_TYPE_NUINT => JIT_TYPE_NUINT_
'' constant JIT_TYPE_LONG => JIT_TYPE_LONG_
'' constant JIT_TYPE_ULONG => JIT_TYPE_ULONG_
'' constant JIT_TYPE_FLOAT32 => JIT_TYPE_FLOAT32_
'' constant JIT_TYPE_FLOAT64 => JIT_TYPE_FLOAT64_
'' constant JIT_TYPE_NFLOAT => JIT_TYPE_NFLOAT_
extern "C"
#define _JIT_H
#define _JIT_DEFS_H
type jit_sbyte as byte
type jit_ubyte as ubyte
type jit_short as short
type jit_ushort as ushort
type jit_int as long
type jit_uint as ulong
type jit_nint as integer
type jit_nuint as uinteger
type jit_long as longint
type jit_ulong as ulongint
type jit_float32 as single
type jit_float64 as double
#ifdef __FB_WIN32__
type jit_nfloat as double
#else
type jit_nfloat as clongdouble
#endif
type jit_ptr as any ptr
#define JIT_NOTHROW
#define jit_min_int clng(cast(jit_int, 1) shl ((sizeof(jit_int) * 8) - 1))
#define jit_max_int cast(jit_int, not jit_min_int)
const jit_max_uint = cast(jit_uint, not cast(jit_uint, 0))
#define jit_min_long (cast(jit_long, 1) shl ((sizeof(jit_long) * 8) - 1))
#define jit_max_long cast(jit_long, not jit_min_long)
const jit_max_ulong = cast(jit_ulong, not cast(jit_ulong, 0))
#define _JIT_COMMON_H
type jit_context_t as _jit_context ptr
type jit_function_t as _jit_function ptr
type jit_block_t as _jit_block ptr
type jit_insn_t as _jit_insn ptr
type jit_value_t as _jit_value ptr
type jit_type_t as _jit_type ptr
type jit_stack_trace_t as jit_stack_trace ptr
type jit_label_t as jit_nuint
const jit_label_undefined = cast(jit_label_t, culng(not cast(jit_uint, 0)))
const JIT_NO_OFFSET = culng(not culng(0))
type jit_meta_free_func as sub(byval data as any ptr)
type jit_on_demand_func as function(byval func as jit_function_t) as long
type jit_on_demand_driver_func as function(byval func as jit_function_t) as any ptr
#define _JIT_CONTEXT_H
#define _JIT_MEMORY_H
const JIT_MEMORY_OK = 0
const JIT_MEMORY_RESTART = 1
const JIT_MEMORY_TOO_BIG = 2
const JIT_MEMORY_ERROR = 3
type jit_size_t as ulong
type jit_memory_context_t as any ptr
type jit_function_info_t as any ptr
type jit_memory_manager_t as const jit_memory_manager ptr
type jit_memory_manager
create as function(byval context as jit_context_t) as jit_memory_context_t
destroy as sub(byval memctx as jit_memory_context_t)
find_function_info as function(byval memctx as jit_memory_context_t, byval pc as any ptr) as jit_function_info_t
get_function as function(byval memctx as jit_memory_context_t, byval info as jit_function_info_t) as jit_function_t
get_function_start as function(byval memctx as jit_memory_context_t, byval info as jit_function_info_t) as any ptr
get_function_end as function(byval memctx as jit_memory_context_t, byval info as jit_function_info_t) as any ptr
alloc_function as function(byval memctx as jit_memory_context_t) as jit_function_t
free_function as sub(byval memctx as jit_memory_context_t, byval func as jit_function_t)
start_function as function(byval memctx as jit_memory_context_t, byval func as jit_function_t) as long
end_function as function(byval memctx as jit_memory_context_t, byval result as long) as long
extend_limit as function(byval memctx as jit_memory_context_t, byval count as long) as long
get_limit as function(byval memctx as jit_memory_context_t) as any ptr
get_break as function(byval memctx as jit_memory_context_t) as any ptr
set_break as sub(byval memctx as jit_memory_context_t, byval brk as any ptr)
alloc_trampoline as function(byval memctx as jit_memory_context_t) as any ptr
free_trampoline as sub(byval memctx as jit_memory_context_t, byval ptr as any ptr)
alloc_closure as function(byval memctx as jit_memory_context_t) as any ptr
free_closure as sub(byval memctx as jit_memory_context_t, byval ptr as any ptr)
alloc_data as function(byval memctx as jit_memory_context_t, byval size as jit_size_t, byval align as jit_size_t) as any ptr
end type
declare function jit_default_memory_manager() as jit_memory_manager_t
declare function jit_context_create() as jit_context_t
declare sub jit_context_destroy(byval context as jit_context_t)
declare sub jit_context_build_start(byval context as jit_context_t)
declare sub jit_context_build_end(byval context as jit_context_t)
declare sub jit_context_set_on_demand_driver(byval context as jit_context_t, byval driver as jit_on_demand_driver_func)
declare sub jit_context_set_memory_manager(byval context as jit_context_t, byval manager as jit_memory_manager_t)
declare function jit_context_set_meta(byval context as jit_context_t, byval type as long, byval data as any ptr, byval free_data as jit_meta_free_func) as long
declare function jit_context_set_meta_numeric(byval context as jit_context_t, byval type as long, byval data as jit_nuint) as long
declare function jit_context_get_meta(byval context as jit_context_t, byval type as long) as any ptr
declare function jit_context_get_meta_numeric(byval context as jit_context_t, byval type as long) as jit_nuint
declare sub jit_context_free_meta(byval context as jit_context_t, byval type as long)
const JIT_OPTION_CACHE_LIMIT = 10000
const JIT_OPTION_CACHE_PAGE_SIZE = 10001
const JIT_OPTION_PRE_COMPILE = 10002
const JIT_OPTION_DONT_FOLD = 10003
const JIT_OPTION_POSITION_INDEPENDENT = 10004
const JIT_OPTION_CACHE_MAX_PAGE_FACTOR = 10005
#define _JIT_APPLY_H
#define _JIT_TYPE_H
extern jit_type_void as const jit_type_t
extern jit_type_sbyte as const jit_type_t
extern jit_type_ubyte as const jit_type_t
extern jit_type_short as const jit_type_t
extern jit_type_ushort as const jit_type_t
extern jit_type_int as const jit_type_t
extern jit_type_uint as const jit_type_t
extern jit_type_nint as const jit_type_t
extern jit_type_nuint as const jit_type_t
extern jit_type_long as const jit_type_t
extern jit_type_ulong as const jit_type_t
extern jit_type_float32 as const jit_type_t
extern jit_type_float64 as const jit_type_t
extern jit_type_nfloat as const jit_type_t
extern jit_type_void_ptr as const jit_type_t
extern jit_type_sys_bool as const jit_type_t
extern jit_type_sys_char as const jit_type_t
extern jit_type_sys_schar as const jit_type_t
extern jit_type_sys_uchar as const jit_type_t
extern jit_type_sys_short as const jit_type_t
extern jit_type_sys_ushort as const jit_type_t
extern jit_type_sys_int as const jit_type_t
extern jit_type_sys_uint as const jit_type_t
extern jit_type_sys_long as const jit_type_t
extern jit_type_sys_ulong as const jit_type_t
extern jit_type_sys_longlong as const jit_type_t
extern jit_type_sys_ulonglong as const jit_type_t
extern jit_type_sys_float as const jit_type_t
extern jit_type_sys_double as const jit_type_t
extern jit_type_sys_long_double as const jit_type_t
const JIT_TYPE_INVALID = -1
const JIT_TYPE_VOID_ = 0
const JIT_TYPE_SBYTE_ = 1
const JIT_TYPE_UBYTE_ = 2
const JIT_TYPE_SHORT_ = 3
const JIT_TYPE_USHORT_ = 4
const JIT_TYPE_INT_ = 5
const JIT_TYPE_UINT_ = 6
const JIT_TYPE_NINT_ = 7
const JIT_TYPE_NUINT_ = 8
const JIT_TYPE_LONG_ = 9
const JIT_TYPE_ULONG_ = 10
const JIT_TYPE_FLOAT32_ = 11
const JIT_TYPE_FLOAT64_ = 12
const JIT_TYPE_NFLOAT_ = 13
const JIT_TYPE_MAX_PRIMITIVE = JIT_TYPE_NFLOAT_
const JIT_TYPE_STRUCT = 14
const JIT_TYPE_UNION = 15
const JIT_TYPE_SIGNATURE = 16
const JIT_TYPE_PTR = 17
const JIT_TYPE_FIRST_TAGGED = 32
const JIT_TYPETAG_NAME = 10000
const JIT_TYPETAG_STRUCT_NAME = 10001
const JIT_TYPETAG_UNION_NAME = 10002
const JIT_TYPETAG_ENUM_NAME = 10003
const JIT_TYPETAG_CONST = 10004
const JIT_TYPETAG_VOLATILE = 10005
const JIT_TYPETAG_REFERENCE = 10006
const JIT_TYPETAG_OUTPUT = 10007
const JIT_TYPETAG_RESTRICT = 10008
const JIT_TYPETAG_SYS_BOOL = 10009
const JIT_TYPETAG_SYS_CHAR = 10010
const JIT_TYPETAG_SYS_SCHAR = 10011
const JIT_TYPETAG_SYS_UCHAR = 10012
const JIT_TYPETAG_SYS_SHORT = 10013
const JIT_TYPETAG_SYS_USHORT = 10014
const JIT_TYPETAG_SYS_INT = 10015
const JIT_TYPETAG_SYS_UINT = 10016
const JIT_TYPETAG_SYS_LONG = 10017
const JIT_TYPETAG_SYS_ULONG = 10018
const JIT_TYPETAG_SYS_LONGLONG = 10019
const JIT_TYPETAG_SYS_ULONGLONG = 10020
const JIT_TYPETAG_SYS_FLOAT = 10021
const JIT_TYPETAG_SYS_DOUBLE = 10022
const JIT_TYPETAG_SYS_LONGDOUBLE = 10023
type jit_abi_t as long
enum
jit_abi_cdecl
jit_abi_vararg
jit_abi_stdcall
jit_abi_fastcall
end enum
const JIT_INVALID_NAME = culng(not culng(0))
declare function jit_type_copy(byval type as jit_type_t) as jit_type_t
declare sub jit_type_free(byval type as jit_type_t)
declare function jit_type_create_struct(byval fields as jit_type_t ptr, byval num_fields as ulong, byval incref as long) as jit_type_t
declare function jit_type_create_union(byval fields as jit_type_t ptr, byval num_fields as ulong, byval incref as long) as jit_type_t
declare function jit_type_create_signature(byval abi as jit_abi_t, byval return_type as jit_type_t, byval params as jit_type_t ptr, byval num_params as ulong, byval incref as long) as jit_type_t
declare function jit_type_create_pointer(byval type as jit_type_t, byval incref as long) as jit_type_t
declare function jit_type_create_tagged(byval type as jit_type_t, byval kind as long, byval data as any ptr, byval free_func as jit_meta_free_func, byval incref as long) as jit_type_t
declare function jit_type_set_names(byval type as jit_type_t, byval names as zstring ptr ptr, byval num_names as ulong) as long
declare sub jit_type_set_size_and_alignment(byval type as jit_type_t, byval size as jit_nint, byval alignment as jit_nint)
declare sub jit_type_set_offset(byval type as jit_type_t, byval field_index as ulong, byval offset as jit_nuint)
declare function jit_type_get_kind(byval type as jit_type_t) as long
declare function jit_type_get_size(byval type as jit_type_t) as jit_nuint
declare function jit_type_get_alignment(byval type as jit_type_t) as jit_nuint
declare function jit_type_best_alignment() as jit_nuint
declare function jit_type_num_fields(byval type as jit_type_t) as ulong
declare function jit_type_get_field(byval type as jit_type_t, byval field_index as ulong) as jit_type_t
declare function jit_type_get_offset(byval type as jit_type_t, byval field_index as ulong) as jit_nuint
declare function jit_type_get_name(byval type as jit_type_t, byval index as ulong) as const zstring ptr
declare function jit_type_find_name(byval type as jit_type_t, byval name as const zstring ptr) as ulong
declare function jit_type_num_params(byval type as jit_type_t) as ulong
declare function jit_type_get_return(byval type as jit_type_t) as jit_type_t
declare function jit_type_get_param(byval type as jit_type_t, byval param_index as ulong) as jit_type_t
declare function jit_type_get_abi(byval type as jit_type_t) as jit_abi_t
declare function jit_type_get_ref(byval type as jit_type_t) as jit_type_t
declare function jit_type_get_tagged_type(byval type as jit_type_t) as jit_type_t
declare sub jit_type_set_tagged_type(byval type as jit_type_t, byval underlying as jit_type_t, byval incref as long)
declare function jit_type_get_tagged_kind(byval type as jit_type_t) as long
declare function jit_type_get_tagged_data(byval type as jit_type_t) as any ptr
declare sub jit_type_set_tagged_data(byval type as jit_type_t, byval data as any ptr, byval free_func as jit_meta_free_func)
declare function jit_type_is_primitive(byval type as jit_type_t) as long
declare function jit_type_is_struct(byval type as jit_type_t) as long
declare function jit_type_is_union(byval type as jit_type_t) as long
declare function jit_type_is_signature(byval type as jit_type_t) as long
declare function jit_type_is_pointer(byval type as jit_type_t) as long
declare function jit_type_is_tagged(byval type as jit_type_t) as long
declare function jit_type_remove_tags(byval type as jit_type_t) as jit_type_t
declare function jit_type_normalize(byval type as jit_type_t) as jit_type_t
declare function jit_type_promote_int(byval type as jit_type_t) as jit_type_t
declare function jit_type_return_via_pointer(byval type as jit_type_t) as long
declare function jit_type_has_tag(byval type as jit_type_t, byval kind as long) as long
type jit_closure_func as sub(byval signature as jit_type_t, byval result as any ptr, byval args as any ptr ptr, byval user_data as any ptr)
type jit_closure_va_list_t as jit_closure_va_list ptr
declare sub jit_apply(byval signature as jit_type_t, byval func as any ptr, byval args as any ptr ptr, byval num_fixed_args as ulong, byval return_value as any ptr)
declare sub jit_apply_raw(byval signature as jit_type_t, byval func as any ptr, byval args as any ptr, byval return_value as any ptr)
declare function jit_raw_supported(byval signature as jit_type_t) as long
declare function jit_closure_create(byval context as jit_context_t, byval signature as jit_type_t, byval func as jit_closure_func, byval user_data as any ptr) as any ptr
declare function jit_closure_va_get_nint(byval va as jit_closure_va_list_t) as jit_nint
declare function jit_closure_va_get_nuint(byval va as jit_closure_va_list_t) as jit_nuint
declare function jit_closure_va_get_long(byval va as jit_closure_va_list_t) as jit_long
declare function jit_closure_va_get_ulong(byval va as jit_closure_va_list_t) as jit_ulong
declare function jit_closure_va_get_float32(byval va as jit_closure_va_list_t) as jit_float32
declare function jit_closure_va_get_float64(byval va as jit_closure_va_list_t) as jit_float64
declare function jit_closure_va_get_nfloat(byval va as jit_closure_va_list_t) as jit_nfloat
declare function jit_closure_va_get_ptr(byval va as jit_closure_va_list_t) as any ptr
declare sub jit_closure_va_get_struct(byval va as jit_closure_va_list_t, byval buf as any ptr, byval type as jit_type_t)
#define _JIT_BLOCK_H
declare function jit_block_get_function(byval block as jit_block_t) as jit_function_t
declare function jit_block_get_context(byval block as jit_block_t) as jit_context_t
declare function jit_block_get_label(byval block as jit_block_t) as jit_label_t
declare function jit_block_get_next_label(byval block as jit_block_t, byval label as jit_label_t) as jit_label_t
declare function jit_block_next(byval func as jit_function_t, byval previous as jit_block_t) as jit_block_t
declare function jit_block_previous(byval func as jit_function_t, byval previous as jit_block_t) as jit_block_t
declare function jit_block_from_label(byval func as jit_function_t, byval label as jit_label_t) as jit_block_t
declare function jit_block_set_meta(byval block as jit_block_t, byval type as long, byval data as any ptr, byval free_data as jit_meta_free_func) as long
declare function jit_block_get_meta(byval block as jit_block_t, byval type as long) as any ptr
declare sub jit_block_free_meta(byval block as jit_block_t, byval type as long)
declare function jit_block_is_reachable(byval block as jit_block_t) as long
declare function jit_block_ends_in_dead(byval block as jit_block_t) as long
declare function jit_block_current_is_dead(byval func as jit_function_t) as long
#define _JIT_DEBUGGER_H
type jit_debugger_t as jit_debugger ptr
type jit_debugger_thread_id_t as jit_nint
type jit_debugger_breakpoint_id_t as jit_nint
type jit_debugger_event
as long type
thread as jit_debugger_thread_id_t
function as jit_function_t
data1 as jit_nint
data2 as jit_nint
id as jit_debugger_breakpoint_id_t
trace as jit_stack_trace_t
end type
type jit_debugger_event_t as jit_debugger_event
const JIT_DEBUGGER_TYPE_QUIT = 0
const JIT_DEBUGGER_TYPE_HARD_BREAKPOINT = 1
const JIT_DEBUGGER_TYPE_SOFT_BREAKPOINT = 2
const JIT_DEBUGGER_TYPE_USER_BREAKPOINT = 3
const JIT_DEBUGGER_TYPE_ATTACH_THREAD = 4
const JIT_DEBUGGER_TYPE_DETACH_THREAD = 5
type jit_debugger_breakpoint_info
flags as long
thread as jit_debugger_thread_id_t
function as jit_function_t
data1 as jit_nint
data2 as jit_nint
end type
type jit_debugger_breakpoint_info_t as jit_debugger_breakpoint_info ptr
const JIT_DEBUGGER_FLAG_THREAD = 1 shl 0
const JIT_DEBUGGER_FLAG_FUNCTION = 1 shl 1
const JIT_DEBUGGER_FLAG_DATA1 = 1 shl 2
const JIT_DEBUGGER_FLAG_DATA2 = 1 shl 3
const JIT_DEBUGGER_DATA1_FIRST = 10000
const JIT_DEBUGGER_DATA1_LINE = 10000
const JIT_DEBUGGER_DATA1_ENTER = 10001
const JIT_DEBUGGER_DATA1_LEAVE = 10002
const JIT_DEBUGGER_DATA1_THROW = 10003
type jit_debugger_hook_func as sub(byval func as jit_function_t, byval data1 as jit_nint, byval data2 as jit_nint)
declare function jit_debugging_possible() as long
declare function jit_debugger_create(byval context as jit_context_t) as jit_debugger_t
declare sub jit_debugger_destroy(byval dbg as jit_debugger_t)
declare function jit_debugger_get_context(byval dbg as jit_debugger_t) as jit_context_t
declare function jit_debugger_from_context(byval context as jit_context_t) as jit_debugger_t
declare function jit_debugger_get_self(byval dbg as jit_debugger_t) as jit_debugger_thread_id_t
declare function jit_debugger_get_thread(byval dbg as jit_debugger_t, byval native_thread as const any ptr) as jit_debugger_thread_id_t
declare function jit_debugger_get_native_thread(byval dbg as jit_debugger_t, byval thread as jit_debugger_thread_id_t, byval native_thread as any ptr) as long
declare sub jit_debugger_set_breakable(byval dbg as jit_debugger_t, byval native_thread as const any ptr, byval flag as long)
declare sub jit_debugger_attach_self(byval dbg as jit_debugger_t, byval stop_immediately as long)
declare sub jit_debugger_detach_self(byval dbg as jit_debugger_t)
declare function jit_debugger_wait_event(byval dbg as jit_debugger_t, byval event as jit_debugger_event_t ptr, byval timeout as jit_int) as long
declare function jit_debugger_add_breakpoint(byval dbg as jit_debugger_t, byval info as jit_debugger_breakpoint_info_t) as jit_debugger_breakpoint_id_t
declare sub jit_debugger_remove_breakpoint(byval dbg as jit_debugger_t, byval id as jit_debugger_breakpoint_id_t)
declare sub jit_debugger_remove_all_breakpoints(byval dbg as jit_debugger_t)
declare function jit_debugger_is_alive(byval dbg as jit_debugger_t, byval thread as jit_debugger_thread_id_t) as long
declare function jit_debugger_is_running(byval dbg as jit_debugger_t, byval thread as jit_debugger_thread_id_t) as long
declare sub jit_debugger_run(byval dbg as jit_debugger_t, byval thread as jit_debugger_thread_id_t)
declare sub jit_debugger_step(byval dbg as jit_debugger_t, byval thread as jit_debugger_thread_id_t)
declare sub jit_debugger_next(byval dbg as jit_debugger_t, byval thread as jit_debugger_thread_id_t)
declare sub jit_debugger_finish(byval dbg as jit_debugger_t, byval thread as jit_debugger_thread_id_t)
declare sub jit_debugger_break(byval dbg as jit_debugger_t)
declare sub jit_debugger_quit(byval dbg as jit_debugger_t)
declare function jit_debugger_set_hook(byval context as jit_context_t, byval hook as jit_debugger_hook_func) as jit_debugger_hook_func
#define _JIT_ELF_H
type jit_readelf_t as jit_readelf ptr
type jit_writeelf_t as jit_writeelf ptr
const JIT_READELF_FLAG_FORCE = 1 shl 0
const JIT_READELF_FLAG_DEBUG = 1 shl 1
const JIT_READELF_OK = 0
const JIT_READELF_CANNOT_OPEN = 1
const JIT_READELF_NOT_ELF = 2
const JIT_READELF_WRONG_ARCH = 3
const JIT_READELF_BAD_FORMAT = 4
const JIT_READELF_MEMORY = 5
declare function jit_readelf_open(byval readelf as jit_readelf_t ptr, byval filename as const zstring ptr, byval flags as long) as long
declare sub jit_readelf_close(byval readelf as jit_readelf_t)
declare function jit_readelf_get_name(byval readelf as jit_readelf_t) as const zstring ptr
declare function jit_readelf_get_symbol(byval readelf as jit_readelf_t, byval name as const zstring ptr) as any ptr
declare function jit_readelf_get_section(byval readelf as jit_readelf_t, byval name as const zstring ptr, byval size as jit_nuint ptr) as any ptr
declare function jit_readelf_get_section_by_type(byval readelf as jit_readelf_t, byval type as jit_int, byval size as jit_nuint ptr) as any ptr
declare function jit_readelf_map_vaddr(byval readelf as jit_readelf_t, byval vaddr as jit_nuint) as any ptr
declare function jit_readelf_num_needed(byval readelf as jit_readelf_t) as ulong
declare function jit_readelf_get_needed(byval readelf as jit_readelf_t, byval index as ulong) as const zstring ptr
declare sub jit_readelf_add_to_context(byval readelf as jit_readelf_t, byval context as jit_context_t)
declare function jit_readelf_resolve_all(byval context as jit_context_t, byval print_failures as long) as long
declare function jit_readelf_register_symbol(byval context as jit_context_t, byval name as const zstring ptr, byval value as any ptr, byval after as long) as long
declare function jit_writeelf_create(byval library_name as const zstring ptr) as jit_writeelf_t
declare sub jit_writeelf_destroy(byval writeelf as jit_writeelf_t)
declare function jit_writeelf_write(byval writeelf as jit_writeelf_t, byval filename as const zstring ptr) as long
declare function jit_writeelf_add_function(byval writeelf as jit_writeelf_t, byval func as jit_function_t, byval name as const zstring ptr) as long
declare function jit_writeelf_add_needed(byval writeelf as jit_writeelf_t, byval library_name as const zstring ptr) as long
declare function jit_writeelf_write_section(byval writeelf as jit_writeelf_t, byval name as const zstring ptr, byval type as jit_int, byval buf as const any ptr, byval len as ulong, byval discardable as long) as long
#define _JIT_EXCEPT_H
const JIT_RESULT_OK = 1
const JIT_RESULT_OVERFLOW = 0
const JIT_RESULT_ARITHMETIC = -1
const JIT_RESULT_DIVISION_BY_ZERO = -2
const JIT_RESULT_COMPILE_ERROR = -3
const JIT_RESULT_OUT_OF_MEMORY = -4
const JIT_RESULT_NULL_REFERENCE = -5
const JIT_RESULT_NULL_FUNCTION = -6
const JIT_RESULT_CALLED_NESTED = -7
const JIT_RESULT_OUT_OF_BOUNDS = -8
const JIT_RESULT_UNDEFINED_LABEL = -9
const JIT_RESULT_MEMORY_FULL = -10000
type jit_exception_func as function(byval exception_type as long) as any ptr
declare function jit_exception_get_last() as any ptr
declare function jit_exception_get_last_and_clear() as any ptr
declare sub jit_exception_set_last(byval object as any ptr)
declare sub jit_exception_clear_last()
declare sub jit_exception_throw(byval object as any ptr)
declare sub jit_exception_builtin(byval exception_type as long)
declare function jit_exception_set_handler(byval handler as jit_exception_func) as jit_exception_func
declare function jit_exception_get_handler() as jit_exception_func
declare function jit_exception_get_stack_trace() as jit_stack_trace_t
declare function jit_stack_trace_get_size(byval trace as jit_stack_trace_t) as ulong
declare function jit_stack_trace_get_function(byval context as jit_context_t, byval trace as jit_stack_trace_t, byval posn as ulong) as jit_function_t
declare function jit_stack_trace_get_pc(byval trace as jit_stack_trace_t, byval posn as ulong) as any ptr
declare function jit_stack_trace_get_offset(byval context as jit_context_t, byval trace as jit_stack_trace_t, byval posn as ulong) as ulong
declare sub jit_stack_trace_free(byval trace as jit_stack_trace_t)
#define _JIT_FUNCTION_H
const JIT_OPTLEVEL_NONE = 0
const JIT_OPTLEVEL_NORMAL = 1
declare function jit_function_create(byval context as jit_context_t, byval signature as jit_type_t) as jit_function_t
declare function jit_function_create_nested(byval context as jit_context_t, byval signature as jit_type_t, byval parent as jit_function_t) as jit_function_t
declare sub jit_function_abandon(byval func as jit_function_t)
declare function jit_function_get_context(byval func as jit_function_t) as jit_context_t
declare function jit_function_get_signature(byval func as jit_function_t) as jit_type_t
declare function jit_function_set_meta(byval func as jit_function_t, byval type as long, byval data as any ptr, byval free_data as jit_meta_free_func, byval build_only as long) as long
declare function jit_function_get_meta(byval func as jit_function_t, byval type as long) as any ptr
declare sub jit_function_free_meta(byval func as jit_function_t, byval type as long)
declare function jit_function_next(byval context as jit_context_t, byval prev as jit_function_t) as jit_function_t
declare function jit_function_previous(byval context as jit_context_t, byval prev as jit_function_t) as jit_function_t
declare function jit_function_get_entry(byval func as jit_function_t) as jit_block_t
declare function jit_function_get_current(byval func as jit_function_t) as jit_block_t
declare function jit_function_get_nested_parent(byval func as jit_function_t) as jit_function_t
declare function jit_function_compile(byval func as jit_function_t) as long
declare function jit_function_is_compiled(byval func as jit_function_t) as long
declare sub jit_function_set_recompilable(byval func as jit_function_t)
declare sub jit_function_clear_recompilable(byval func as jit_function_t)
declare function jit_function_is_recompilable(byval func as jit_function_t) as long
declare function jit_function_compile_entry(byval func as jit_function_t, byval entry_point as any ptr ptr) as long
declare sub jit_function_setup_entry(byval func as jit_function_t, byval entry_point as any ptr)
declare function jit_function_to_closure(byval func as jit_function_t) as any ptr
declare function jit_function_from_closure(byval context as jit_context_t, byval closure as any ptr) as jit_function_t
declare function jit_function_from_pc(byval context as jit_context_t, byval pc as any ptr, byval handler as any ptr ptr) as jit_function_t
declare function jit_function_to_vtable_pointer(byval func as jit_function_t) as any ptr
declare function jit_function_from_vtable_pointer(byval context as jit_context_t, byval vtable_pointer as any ptr) as jit_function_t
declare sub jit_function_set_on_demand_compiler(byval func as jit_function_t, byval on_demand as jit_on_demand_func)
declare function jit_function_get_on_demand_compiler(byval func as jit_function_t) as jit_on_demand_func
declare function jit_function_apply(byval func as jit_function_t, byval args as any ptr ptr, byval return_area as any ptr) as long
declare function jit_function_apply_vararg(byval func as jit_function_t, byval signature as jit_type_t, byval args as any ptr ptr, byval return_area as any ptr) as long
declare sub jit_function_set_optimization_level(byval func as jit_function_t, byval level as ulong)
declare function jit_function_get_optimization_level(byval func as jit_function_t) as ulong
declare function jit_function_get_max_optimization_level() as ulong
declare function jit_function_reserve_label(byval func as jit_function_t) as jit_label_t
declare function jit_function_labels_equal(byval func as jit_function_t, byval label as jit_label_t, byval label2 as jit_label_t) as long
#define _JIT_INIT_H
declare sub jit_init()
declare function jit_uses_interpreter() as long
declare function jit_supports_threads() as long
declare function jit_supports_virtual_memory() as long
declare function jit_supports_closures() as long
declare function jit_get_closure_size() as ulong
declare function jit_get_closure_alignment() as ulong
declare function jit_get_trampoline_size() as ulong
declare function jit_get_trampoline_alignment() as ulong
#define _JIT_INSN_H
type jit_intrinsic_descr_t
return_type as jit_type_t
ptr_result_type as jit_type_t
arg1_type as jit_type_t
arg2_type as jit_type_t
end type
type jit_insn_iter_t
block as jit_block_t
posn as long
end type
const JIT_CALL_NOTHROW = 1 shl 0
const JIT_CALL_NORETURN = 1 shl 1
const JIT_CALL_TAIL = 1 shl 2
declare function jit_insn_get_opcode(byval insn as jit_insn_t) as long
declare function jit_insn_get_dest(byval insn as jit_insn_t) as jit_value_t
declare function jit_insn_get_value1(byval insn as jit_insn_t) as jit_value_t
declare function jit_insn_get_value2(byval insn as jit_insn_t) as jit_value_t
declare function jit_insn_get_label(byval insn as jit_insn_t) as jit_label_t
declare function jit_insn_get_function(byval insn as jit_insn_t) as jit_function_t
declare function jit_insn_get_native(byval insn as jit_insn_t) as any ptr
declare function jit_insn_get_name(byval insn as jit_insn_t) as const zstring ptr
declare function jit_insn_get_signature(byval insn as jit_insn_t) as jit_type_t
declare function jit_insn_dest_is_value(byval insn as jit_insn_t) as long
declare function jit_insn_label(byval func as jit_function_t, byval label as jit_label_t ptr) as long
declare function jit_insn_label_tight(byval func as jit_function_t, byval label as jit_label_t ptr) as long
declare function jit_insn_new_block(byval func as jit_function_t) as long
declare function jit_insn_load(byval func as jit_function_t, byval value as jit_value_t) as jit_value_t
declare function jit_insn_dup(byval func as jit_function_t, byval value as jit_value_t) as jit_value_t
declare function jit_insn_store(byval func as jit_function_t, byval dest as jit_value_t, byval value as jit_value_t) as long
declare function jit_insn_load_relative(byval func as jit_function_t, byval value as jit_value_t, byval offset as jit_nint, byval type as jit_type_t) as jit_value_t
declare function jit_insn_store_relative(byval func as jit_function_t, byval dest as jit_value_t, byval offset as jit_nint, byval value as jit_value_t) as long
declare function jit_insn_add_relative(byval func as jit_function_t, byval value as jit_value_t, byval offset as jit_nint) as jit_value_t
declare function jit_insn_load_elem(byval func as jit_function_t, byval base_addr as jit_value_t, byval index as jit_value_t, byval elem_type as jit_type_t) as jit_value_t
declare function jit_insn_load_elem_address(byval func as jit_function_t, byval base_addr as jit_value_t, byval index as jit_value_t, byval elem_type as jit_type_t) as jit_value_t
declare function jit_insn_store_elem(byval func as jit_function_t, byval base_addr as jit_value_t, byval index as jit_value_t, byval value as jit_value_t) as long
declare function jit_insn_check_null(byval func as jit_function_t, byval value as jit_value_t) as long
declare function jit_insn_nop(byval func as jit_function_t) as long
declare function jit_insn_add(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_add_ovf(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_sub(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_sub_ovf(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_mul(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_mul_ovf(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_div(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_rem(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_rem_ieee(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_neg(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_and(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_or(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_xor(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_not(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_shl(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_shr(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_ushr(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_sshr(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_eq(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_ne(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_lt(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_le(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_gt(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_ge(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_cmpl(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_cmpg(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_to_bool(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_to_not_bool(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_acos(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_asin(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_atan(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_atan2(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_ceil(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_cos(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_cosh(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_exp(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_floor(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_log(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_log10(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_pow(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_rint(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_round(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_sin(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_sinh(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_sqrt(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_tan(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_tanh(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_trunc(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_is_nan(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_is_finite(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_is_inf(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_abs(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_min(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_max(byval func as jit_function_t, byval value1 as jit_value_t, byval value2 as jit_value_t) as jit_value_t
declare function jit_insn_sign(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_branch(byval func as jit_function_t, byval label as jit_label_t ptr) as long
declare function jit_insn_branch_if(byval func as jit_function_t, byval value as jit_value_t, byval label as jit_label_t ptr) as long
declare function jit_insn_branch_if_not(byval func as jit_function_t, byval value as jit_value_t, byval label as jit_label_t ptr) as long
declare function jit_insn_jump_table(byval func as jit_function_t, byval value as jit_value_t, byval labels as jit_label_t ptr, byval num_labels as ulong) as long
declare function jit_insn_address_of(byval func as jit_function_t, byval value1 as jit_value_t) as jit_value_t
declare function jit_insn_address_of_label(byval func as jit_function_t, byval label as jit_label_t ptr) as jit_value_t
declare function jit_insn_convert(byval func as jit_function_t, byval value as jit_value_t, byval type as jit_type_t, byval overflow_check as long) as jit_value_t
declare function jit_insn_call(byval func as jit_function_t, byval name as const zstring ptr, byval jit_func as jit_function_t, byval signature as jit_type_t, byval args as jit_value_t ptr, byval num_args as ulong, byval flags as long) as jit_value_t
declare function jit_insn_call_indirect(byval func as jit_function_t, byval value as jit_value_t, byval signature as jit_type_t, byval args as jit_value_t ptr, byval num_args as ulong, byval flags as long) as jit_value_t
declare function jit_insn_call_indirect_vtable(byval func as jit_function_t, byval value as jit_value_t, byval signature as jit_type_t, byval args as jit_value_t ptr, byval num_args as ulong, byval flags as long) as jit_value_t
declare function jit_insn_call_native(byval func as jit_function_t, byval name as const zstring ptr, byval native_func as any ptr, byval signature as jit_type_t, byval args as jit_value_t ptr, byval num_args as ulong, byval flags as long) as jit_value_t
declare function jit_insn_call_intrinsic(byval func as jit_function_t, byval name as const zstring ptr, byval intrinsic_func as any ptr, byval descriptor as const jit_intrinsic_descr_t ptr, byval arg1 as jit_value_t, byval arg2 as jit_value_t) as jit_value_t
declare function jit_insn_incoming_reg(byval func as jit_function_t, byval value as jit_value_t, byval reg as long) as long
declare function jit_insn_incoming_frame_posn(byval func as jit_function_t, byval value as jit_value_t, byval frame_offset as jit_nint) as long
declare function jit_insn_outgoing_reg(byval func as jit_function_t, byval value as jit_value_t, byval reg as long) as long
declare function jit_insn_outgoing_frame_posn(byval func as jit_function_t, byval value as jit_value_t, byval frame_offset as jit_nint) as long
declare function jit_insn_return_reg(byval func as jit_function_t, byval value as jit_value_t, byval reg as long) as long
declare function jit_insn_setup_for_nested(byval func as jit_function_t, byval nested_level as long, byval reg as long) as long
declare function jit_insn_flush_struct(byval func as jit_function_t, byval value as jit_value_t) as long
declare function jit_insn_import(byval func as jit_function_t, byval value as jit_value_t) as jit_value_t
declare function jit_insn_push(byval func as jit_function_t, byval value as jit_value_t) as long
declare function jit_insn_push_ptr(byval func as jit_function_t, byval value as jit_value_t, byval type as jit_type_t) as long
declare function jit_insn_set_param(byval func as jit_function_t, byval value as jit_value_t, byval offset as jit_nint) as long
declare function jit_insn_set_param_ptr(byval func as jit_function_t, byval value as jit_value_t, byval type as jit_type_t, byval offset as jit_nint) as long
declare function jit_insn_push_return_area_ptr(byval func as jit_function_t) as long
declare function jit_insn_pop_stack(byval func as jit_function_t, byval num_items as jit_nint) as long
declare function jit_insn_defer_pop_stack(byval func as jit_function_t, byval num_items as jit_nint) as long
declare function jit_insn_flush_defer_pop(byval func as jit_function_t, byval num_items as jit_nint) as long
declare function jit_insn_return(byval func as jit_function_t, byval value as jit_value_t) as long
declare function jit_insn_return_ptr(byval func as jit_function_t, byval value as jit_value_t, byval type as jit_type_t) as long
declare function jit_insn_default_return(byval func as jit_function_t) as long
declare function jit_insn_throw(byval func as jit_function_t, byval value as jit_value_t) as long
declare function jit_insn_get_call_stack(byval func as jit_function_t) as jit_value_t
declare function jit_insn_thrown_exception(byval func as jit_function_t) as jit_value_t
declare function jit_insn_uses_catcher(byval func as jit_function_t) as long
declare function jit_insn_start_catcher(byval func as jit_function_t) as jit_value_t
declare function jit_insn_branch_if_pc_not_in_range(byval func as jit_function_t, byval start_label as jit_label_t, byval end_label as jit_label_t, byval label as jit_label_t ptr) as long
declare function jit_insn_rethrow_unhandled(byval func as jit_function_t) as long
declare function jit_insn_start_finally(byval func as jit_function_t, byval finally_label as jit_label_t ptr) as long
declare function jit_insn_return_from_finally(byval func as jit_function_t) as long
declare function jit_insn_call_finally(byval func as jit_function_t, byval finally_label as jit_label_t ptr) as long
declare function jit_insn_start_filter(byval func as jit_function_t, byval label as jit_label_t ptr, byval type as jit_type_t) as jit_value_t
declare function jit_insn_return_from_filter(byval func as jit_function_t, byval value as jit_value_t) as long
declare function jit_insn_call_filter(byval func as jit_function_t, byval label as jit_label_t ptr, byval value as jit_value_t, byval type as jit_type_t) as jit_value_t
declare function jit_insn_memcpy(byval func as jit_function_t, byval dest as jit_value_t, byval src as jit_value_t, byval size as jit_value_t) as long
declare function jit_insn_memmove(byval func as jit_function_t, byval dest as jit_value_t, byval src as jit_value_t, byval size as jit_value_t) as long
declare function jit_insn_memset(byval func as jit_function_t, byval dest as jit_value_t, byval value as jit_value_t, byval size as jit_value_t) as long
declare function jit_insn_alloca(byval func as jit_function_t, byval size as jit_value_t) as jit_value_t
declare function jit_insn_move_blocks_to_end(byval func as jit_function_t, byval from_label as jit_label_t, byval to_label as jit_label_t) as long
declare function jit_insn_move_blocks_to_start(byval func as jit_function_t, byval from_label as jit_label_t, byval to_label as jit_label_t) as long
declare function jit_insn_mark_offset(byval func as jit_function_t, byval offset as jit_int) as long
declare function jit_insn_mark_breakpoint(byval func as jit_function_t, byval data1 as jit_nint, byval data2 as jit_nint) as long
declare function jit_insn_mark_breakpoint_variable(byval func as jit_function_t, byval data1 as jit_value_t, byval data2 as jit_value_t) as long
declare sub jit_insn_iter_init(byval iter as jit_insn_iter_t ptr, byval block as jit_block_t)
declare sub jit_insn_iter_init_last(byval iter as jit_insn_iter_t ptr, byval block as jit_block_t)
declare function jit_insn_iter_next(byval iter as jit_insn_iter_t ptr) as jit_insn_t
declare function jit_insn_iter_previous(byval iter as jit_insn_iter_t ptr) as jit_insn_t
#define _JIT_INTRINSIC_H
declare function jit_int_add(byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_sub(byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_mul(byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_div(byval result as jit_int ptr, byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_rem(byval result as jit_int ptr, byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_add_ovf(byval result as jit_int ptr, byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_sub_ovf(byval result as jit_int ptr, byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_mul_ovf(byval result as jit_int ptr, byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_neg(byval value1 as jit_int) as jit_int
declare function jit_int_and(byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_or(byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_xor(byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_not(byval value1 as jit_int) as jit_int
declare function jit_int_shl(byval value1 as jit_int, byval value2 as jit_uint) as jit_int
declare function jit_int_shr(byval value1 as jit_int, byval value2 as jit_uint) as jit_int
declare function jit_int_eq(byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_ne(byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_lt(byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_le(byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_gt(byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_ge(byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_cmp(byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_abs(byval value1 as jit_int) as jit_int
declare function jit_int_min(byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_max(byval value1 as jit_int, byval value2 as jit_int) as jit_int
declare function jit_int_sign(byval value1 as jit_int) as jit_int
declare function jit_uint_add(byval value1 as jit_uint, byval value2 as jit_uint) as jit_uint
declare function jit_uint_sub(byval value1 as jit_uint, byval value2 as jit_uint) as jit_uint
declare function jit_uint_mul(byval value1 as jit_uint, byval value2 as jit_uint) as jit_uint
declare function jit_uint_div(byval result as jit_uint ptr, byval value1 as jit_uint, byval value2 as jit_uint) as jit_int
declare function jit_uint_rem(byval result as jit_uint ptr, byval value1 as jit_uint, byval value2 as jit_uint) as jit_int
declare function jit_uint_add_ovf(byval result as jit_uint ptr, byval value1 as jit_uint, byval value2 as jit_uint) as jit_int
declare function jit_uint_sub_ovf(byval result as jit_uint ptr, byval value1 as jit_uint, byval value2 as jit_uint) as jit_int
declare function jit_uint_mul_ovf(byval result as jit_uint ptr, byval value1 as jit_uint, byval value2 as jit_uint) as jit_int
declare function jit_uint_neg(byval value1 as jit_uint) as jit_uint
declare function jit_uint_and(byval value1 as jit_uint, byval value2 as jit_uint) as jit_uint
declare function jit_uint_or(byval value1 as jit_uint, byval value2 as jit_uint) as jit_uint
declare function jit_uint_xor(byval value1 as jit_uint, byval value2 as jit_uint) as jit_uint
declare function jit_uint_not(byval value1 as jit_uint) as jit_uint
declare function jit_uint_shl(byval value1 as jit_uint, byval value2 as jit_uint) as jit_uint
declare function jit_uint_shr(byval value1 as jit_uint, byval value2 as jit_uint) as jit_uint
declare function jit_uint_eq(byval value1 as jit_uint, byval value2 as jit_uint) as jit_int
declare function jit_uint_ne(byval value1 as jit_uint, byval value2 as jit_uint) as jit_int
declare function jit_uint_lt(byval value1 as jit_uint, byval value2 as jit_uint) as jit_int
declare function jit_uint_le(byval value1 as jit_uint, byval value2 as jit_uint) as jit_int
declare function jit_uint_gt(byval value1 as jit_uint, byval value2 as jit_uint) as jit_int
declare function jit_uint_ge(byval value1 as jit_uint, byval value2 as jit_uint) as jit_int
declare function jit_uint_cmp(byval value1 as jit_uint, byval value2 as jit_uint) as jit_int
declare function jit_uint_min(byval value1 as jit_uint, byval value2 as jit_uint) as jit_uint
declare function jit_uint_max(byval value1 as jit_uint, byval value2 as jit_uint) as jit_uint
declare function jit_long_add(byval value1 as jit_long, byval value2 as jit_long) as jit_long
declare function jit_long_sub(byval value1 as jit_long, byval value2 as jit_long) as jit_long
declare function jit_long_mul(byval value1 as jit_long, byval value2 as jit_long) as jit_long
declare function jit_long_div(byval result as jit_long ptr, byval value1 as jit_long, byval value2 as jit_long) as jit_int
declare function jit_long_rem(byval result as jit_long ptr, byval value1 as jit_long, byval value2 as jit_long) as jit_int
declare function jit_long_add_ovf(byval result as jit_long ptr, byval value1 as jit_long, byval value2 as jit_long) as jit_int
declare function jit_long_sub_ovf(byval result as jit_long ptr, byval value1 as jit_long, byval value2 as jit_long) as jit_int
declare function jit_long_mul_ovf(byval result as jit_long ptr, byval value1 as jit_long, byval value2 as jit_long) as jit_int
declare function jit_long_neg(byval value1 as jit_long) as jit_long
declare function jit_long_and(byval value1 as jit_long, byval value2 as jit_long) as jit_long
declare function jit_long_or(byval value1 as jit_long, byval value2 as jit_long) as jit_long
declare function jit_long_xor(byval value1 as jit_long, byval value2 as jit_long) as jit_long
declare function jit_long_not(byval value1 as jit_long) as jit_long
declare function jit_long_shl(byval value1 as jit_long, byval value2 as jit_uint) as jit_long
declare function jit_long_shr(byval value1 as jit_long, byval value2 as jit_uint) as jit_long
declare function jit_long_eq(byval value1 as jit_long, byval value2 as jit_long) as jit_int
declare function jit_long_ne(byval value1 as jit_long, byval value2 as jit_long) as jit_int
declare function jit_long_lt(byval value1 as jit_long, byval value2 as jit_long) as jit_int
declare function jit_long_le(byval value1 as jit_long, byval value2 as jit_long) as jit_int
declare function jit_long_gt(byval value1 as jit_long, byval value2 as jit_long) as jit_int
declare function jit_long_ge(byval value1 as jit_long, byval value2 as jit_long) as jit_int
declare function jit_long_cmp(byval value1 as jit_long, byval value2 as jit_long) as jit_int
declare function jit_long_abs(byval value1 as jit_long) as jit_long
declare function jit_long_min(byval value1 as jit_long, byval value2 as jit_long) as jit_long
declare function jit_long_max(byval value1 as jit_long, byval value2 as jit_long) as jit_long
declare function jit_long_sign(byval value1 as jit_long) as jit_int
declare function jit_ulong_add(byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_ulong
declare function jit_ulong_sub(byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_ulong
declare function jit_ulong_mul(byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_ulong
declare function jit_ulong_div(byval result as jit_ulong ptr, byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_int
declare function jit_ulong_rem(byval result as jit_ulong ptr, byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_int
declare function jit_ulong_add_ovf(byval result as jit_ulong ptr, byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_int
declare function jit_ulong_sub_ovf(byval result as jit_ulong ptr, byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_int
declare function jit_ulong_mul_ovf(byval result as jit_ulong ptr, byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_int
declare function jit_ulong_neg(byval value1 as jit_ulong) as jit_ulong
declare function jit_ulong_and(byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_ulong
declare function jit_ulong_or(byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_ulong
declare function jit_ulong_xor(byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_ulong
declare function jit_ulong_not(byval value1 as jit_ulong) as jit_ulong
declare function jit_ulong_shl(byval value1 as jit_ulong, byval value2 as jit_uint) as jit_ulong
declare function jit_ulong_shr(byval value1 as jit_ulong, byval value2 as jit_uint) as jit_ulong
declare function jit_ulong_eq(byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_int
declare function jit_ulong_ne(byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_int
declare function jit_ulong_lt(byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_int
declare function jit_ulong_le(byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_int
declare function jit_ulong_gt(byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_int
declare function jit_ulong_ge(byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_int
declare function jit_ulong_cmp(byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_int
declare function jit_ulong_min(byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_ulong
declare function jit_ulong_max(byval value1 as jit_ulong, byval value2 as jit_ulong) as jit_ulong
declare function jit_float32_add(byval value1 as jit_float32, byval value2 as jit_float32) as jit_float32
declare function jit_float32_sub(byval value1 as jit_float32, byval value2 as jit_float32) as jit_float32
declare function jit_float32_mul(byval value1 as jit_float32, byval value2 as jit_float32) as jit_float32
declare function jit_float32_div(byval value1 as jit_float32, byval value2 as jit_float32) as jit_float32
declare function jit_float32_rem(byval value1 as jit_float32, byval value2 as jit_float32) as jit_float32
declare function jit_float32_ieee_rem(byval value1 as jit_float32, byval value2 as jit_float32) as jit_float32
declare function jit_float32_neg(byval value1 as jit_float32) as jit_float32
declare function jit_float32_eq(byval value1 as jit_float32, byval value2 as jit_float32) as jit_int
declare function jit_float32_ne(byval value1 as jit_float32, byval value2 as jit_float32) as jit_int
declare function jit_float32_lt(byval value1 as jit_float32, byval value2 as jit_float32) as jit_int
declare function jit_float32_le(byval value1 as jit_float32, byval value2 as jit_float32) as jit_int
declare function jit_float32_gt(byval value1 as jit_float32, byval value2 as jit_float32) as jit_int
declare function jit_float32_ge(byval value1 as jit_float32, byval value2 as jit_float32) as jit_int
declare function jit_float32_cmpl(byval value1 as jit_float32, byval value2 as jit_float32) as jit_int
declare function jit_float32_cmpg(byval value1 as jit_float32, byval value2 as jit_float32) as jit_int
declare function jit_float32_acos(byval value1 as jit_float32) as jit_float32
declare function jit_float32_asin(byval value1 as jit_float32) as jit_float32
declare function jit_float32_atan(byval value1 as jit_float32) as jit_float32
declare function jit_float32_atan2(byval value1 as jit_float32, byval value2 as jit_float32) as jit_float32
declare function jit_float32_ceil(byval value1 as jit_float32) as jit_float32
declare function jit_float32_cos(byval value1 as jit_float32) as jit_float32
declare function jit_float32_cosh(byval value1 as jit_float32) as jit_float32
declare function jit_float32_exp(byval value1 as jit_float32) as jit_float32
declare function jit_float32_floor(byval value1 as jit_float32) as jit_float32
declare function jit_float32_log(byval value1 as jit_float32) as jit_float32
declare function jit_float32_log10(byval value1 as jit_float32) as jit_float32
declare function jit_float32_pow(byval value1 as jit_float32, byval value2 as jit_float32) as jit_float32
declare function jit_float32_rint(byval value1 as jit_float32) as jit_float32
declare function jit_float32_round(byval value1 as jit_float32) as jit_float32
declare function jit_float32_sin(byval value1 as jit_float32) as jit_float32
declare function jit_float32_sinh(byval value1 as jit_float32) as jit_float32
declare function jit_float32_sqrt(byval value1 as jit_float32) as jit_float32
declare function jit_float32_tan(byval value1 as jit_float32) as jit_float32
declare function jit_float32_tanh(byval value1 as jit_float32) as jit_float32
declare function jit_float32_trunc(byval value1 as jit_float32) as jit_float32
declare function jit_float32_is_finite(byval value as jit_float32) as jit_int
declare function jit_float32_is_nan(byval value as jit_float32) as jit_int
declare function jit_float32_is_inf(byval value as jit_float32) as jit_int
declare function jit_float32_abs(byval value1 as jit_float32) as jit_float32
declare function jit_float32_min(byval value1 as jit_float32, byval value2 as jit_float32) as jit_float32
declare function jit_float32_max(byval value1 as jit_float32, byval value2 as jit_float32) as jit_float32
declare function jit_float32_sign(byval value1 as jit_float32) as jit_int
declare function jit_float64_add(byval value1 as jit_float64, byval value2 as jit_float64) as jit_float64
declare function jit_float64_sub(byval value1 as jit_float64, byval value2 as jit_float64) as jit_float64
declare function jit_float64_mul(byval value1 as jit_float64, byval value2 as jit_float64) as jit_float64
declare function jit_float64_div(byval value1 as jit_float64, byval value2 as jit_float64) as jit_float64
declare function jit_float64_rem(byval value1 as jit_float64, byval value2 as jit_float64) as jit_float64
declare function jit_float64_ieee_rem(byval value1 as jit_float64, byval value2 as jit_float64) as jit_float64
declare function jit_float64_neg(byval value1 as jit_float64) as jit_float64
declare function jit_float64_eq(byval value1 as jit_float64, byval value2 as jit_float64) as jit_int
declare function jit_float64_ne(byval value1 as jit_float64, byval value2 as jit_float64) as jit_int
declare function jit_float64_lt(byval value1 as jit_float64, byval value2 as jit_float64) as jit_int
declare function jit_float64_le(byval value1 as jit_float64, byval value2 as jit_float64) as jit_int
declare function jit_float64_gt(byval value1 as jit_float64, byval value2 as jit_float64) as jit_int
declare function jit_float64_ge(byval value1 as jit_float64, byval value2 as jit_float64) as jit_int
declare function jit_float64_cmpl(byval value1 as jit_float64, byval value2 as jit_float64) as jit_int
declare function jit_float64_cmpg(byval value1 as jit_float64, byval value2 as jit_float64) as jit_int
declare function jit_float64_acos(byval value1 as jit_float64) as jit_float64
declare function jit_float64_asin(byval value1 as jit_float64) as jit_float64
declare function jit_float64_atan(byval value1 as jit_float64) as jit_float64
declare function jit_float64_atan2(byval value1 as jit_float64, byval value2 as jit_float64) as jit_float64
declare function jit_float64_ceil(byval value1 as jit_float64) as jit_float64
declare function jit_float64_cos(byval value1 as jit_float64) as jit_float64
declare function jit_float64_cosh(byval value1 as jit_float64) as jit_float64
declare function jit_float64_exp(byval value1 as jit_float64) as jit_float64
declare function jit_float64_floor(byval value1 as jit_float64) as jit_float64
declare function jit_float64_log(byval value1 as jit_float64) as jit_float64
declare function jit_float64_log10(byval value1 as jit_float64) as jit_float64
declare function jit_float64_pow(byval value1 as jit_float64, byval value2 as jit_float64) as jit_float64
declare function jit_float64_rint(byval value1 as jit_float64) as jit_float64
declare function jit_float64_round(byval value1 as jit_float64) as jit_float64
declare function jit_float64_sin(byval value1 as jit_float64) as jit_float64
declare function jit_float64_sinh(byval value1 as jit_float64) as jit_float64
declare function jit_float64_sqrt(byval value1 as jit_float64) as jit_float64
declare function jit_float64_tan(byval value1 as jit_float64) as jit_float64
declare function jit_float64_tanh(byval value1 as jit_float64) as jit_float64
declare function jit_float64_trunc(byval value1 as jit_float64) as jit_float64
declare function jit_float64_is_finite(byval value as jit_float64) as jit_int
declare function jit_float64_is_nan(byval value as jit_float64) as jit_int
declare function jit_float64_is_inf(byval value as jit_float64) as jit_int
declare function jit_float64_abs(byval value1 as jit_float64) as jit_float64
declare function jit_float64_min(byval value1 as jit_float64, byval value2 as jit_float64) as jit_float64
declare function jit_float64_max(byval value1 as jit_float64, byval value2 as jit_float64) as jit_float64
declare function jit_float64_sign(byval value1 as jit_float64) as jit_int
declare function jit_nfloat_add(byval value1 as jit_nfloat, byval value2 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_sub(byval value1 as jit_nfloat, byval value2 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_mul(byval value1 as jit_nfloat, byval value2 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_div(byval value1 as jit_nfloat, byval value2 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_rem(byval value1 as jit_nfloat, byval value2 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_ieee_rem(byval value1 as jit_nfloat, byval value2 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_neg(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_eq(byval value1 as jit_nfloat, byval value2 as jit_nfloat) as jit_int
declare function jit_nfloat_ne(byval value1 as jit_nfloat, byval value2 as jit_nfloat) as jit_int
declare function jit_nfloat_lt(byval value1 as jit_nfloat, byval value2 as jit_nfloat) as jit_int
declare function jit_nfloat_le(byval value1 as jit_nfloat, byval value2 as jit_nfloat) as jit_int
declare function jit_nfloat_gt(byval value1 as jit_nfloat, byval value2 as jit_nfloat) as jit_int
declare function jit_nfloat_ge(byval value1 as jit_nfloat, byval value2 as jit_nfloat) as jit_int
declare function jit_nfloat_cmpl(byval value1 as jit_nfloat, byval value2 as jit_nfloat) as jit_int
declare function jit_nfloat_cmpg(byval value1 as jit_nfloat, byval value2 as jit_nfloat) as jit_int
declare function jit_nfloat_acos(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_asin(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_atan(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_atan2(byval value1 as jit_nfloat, byval value2 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_ceil(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_cos(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_cosh(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_exp(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_floor(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_log(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_log10(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_pow(byval value1 as jit_nfloat, byval value2 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_rint(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_round(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_sin(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_sinh(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_sqrt(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_tan(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_tanh(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_trunc(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_is_finite(byval value as jit_nfloat) as jit_int
declare function jit_nfloat_is_nan(byval value as jit_nfloat) as jit_int
declare function jit_nfloat_is_inf(byval value as jit_nfloat) as jit_int
declare function jit_nfloat_abs(byval value1 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_min(byval value1 as jit_nfloat, byval value2 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_max(byval value1 as jit_nfloat, byval value2 as jit_nfloat) as jit_nfloat
declare function jit_nfloat_sign(byval value1 as jit_nfloat) as jit_int
declare function jit_int_to_sbyte(byval value as jit_int) as jit_int
declare function jit_int_to_ubyte(byval value as jit_int) as jit_int
declare function jit_int_to_short(byval value as jit_int) as jit_int
declare function jit_int_to_ushort(byval value as jit_int) as jit_int
declare function jit_int_to_int(byval value as jit_int) as jit_int
declare function jit_int_to_uint(byval value as jit_int) as jit_uint
declare function jit_int_to_long(byval value as jit_int) as jit_long
declare function jit_int_to_ulong(byval value as jit_int) as jit_ulong
declare function jit_uint_to_int(byval value as jit_uint) as jit_int
declare function jit_uint_to_uint(byval value as jit_uint) as jit_uint
declare function jit_uint_to_long(byval value as jit_uint) as jit_long
declare function jit_uint_to_ulong(byval value as jit_uint) as jit_ulong
declare function jit_long_to_int(byval value as jit_long) as jit_int
declare function jit_long_to_uint(byval value as jit_long) as jit_uint
declare function jit_long_to_long(byval value as jit_long) as jit_long
declare function jit_long_to_ulong(byval value as jit_long) as jit_ulong
declare function jit_ulong_to_int(byval value as jit_ulong) as jit_int
declare function jit_ulong_to_uint(byval value as jit_ulong) as jit_uint
declare function jit_ulong_to_long(byval value as jit_ulong) as jit_long
declare function jit_ulong_to_ulong(byval value as jit_ulong) as jit_ulong
declare function jit_int_to_sbyte_ovf(byval result as jit_int ptr, byval value as jit_int) as jit_int
declare function jit_int_to_ubyte_ovf(byval result as jit_int ptr, byval value as jit_int) as jit_int
declare function jit_int_to_short_ovf(byval result as jit_int ptr, byval value as jit_int) as jit_int
declare function jit_int_to_ushort_ovf(byval result as jit_int ptr, byval value as jit_int) as jit_int
declare function jit_int_to_int_ovf(byval result as jit_int ptr, byval value as jit_int) as jit_int
declare function jit_int_to_uint_ovf(byval result as jit_uint ptr, byval value as jit_int) as jit_int
declare function jit_int_to_long_ovf(byval result as jit_long ptr, byval value as jit_int) as jit_int
declare function jit_int_to_ulong_ovf(byval result as jit_ulong ptr, byval value as jit_int) as jit_int
declare function jit_uint_to_int_ovf(byval result as jit_int ptr, byval value as jit_uint) as jit_int
declare function jit_uint_to_uint_ovf(byval result as jit_uint ptr, byval value as jit_uint) as jit_int
declare function jit_uint_to_long_ovf(byval result as jit_long ptr, byval value as jit_uint) as jit_int
declare function jit_uint_to_ulong_ovf(byval result as jit_ulong ptr, byval value as jit_uint) as jit_int
declare function jit_long_to_int_ovf(byval result as jit_int ptr, byval value as jit_long) as jit_int
declare function jit_long_to_uint_ovf(byval result as jit_uint ptr, byval value as jit_long) as jit_int
declare function jit_long_to_long_ovf(byval result as jit_long ptr, byval value as jit_long) as jit_int
declare function jit_long_to_ulong_ovf(byval result as jit_ulong ptr, byval value as jit_long) as jit_int
declare function jit_ulong_to_int_ovf(byval result as jit_int ptr, byval value as jit_ulong) as jit_int
declare function jit_ulong_to_uint_ovf(byval result as jit_uint ptr, byval value as jit_ulong) as jit_int
declare function jit_ulong_to_long_ovf(byval result as jit_long ptr, byval value as jit_ulong) as jit_int
declare function jit_ulong_to_ulong_ovf(byval result as jit_ulong ptr, byval value as jit_ulong) as jit_int
declare function jit_float32_to_int(byval value as jit_float32) as jit_int
declare function jit_float32_to_uint(byval value as jit_float32) as jit_uint
declare function jit_float32_to_long(byval value as jit_float32) as jit_long
declare function jit_float32_to_ulong(byval value as jit_float32) as jit_ulong
declare function jit_float32_to_int_ovf(byval result as jit_int ptr, byval value as jit_float32) as jit_int
declare function jit_float32_to_uint_ovf(byval result as jit_uint ptr, byval value as jit_float32) as jit_int
declare function jit_float32_to_long_ovf(byval result as jit_long ptr, byval value as jit_float32) as jit_int
declare function jit_float32_to_ulong_ovf(byval result as jit_ulong ptr, byval value as jit_float32) as jit_int
declare function jit_float64_to_int(byval value as jit_float64) as jit_int
declare function jit_float64_to_uint(byval value as jit_float64) as jit_uint
declare function jit_float64_to_long(byval value as jit_float64) as jit_long
declare function jit_float64_to_ulong(byval value as jit_float64) as jit_ulong
declare function jit_float64_to_int_ovf(byval result as jit_int ptr, byval value as jit_float64) as jit_int
declare function jit_float64_to_uint_ovf(byval result as jit_uint ptr, byval value as jit_float64) as jit_int
declare function jit_float64_to_long_ovf(byval result as jit_long ptr, byval value as jit_float64) as jit_int
declare function jit_float64_to_ulong_ovf(byval result as jit_ulong ptr, byval value as jit_float64) as jit_int
declare function jit_nfloat_to_int(byval value as jit_nfloat) as jit_int
declare function jit_nfloat_to_uint(byval value as jit_nfloat) as jit_uint
declare function jit_nfloat_to_long(byval value as jit_nfloat) as jit_long
declare function jit_nfloat_to_ulong(byval value as jit_nfloat) as jit_ulong
declare function jit_nfloat_to_int_ovf(byval result as jit_int ptr, byval value as jit_nfloat) as jit_int
declare function jit_nfloat_to_uint_ovf(byval result as jit_uint ptr, byval value as jit_nfloat) as jit_int
declare function jit_nfloat_to_long_ovf(byval result as jit_long ptr, byval value as jit_nfloat) as jit_int
declare function jit_nfloat_to_ulong_ovf(byval result as jit_ulong ptr, byval value as jit_nfloat) as jit_int
declare function jit_int_to_float32(byval value as jit_int) as jit_float32
declare function jit_int_to_float64(byval value as jit_int) as jit_float64
declare function jit_int_to_nfloat(byval value as jit_int) as jit_nfloat
declare function jit_uint_to_float32(byval value as jit_uint) as jit_float32
declare function jit_uint_to_float64(byval value as jit_uint) as jit_float64
declare function jit_uint_to_nfloat(byval value as jit_uint) as jit_nfloat
declare function jit_long_to_float32(byval value as jit_long) as jit_float32
declare function jit_long_to_float64(byval value as jit_long) as jit_float64
declare function jit_long_to_nfloat(byval value as jit_long) as jit_nfloat
declare function jit_ulong_to_float32(byval value as jit_ulong) as jit_float32
declare function jit_ulong_to_float64(byval value as jit_ulong) as jit_float64
declare function jit_ulong_to_nfloat(byval value as jit_ulong) as jit_nfloat
declare function jit_float32_to_float64(byval value as jit_float32) as jit_float64
declare function jit_float32_to_nfloat(byval value as jit_float32) as jit_nfloat
declare function jit_float64_to_float32(byval value as jit_float64) as jit_float32
declare function jit_float64_to_nfloat(byval value as jit_float64) as jit_nfloat
declare function jit_nfloat_to_float32(byval value as jit_nfloat) as jit_float32
declare function jit_nfloat_to_float64(byval value as jit_nfloat) as jit_float64
#define _JIT_META_H
type jit_meta_t as _jit_meta ptr
declare function jit_meta_set(byval list as jit_meta_t ptr, byval type as long, byval data as any ptr, byval free_data as jit_meta_free_func, byval pool_owner as jit_function_t) as long
declare function jit_meta_get(byval list as jit_meta_t, byval type as long) as any ptr
declare sub jit_meta_free(byval list as jit_meta_t ptr, byval type as long)
declare sub jit_meta_destroy(byval list as jit_meta_t ptr)
#define _JIT_OBJMODEL_H
type jit_objmodel_t as jit_objmodel ptr
type jitom_class_t as jitom_class ptr
type jitom_field_t as jitom_field ptr
type jitom_method_t as jitom_method ptr
const JITOM_MODIFIER_ACCESS_MASK = &h0007
const JITOM_MODIFIER_PUBLIC = &h0000
const JITOM_MODIFIER_PRIVATE = &h0001
const JITOM_MODIFIER_PROTECTED = &h0002
const JITOM_MODIFIER_PACKAGE = &h0003
const JITOM_MODIFIER_PACKAGE_OR_PROTECTED = &h0004
const JITOM_MODIFIER_PACKAGE_AND_PROTECTED = &h0005
const JITOM_MODIFIER_OTHER1 = &h0006
const JITOM_MODIFIER_OTHER2 = &h0007
const JITOM_MODIFIER_STATIC = &h0008
const JITOM_MODIFIER_VIRTUAL = &h0010
const JITOM_MODIFIER_NEW_SLOT = &h0020
const JITOM_MODIFIER_ABSTRACT = &h0040
const JITOM_MODIFIER_LITERAL = &h0080
const JITOM_MODIFIER_CTOR = &h0100
const JITOM_MODIFIER_STATIC_CTOR = &h0200
const JITOM_MODIFIER_DTOR = &h0400
const JITOM_MODIFIER_INTERFACE = &h0800
const JITOM_MODIFIER_VALUE = &h1000
const JITOM_MODIFIER_FINAL = &h2000
const JITOM_MODIFIER_DELETE = &h4000
const JITOM_MODIFIER_REFERENCE_COUNTED = &h8000
const JITOM_TYPETAG_CLASS = 11000
const JITOM_TYPETAG_VALUE = 11001
declare sub jitom_destroy_model(byval model as jit_objmodel_t)
declare function jitom_get_class_by_name(byval model as jit_objmodel_t, byval name as const zstring ptr) as jitom_class_t
declare function jitom_class_get_name(byval model as jit_objmodel_t, byval klass as jitom_class_t) as zstring ptr
declare function jitom_class_get_modifiers(byval model as jit_objmodel_t, byval klass as jitom_class_t) as long
declare function jitom_class_get_type(byval model as jit_objmodel_t, byval klass as jitom_class_t) as jit_type_t
declare function jitom_class_get_value_type(byval model as jit_objmodel_t, byval klass as jitom_class_t) as jit_type_t
declare function jitom_class_get_primary_super(byval model as jit_objmodel_t, byval klass as jitom_class_t) as jitom_class_t
declare function jitom_class_get_all_supers(byval model as jit_objmodel_t, byval klass as jitom_class_t, byval num as ulong ptr) as jitom_class_t ptr
declare function jitom_class_get_interfaces(byval model as jit_objmodel_t, byval klass as jitom_class_t, byval num as ulong ptr) as jitom_class_t ptr
declare function jitom_class_get_fields(byval model as jit_objmodel_t, byval klass as jitom_class_t, byval num as ulong ptr) as jitom_field_t ptr
declare function jitom_class_get_methods(byval model as jit_objmodel_t, byval klass as jitom_class_t, byval num as ulong ptr) as jitom_method_t ptr
declare function jitom_class_new(byval model as jit_objmodel_t, byval klass as jitom_class_t, byval ctor as jitom_method_t, byval func as jit_function_t, byval args as jit_value_t ptr, byval num_args as ulong, byval flags as long) as jit_value_t
declare function jitom_class_new_value(byval model as jit_objmodel_t, byval klass as jitom_class_t, byval ctor as jitom_method_t, byval func as jit_function_t, byval args as jit_value_t ptr, byval num_args as ulong, byval flags as long) as jit_value_t
declare function jitom_class_delete(byval model as jit_objmodel_t, byval klass as jitom_class_t, byval obj_value as jit_value_t) as long
declare function jitom_class_add_ref(byval model as jit_objmodel_t, byval klass as jitom_class_t, byval obj_value as jit_value_t) as long
declare function jitom_field_get_name(byval model as jit_objmodel_t, byval klass as jitom_class_t, byval field as jitom_field_t) as zstring ptr
declare function jitom_field_get_type(byval model as jit_objmodel_t, byval klass as jitom_class_t, byval field as jitom_field_t) as jit_type_t
declare function jitom_field_get_modifiers(byval model as jit_objmodel_t, byval klass as jitom_class_t, byval field as jitom_field_t) as long
declare function jitom_field_load(byval model as jit_objmodel_t, byval klass as jitom_class_t, byval field as jitom_field_t, byval func as jit_function_t, byval obj_value as jit_value_t) as jit_value_t