/
Interpreter.pm6
302 lines (208 loc) · 9.53 KB
/
Interpreter.pm6
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
class Inline::Perl5::Interpreter is repr('CPointer') {
use NativeCall;
my constant $p5helper = %?RESOURCES<libraries/p5helper>;
our sub p5_size_of_iv() is native($p5helper)
returns size_t { ... }
our sub p5_size_of_nv() is native($p5helper)
returns size_t { ... }
BEGIN my constant IV = p5_size_of_iv() == 8 ?? int64 !! int32;
BEGIN my constant NVSIZE = p5_size_of_nv();
BEGIN die "Cannot support { NVSIZE * 8 } bit NVs yet." if NVSIZE != 4|8;
BEGIN my constant NV = NVSIZE == 8 ?? num64 !! num32;
our sub p5_init_perl(
uint32,
CArray[Str],
&call_method (IV, Str, int32, Pointer, Pointer --> Pointer),
&call_package_method (Str, Str, int32, Pointer, Pointer --> Pointer),
&call (IV, Pointer, Pointer --> Pointer),
&free_p6_object (IV),
&hash_at_key (IV, Str --> Pointer),
&hash_assign_key (IV, Str, Pointer),
&compile_to_end (Str, Str, CArray[uint32] --> Pointer),
) is native($p5helper)
returns Inline::Perl5::Interpreter { ... }
our sub p5_init_callbacks(
&call_method (IV, Str, int32, Pointer, Pointer --> Pointer),
&call_package_method (Str, Str, int32, Pointer, Pointer --> Pointer),
&call (IV, Pointer, Pointer --> Pointer),
&free_p6_object (IV),
&hash_at_key (IV, Str --> Pointer),
&hash_assign_key (IV, Str, Pointer),
&compile_to_end (Str, Str, CArray[uint32] --> Pointer),
) is native($p5helper)
{ ... }
our sub p5_terminate() is native($p5helper)
{ ... }
method p5_inline_perl6_xs_init() is native($p5helper)
{ ... }
method p5_SvIOK(Pointer) is native($p5helper)
returns uint32 { ... }
method p5_SvNOK(Pointer) is native($p5helper)
returns uint32 { ... }
method p5_SvPOK(Pointer) is native($p5helper)
returns uint32 { ... }
method p5_sv_utf8(Pointer) is native($p5helper)
returns uint32 { ... }
method p5_is_array(Pointer) is native($p5helper)
returns int32 { ... }
method p5_is_hash(Pointer) is native($p5helper)
returns int32 { ... }
method p5_is_scalar_ref(Pointer) is native($p5helper)
returns int32 { ... }
method p5_is_undef(Pointer) is native($p5helper)
returns int32 { ... }
method p5_get_type(Pointer) is native($p5helper)
returns int32 { ... }
method p5_sv_to_buf(Pointer, CArray[CArray[int8]]) is native($p5helper)
returns size_t { ... }
method p5_sv_to_char_star(Pointer) is native($p5helper)
returns Str { ... }
method p5_sv_to_av(Pointer) is native($p5helper)
returns Pointer { ... }
method p5_sv_to_av_inc(Pointer) is native($p5helper)
returns Pointer { ... }
method p5_sv_to_hv(Pointer) is native($p5helper)
returns Pointer { ... }
method p5_sv_refcnt(Pointer) is native($p5helper)
returns int32 { ... }
method p5_sv_refcnt_dec(Pointer) is native($p5helper)
{ ... }
method p5_sv_destroy(Pointer) is native($p5helper)
{ ... }
method p5_sv_2mortal(Pointer) is native($p5helper)
{ ... }
method p5_sv_refcnt_inc(Pointer) is native($p5helper)
{ ... }
method p5_new_mortal_reference(Pointer) is native($p5helper)
returns Pointer { ... }
method p5_int_to_sv(IV) is native($p5helper)
returns Pointer { ... }
method p5_float_to_sv(NV) is native($p5helper)
returns Pointer { ... }
method p5_str_to_sv(size_t, Blob) is native($p5helper)
returns Pointer { ... }
method p5_buf_to_sv(size_t, Blob) is native($p5helper)
returns Pointer { ... }
method p5_sv_to_ref(Pointer) is native($p5helper)
returns Pointer { ... }
method p5_av_top_index(Pointer) is native($p5helper)
returns int32 { ... }
method p5_av_fetch(Pointer, int32) is native($p5helper)
returns Pointer { ... }
method p5_av_store(Pointer, int32, Pointer) is native($p5helper)
{ ... }
method p5_av_pop(Pointer) is native($p5helper)
returns Pointer { ... }
method p5_av_push(Pointer, Pointer) is native($p5helper)
{ ... }
method p5_av_shift(Pointer) is native($p5helper)
returns Pointer { ... }
method p5_av_unshift(Pointer, Pointer) is native($p5helper)
{ ... }
method p5_av_delete(Pointer, int32) is native($p5helper)
{ ... }
method p5_av_clear(Pointer) is native($p5helper)
{ ... }
method p5_hv_iterinit(Pointer) is native($p5helper)
returns int32 { ... }
method p5_hv_iternext(Pointer) is native($p5helper)
returns Pointer { ... }
method p5_hv_iterkeysv(Pointer) is native($p5helper)
returns Pointer { ... }
method p5_hv_iterval(Pointer, Pointer) is native($p5helper)
returns Pointer { ... }
method p5_undef() is native($p5helper)
returns Pointer { ... }
method p5_newHV() is native($p5helper)
returns Pointer { ... }
method p5_newAV() is native($p5helper)
returns Pointer { ... }
method p5_newRV_inc(Pointer) is native($p5helper)
returns Pointer { ... }
method p5_newRV_noinc(Pointer) is native($p5helper)
returns Pointer { ... }
method p5_sv_reftype(Pointer) is native($p5helper)
returns Str { ... }
method p5_hv_fetch(Pointer, size_t, Blob) is native($p5helper)
returns Pointer { ... }
method p5_hv_store(Pointer, Str, Pointer) is native($p5helper)
{ ... }
method p5_hv_exists(Pointer, size_t, Blob) is native($p5helper)
returns int32 { ... }
method p5_new_blessed_hashref(Str) is native($p5helper)
returns Pointer { ... }
method p5_call_function(Str, int32, CArray[Pointer], int32 is rw, int32 is rw, int32 is rw) is native($p5helper)
returns Pointer { ... }
method p5_look_up_package_method(Str, Str, int32) is native($p5helper)
returns Pointer { ... }
method p5_stash_name(Pointer) is native($p5helper)
returns Str { ... }
method p5_call_gv(Pointer, int32, Pointer, int32 is rw, int32 is rw, int32 is rw) is native($p5helper)
returns Pointer { ... }
method p5_call_parent_gv(Pointer, int32, Pointer, int32 is rw, int32 is rw, int32 is rw) is native($p5helper)
returns Pointer { ... }
method p5_scalar_call_gv(Pointer, int32, Pointer, int32 is rw, int32 is rw, int32 is rw) is native($p5helper)
returns Pointer { ... }
method p5_scalar_call_parent_gv(Pointer, int32, Pointer, int32 is rw, int32 is rw, int32 is rw) is native($p5helper)
returns Pointer { ... }
method p5_call_gv_two_args(Pointer, Pointer, Pointer, int32 is rw, int32 is rw, int32 is rw) is native($p5helper)
returns Pointer { ... }
method p5_scalar_call_gv_two_args(Pointer, Pointer, Pointer, int32 is rw, int32 is rw, int32 is rw) is native($p5helper)
returns Pointer { ... }
method p5_call_method(Pointer, int32, Str, int32, Pointer, int32 is rw, int32 is rw, int32 is rw) is native($p5helper)
returns Pointer { ... }
method p5_call_parent_method(Str, Pointer, int32, Str, int32, Pointer, int32 is rw, int32 is rw, int32 is rw) is native($p5helper)
returns Pointer { ... }
method p5_call_package_method(Str, Str, int32, CArray[Pointer], int32 is rw, int32 is rw, int32 is rw) is native($p5helper)
returns Pointer { ... }
method p5_call_inherited_package_method(Str, Str, Str, int32, CArray[Pointer], int32 is rw, int32 is rw, int32 is rw) is native($p5helper)
returns Pointer { ... }
method p5_call_code_ref(Pointer, int32, CArray[Pointer], int32 is rw, int32 is rw, int32 is rw) is native($p5helper)
returns Pointer { ... }
method p5_rebless_object(Pointer, Str, IV) is native($p5helper)
{ ... }
method p5_add_magic(Pointer, IV) is native($p5helper)
returns Pointer { ... }
method p5_destruct_perl() is native($p5helper)
{ ... }
method p5_sv_iv(Pointer) is native($p5helper)
returns IV { ... }
method p5_sv_nv(Pointer) is native($p5helper)
returns NV { ... }
method p5_sv_rv(Pointer) is native($p5helper)
returns Pointer { ... }
method p5_is_object(Pointer) is native($p5helper)
returns int32 { ... }
method p5_is_sub_ref(Pointer) is native($p5helper)
returns int32 { ... }
method p5_get_global(Str) is native($p5helper)
returns Pointer { ... }
method p5_set_global(Str, Pointer) is native($p5helper)
{ ... }
method p5_compile_sv(Pointer, CArray[Pointer], CArray[Pointer]) is native($p5helper)
returns int32 { ... }
method p5_runops(Pointer) is native($p5helper)
{ ... }
method p5_eval_pv(Str, int32) is native($p5helper)
returns Pointer { ... }
method p5_err_sv() is native($p5helper)
returns Pointer { ... }
method p5_wrap_p6_object(IV, Pointer) is native($p5helper)
returns Pointer { ... }
method p5_wrap_p6_callable(IV, Pointer) is native($p5helper)
returns Pointer { ... }
method p5_wrap_p6_hash(
IV,
) is native($p5helper)
returns Pointer { ... }
method p5_wrap_p6_handle(IV, Pointer) is native($p5helper)
returns Pointer { ... }
method p5_is_wrapped_p6_object(Pointer) is native($p5helper)
returns int32 { ... }
method p5_is_live_wrapped_p6_object(Pointer) is native($p5helper)
returns int32 { ... }
method p5_unwrap_p6_object(Pointer) is native($p5helper)
returns IV { ... }
method p5_unwrap_p6_hash(Pointer) is native($p5helper)
returns IV { ... }
}