Commit | Line | Data |
79ee8297 |
1 | /* |
a6c40364 |
2 | * Copyright (c) 1996-1999 Malcolm Beattie |
79ee8297 |
3 | * |
4 | * You may distribute under the terms of either the GNU General Public |
5 | * License or the Artistic License, as specified in the README file. |
6 | * |
7 | */ |
8 | /* |
9 | * This file is autogenerated from bytecode.pl. Changes made here will be lost. |
10 | */ |
11 | |
c5be433b |
12 | #define PERL_NO_GET_CONTEXT |
79ee8297 |
13 | #include "EXTERN.h" |
14 | #include "perl.h" |
0cb96387 |
15 | #define NO_XSLOCKS |
16 | #include "XSUB.h" |
17 | |
18 | #ifdef PERL_OBJECT |
19 | #undef CALL_FPTR |
20 | #define CALL_FPTR(fptr) (pPerl->*fptr) |
21 | #undef PL_ppaddr |
22 | #define PL_ppaddr (*get_ppaddr()) |
23 | #endif |
24 | |
e8edd1e6 |
25 | #include "byterun.h" |
26 | #include "bytecode.h" |
27 | |
0cb96387 |
28 | |
d11915b8 |
29 | static const int optype_size[] = { |
e8edd1e6 |
30 | sizeof(OP), |
31 | sizeof(UNOP), |
32 | sizeof(BINOP), |
33 | sizeof(LOGOP), |
e8edd1e6 |
34 | sizeof(LISTOP), |
35 | sizeof(PMOP), |
36 | sizeof(SVOP), |
7934575e |
37 | sizeof(PADOP), |
e8edd1e6 |
38 | sizeof(PVOP), |
39 | sizeof(LOOP), |
40 | sizeof(COP) |
41 | }; |
42 | |
d613ef02 |
43 | void * |
21fff326 |
44 | bset_obj_store(pTHXo_ struct byteloader_state *bstate, void *obj, I32 ix) |
d613ef02 |
45 | { |
21fff326 |
46 | if (ix > bstate->bs_obj_list_fill) { |
47 | Renew(bstate->bs_obj_list, ix + 32, void*); |
48 | bstate->bs_obj_list_fill = ix + 31; |
d613ef02 |
49 | } |
21fff326 |
50 | bstate->bs_obj_list[ix] = obj; |
d613ef02 |
51 | return obj; |
52 | } |
79ee8297 |
53 | |
cea2e8a9 |
54 | void |
21fff326 |
55 | byterun(pTHXo_ register struct byteloader_state *bstate) |
79ee8297 |
56 | { |
ed65db6c |
57 | dTHR; |
21fff326 |
58 | register int insn; |
59 | U32 ix; |
d11915b8 |
60 | SV *specialsv_list[6]; |
e8edd1e6 |
61 | |
d11915b8 |
62 | BYTECODE_HEADER_CHECK; /* croak if incorrect platform */ |
21fff326 |
63 | New(666, bstate->bs_obj_list, 32, void*); /* set op objlist */ |
64 | bstate->bs_obj_list_fill = 31; |
65 | |
e8edd1e6 |
66 | specialsv_list[0] = Nullsv; |
67 | specialsv_list[1] = &PL_sv_undef; |
68 | specialsv_list[2] = &PL_sv_yes; |
69 | specialsv_list[3] = &PL_sv_no; |
d11915b8 |
70 | specialsv_list[4] = pWARN_ALL; |
71 | specialsv_list[5] = pWARN_NONE; |
e8edd1e6 |
72 | |
47358472 |
73 | while ((insn = BGET_FGETC()) != EOF) { |
79ee8297 |
74 | switch (insn) { |
75 | case INSN_COMMENT: /* 35 */ |
76 | { |
34e97019 |
77 | comment_t arg; |
fe3a57c4 |
78 | BGET_comment_t(arg); |
79ee8297 |
79 | arg = arg; |
80 | break; |
81 | } |
82 | case INSN_NOP: /* 10 */ |
83 | { |
84 | break; |
85 | } |
86 | case INSN_RET: /* 0 */ |
87 | { |
88 | BSET_ret(none); |
89 | break; |
90 | } |
91 | case INSN_LDSV: /* 1 */ |
92 | { |
93 | svindex arg; |
01f988be |
94 | BGET_svindex(arg); |
21fff326 |
95 | bstate->bs_sv = arg; |
79ee8297 |
96 | break; |
97 | } |
98 | case INSN_LDOP: /* 2 */ |
99 | { |
100 | opindex arg; |
01f988be |
101 | BGET_opindex(arg); |
533c011a |
102 | PL_op = arg; |
79ee8297 |
103 | break; |
104 | } |
105 | case INSN_STSV: /* 3 */ |
106 | { |
107 | U32 arg; |
108 | BGET_U32(arg); |
21fff326 |
109 | BSET_OBJ_STORE(bstate->bs_sv, arg); |
79ee8297 |
110 | break; |
111 | } |
112 | case INSN_STOP: /* 4 */ |
113 | { |
114 | U32 arg; |
115 | BGET_U32(arg); |
533c011a |
116 | BSET_OBJ_STORE(PL_op, arg); |
79ee8297 |
117 | break; |
118 | } |
21fff326 |
119 | case INSN_STPV: /* 5 */ |
120 | { |
121 | U32 arg; |
122 | BGET_U32(arg); |
123 | BSET_stpv(bstate->bs_pv.xpv_pv, arg); |
124 | break; |
125 | } |
126 | case INSN_LDSPECSV: /* 6 */ |
79ee8297 |
127 | { |
128 | U8 arg; |
129 | BGET_U8(arg); |
21fff326 |
130 | BSET_ldspecsv(bstate->bs_sv, arg); |
79ee8297 |
131 | break; |
132 | } |
21fff326 |
133 | case INSN_NEWSV: /* 7 */ |
79ee8297 |
134 | { |
135 | U8 arg; |
136 | BGET_U8(arg); |
21fff326 |
137 | BSET_newsv(bstate->bs_sv, arg); |
79ee8297 |
138 | break; |
139 | } |
21fff326 |
140 | case INSN_NEWOP: /* 8 */ |
79ee8297 |
141 | { |
142 | U8 arg; |
143 | BGET_U8(arg); |
533c011a |
144 | BSET_newop(PL_op, arg); |
79ee8297 |
145 | break; |
146 | } |
21fff326 |
147 | case INSN_NEWOPN: /* 9 */ |
79ee8297 |
148 | { |
149 | U8 arg; |
150 | BGET_U8(arg); |
533c011a |
151 | BSET_newopn(PL_op, arg); |
79ee8297 |
152 | break; |
153 | } |
21fff326 |
154 | case INSN_NEWPV: /* 11 */ |
79ee8297 |
155 | { |
156 | PV arg; |
157 | BGET_PV(arg); |
158 | break; |
159 | } |
21fff326 |
160 | case INSN_PV_CUR: /* 12 */ |
79ee8297 |
161 | { |
162 | STRLEN arg; |
163 | BGET_U32(arg); |
21fff326 |
164 | bstate->bs_pv.xpv_cur = arg; |
79ee8297 |
165 | break; |
166 | } |
21fff326 |
167 | case INSN_PV_FREE: /* 13 */ |
79ee8297 |
168 | { |
21fff326 |
169 | BSET_pv_free(bstate->bs_pv); |
79ee8297 |
170 | break; |
171 | } |
21fff326 |
172 | case INSN_SV_UPGRADE: /* 14 */ |
79ee8297 |
173 | { |
174 | char arg; |
175 | BGET_U8(arg); |
21fff326 |
176 | BSET_sv_upgrade(bstate->bs_sv, arg); |
79ee8297 |
177 | break; |
178 | } |
21fff326 |
179 | case INSN_SV_REFCNT: /* 15 */ |
79ee8297 |
180 | { |
181 | U32 arg; |
182 | BGET_U32(arg); |
21fff326 |
183 | SvREFCNT(bstate->bs_sv) = arg; |
79ee8297 |
184 | break; |
185 | } |
21fff326 |
186 | case INSN_SV_REFCNT_ADD: /* 16 */ |
79ee8297 |
187 | { |
188 | I32 arg; |
189 | BGET_I32(arg); |
21fff326 |
190 | BSET_sv_refcnt_add(SvREFCNT(bstate->bs_sv), arg); |
79ee8297 |
191 | break; |
192 | } |
21fff326 |
193 | case INSN_SV_FLAGS: /* 17 */ |
79ee8297 |
194 | { |
195 | U32 arg; |
196 | BGET_U32(arg); |
21fff326 |
197 | SvFLAGS(bstate->bs_sv) = arg; |
79ee8297 |
198 | break; |
199 | } |
21fff326 |
200 | case INSN_XRV: /* 18 */ |
79ee8297 |
201 | { |
202 | svindex arg; |
01f988be |
203 | BGET_svindex(arg); |
21fff326 |
204 | SvRV(bstate->bs_sv) = arg; |
79ee8297 |
205 | break; |
206 | } |
21fff326 |
207 | case INSN_XPV: /* 19 */ |
79ee8297 |
208 | { |
21fff326 |
209 | BSET_xpv(bstate->bs_sv); |
79ee8297 |
210 | break; |
211 | } |
21fff326 |
212 | case INSN_XIV32: /* 20 */ |
79ee8297 |
213 | { |
214 | I32 arg; |
215 | BGET_I32(arg); |
21fff326 |
216 | SvIVX(bstate->bs_sv) = arg; |
79ee8297 |
217 | break; |
218 | } |
21fff326 |
219 | case INSN_XIV64: /* 21 */ |
79ee8297 |
220 | { |
221 | IV64 arg; |
222 | BGET_IV64(arg); |
21fff326 |
223 | SvIVX(bstate->bs_sv) = arg; |
79ee8297 |
224 | break; |
225 | } |
21fff326 |
226 | case INSN_XNV: /* 22 */ |
79ee8297 |
227 | { |
65202027 |
228 | NV arg; |
229 | BGET_NV(arg); |
21fff326 |
230 | SvNVX(bstate->bs_sv) = arg; |
79ee8297 |
231 | break; |
232 | } |
21fff326 |
233 | case INSN_XLV_TARGOFF: /* 23 */ |
79ee8297 |
234 | { |
235 | STRLEN arg; |
236 | BGET_U32(arg); |
21fff326 |
237 | LvTARGOFF(bstate->bs_sv) = arg; |
79ee8297 |
238 | break; |
239 | } |
21fff326 |
240 | case INSN_XLV_TARGLEN: /* 24 */ |
79ee8297 |
241 | { |
242 | STRLEN arg; |
243 | BGET_U32(arg); |
21fff326 |
244 | LvTARGLEN(bstate->bs_sv) = arg; |
79ee8297 |
245 | break; |
246 | } |
21fff326 |
247 | case INSN_XLV_TARG: /* 25 */ |
79ee8297 |
248 | { |
249 | svindex arg; |
01f988be |
250 | BGET_svindex(arg); |
21fff326 |
251 | LvTARG(bstate->bs_sv) = arg; |
79ee8297 |
252 | break; |
253 | } |
21fff326 |
254 | case INSN_XLV_TYPE: /* 26 */ |
79ee8297 |
255 | { |
256 | char arg; |
257 | BGET_U8(arg); |
21fff326 |
258 | LvTYPE(bstate->bs_sv) = arg; |
79ee8297 |
259 | break; |
260 | } |
21fff326 |
261 | case INSN_XBM_USEFUL: /* 27 */ |
79ee8297 |
262 | { |
263 | I32 arg; |
264 | BGET_I32(arg); |
21fff326 |
265 | BmUSEFUL(bstate->bs_sv) = arg; |
79ee8297 |
266 | break; |
267 | } |
21fff326 |
268 | case INSN_XBM_PREVIOUS: /* 28 */ |
79ee8297 |
269 | { |
270 | U16 arg; |
271 | BGET_U16(arg); |
21fff326 |
272 | BmPREVIOUS(bstate->bs_sv) = arg; |
79ee8297 |
273 | break; |
274 | } |
21fff326 |
275 | case INSN_XBM_RARE: /* 29 */ |
79ee8297 |
276 | { |
277 | U8 arg; |
278 | BGET_U8(arg); |
21fff326 |
279 | BmRARE(bstate->bs_sv) = arg; |
79ee8297 |
280 | break; |
281 | } |
21fff326 |
282 | case INSN_XFM_LINES: /* 30 */ |
79ee8297 |
283 | { |
284 | I32 arg; |
285 | BGET_I32(arg); |
21fff326 |
286 | FmLINES(bstate->bs_sv) = arg; |
79ee8297 |
287 | break; |
288 | } |
21fff326 |
289 | case INSN_XIO_LINES: /* 31 */ |
79ee8297 |
290 | { |
291 | long arg; |
292 | BGET_I32(arg); |
21fff326 |
293 | IoLINES(bstate->bs_sv) = arg; |
79ee8297 |
294 | break; |
295 | } |
21fff326 |
296 | case INSN_XIO_PAGE: /* 32 */ |
79ee8297 |
297 | { |
298 | long arg; |
299 | BGET_I32(arg); |
21fff326 |
300 | IoPAGE(bstate->bs_sv) = arg; |
79ee8297 |
301 | break; |
302 | } |
21fff326 |
303 | case INSN_XIO_PAGE_LEN: /* 33 */ |
79ee8297 |
304 | { |
305 | long arg; |
306 | BGET_I32(arg); |
21fff326 |
307 | IoPAGE_LEN(bstate->bs_sv) = arg; |
79ee8297 |
308 | break; |
309 | } |
21fff326 |
310 | case INSN_XIO_LINES_LEFT: /* 34 */ |
79ee8297 |
311 | { |
312 | long arg; |
313 | BGET_I32(arg); |
21fff326 |
314 | IoLINES_LEFT(bstate->bs_sv) = arg; |
79ee8297 |
315 | break; |
316 | } |
21fff326 |
317 | case INSN_XIO_TOP_NAME: /* 36 */ |
79ee8297 |
318 | { |
319 | pvcontents arg; |
320 | BGET_pvcontents(arg); |
21fff326 |
321 | IoTOP_NAME(bstate->bs_sv) = arg; |
79ee8297 |
322 | break; |
323 | } |
21fff326 |
324 | case INSN_XIO_TOP_GV: /* 37 */ |
79ee8297 |
325 | { |
326 | svindex arg; |
01f988be |
327 | BGET_svindex(arg); |
21fff326 |
328 | *(SV**)&IoTOP_GV(bstate->bs_sv) = arg; |
79ee8297 |
329 | break; |
330 | } |
21fff326 |
331 | case INSN_XIO_FMT_NAME: /* 38 */ |
79ee8297 |
332 | { |
333 | pvcontents arg; |
334 | BGET_pvcontents(arg); |
21fff326 |
335 | IoFMT_NAME(bstate->bs_sv) = arg; |
79ee8297 |
336 | break; |
337 | } |
21fff326 |
338 | case INSN_XIO_FMT_GV: /* 39 */ |
79ee8297 |
339 | { |
340 | svindex arg; |
01f988be |
341 | BGET_svindex(arg); |
21fff326 |
342 | *(SV**)&IoFMT_GV(bstate->bs_sv) = arg; |
79ee8297 |
343 | break; |
344 | } |
21fff326 |
345 | case INSN_XIO_BOTTOM_NAME: /* 40 */ |
79ee8297 |
346 | { |
347 | pvcontents arg; |
348 | BGET_pvcontents(arg); |
21fff326 |
349 | IoBOTTOM_NAME(bstate->bs_sv) = arg; |
79ee8297 |
350 | break; |
351 | } |
21fff326 |
352 | case INSN_XIO_BOTTOM_GV: /* 41 */ |
79ee8297 |
353 | { |
354 | svindex arg; |
01f988be |
355 | BGET_svindex(arg); |
21fff326 |
356 | *(SV**)&IoBOTTOM_GV(bstate->bs_sv) = arg; |
79ee8297 |
357 | break; |
358 | } |
21fff326 |
359 | case INSN_XIO_SUBPROCESS: /* 42 */ |
79ee8297 |
360 | { |
361 | short arg; |
362 | BGET_U16(arg); |
21fff326 |
363 | IoSUBPROCESS(bstate->bs_sv) = arg; |
79ee8297 |
364 | break; |
365 | } |
21fff326 |
366 | case INSN_XIO_TYPE: /* 43 */ |
79ee8297 |
367 | { |
368 | char arg; |
369 | BGET_U8(arg); |
21fff326 |
370 | IoTYPE(bstate->bs_sv) = arg; |
79ee8297 |
371 | break; |
372 | } |
21fff326 |
373 | case INSN_XIO_FLAGS: /* 44 */ |
79ee8297 |
374 | { |
375 | char arg; |
376 | BGET_U8(arg); |
21fff326 |
377 | IoFLAGS(bstate->bs_sv) = arg; |
79ee8297 |
378 | break; |
379 | } |
21fff326 |
380 | case INSN_XCV_STASH: /* 45 */ |
79ee8297 |
381 | { |
382 | svindex arg; |
01f988be |
383 | BGET_svindex(arg); |
21fff326 |
384 | *(SV**)&CvSTASH(bstate->bs_sv) = arg; |
79ee8297 |
385 | break; |
386 | } |
21fff326 |
387 | case INSN_XCV_START: /* 46 */ |
79ee8297 |
388 | { |
389 | opindex arg; |
01f988be |
390 | BGET_opindex(arg); |
21fff326 |
391 | CvSTART(bstate->bs_sv) = arg; |
79ee8297 |
392 | break; |
393 | } |
21fff326 |
394 | case INSN_XCV_ROOT: /* 47 */ |
79ee8297 |
395 | { |
396 | opindex arg; |
01f988be |
397 | BGET_opindex(arg); |
21fff326 |
398 | CvROOT(bstate->bs_sv) = arg; |
79ee8297 |
399 | break; |
400 | } |
21fff326 |
401 | case INSN_XCV_GV: /* 48 */ |
79ee8297 |
402 | { |
403 | svindex arg; |
01f988be |
404 | BGET_svindex(arg); |
21fff326 |
405 | *(SV**)&CvGV(bstate->bs_sv) = arg; |
79ee8297 |
406 | break; |
407 | } |
21fff326 |
408 | case INSN_XCV_FILE: /* 49 */ |
57843af0 |
409 | { |
21fff326 |
410 | pvindex arg; |
411 | BGET_pvindex(arg); |
412 | CvFILE(bstate->bs_sv) = arg; |
57843af0 |
413 | break; |
414 | } |
21fff326 |
415 | case INSN_XCV_DEPTH: /* 50 */ |
79ee8297 |
416 | { |
417 | long arg; |
418 | BGET_I32(arg); |
21fff326 |
419 | CvDEPTH(bstate->bs_sv) = arg; |
79ee8297 |
420 | break; |
421 | } |
21fff326 |
422 | case INSN_XCV_PADLIST: /* 51 */ |
79ee8297 |
423 | { |
424 | svindex arg; |
01f988be |
425 | BGET_svindex(arg); |
21fff326 |
426 | *(SV**)&CvPADLIST(bstate->bs_sv) = arg; |
79ee8297 |
427 | break; |
428 | } |
21fff326 |
429 | case INSN_XCV_OUTSIDE: /* 52 */ |
79ee8297 |
430 | { |
431 | svindex arg; |
01f988be |
432 | BGET_svindex(arg); |
21fff326 |
433 | *(SV**)&CvOUTSIDE(bstate->bs_sv) = arg; |
79ee8297 |
434 | break; |
435 | } |
21fff326 |
436 | case INSN_XCV_FLAGS: /* 53 */ |
79ee8297 |
437 | { |
fc290457 |
438 | U16 arg; |
439 | BGET_U16(arg); |
21fff326 |
440 | CvFLAGS(bstate->bs_sv) = arg; |
79ee8297 |
441 | break; |
442 | } |
21fff326 |
443 | case INSN_AV_EXTEND: /* 54 */ |
79ee8297 |
444 | { |
445 | SSize_t arg; |
446 | BGET_I32(arg); |
21fff326 |
447 | BSET_av_extend(bstate->bs_sv, arg); |
79ee8297 |
448 | break; |
449 | } |
21fff326 |
450 | case INSN_AV_PUSH: /* 55 */ |
79ee8297 |
451 | { |
452 | svindex arg; |
01f988be |
453 | BGET_svindex(arg); |
21fff326 |
454 | BSET_av_push(bstate->bs_sv, arg); |
79ee8297 |
455 | break; |
456 | } |
21fff326 |
457 | case INSN_XAV_FILL: /* 56 */ |
79ee8297 |
458 | { |
459 | SSize_t arg; |
460 | BGET_I32(arg); |
21fff326 |
461 | AvFILLp(bstate->bs_sv) = arg; |
79ee8297 |
462 | break; |
463 | } |
21fff326 |
464 | case INSN_XAV_MAX: /* 57 */ |
79ee8297 |
465 | { |
466 | SSize_t arg; |
467 | BGET_I32(arg); |
21fff326 |
468 | AvMAX(bstate->bs_sv) = arg; |
79ee8297 |
469 | break; |
470 | } |
21fff326 |
471 | case INSN_XAV_FLAGS: /* 58 */ |
79ee8297 |
472 | { |
473 | U8 arg; |
474 | BGET_U8(arg); |
21fff326 |
475 | AvFLAGS(bstate->bs_sv) = arg; |
79ee8297 |
476 | break; |
477 | } |
21fff326 |
478 | case INSN_XHV_RITER: /* 59 */ |
79ee8297 |
479 | { |
480 | I32 arg; |
481 | BGET_I32(arg); |
21fff326 |
482 | HvRITER(bstate->bs_sv) = arg; |
79ee8297 |
483 | break; |
484 | } |
21fff326 |
485 | case INSN_XHV_NAME: /* 60 */ |
79ee8297 |
486 | { |
487 | pvcontents arg; |
488 | BGET_pvcontents(arg); |
21fff326 |
489 | HvNAME(bstate->bs_sv) = arg; |
79ee8297 |
490 | break; |
491 | } |
21fff326 |
492 | case INSN_HV_STORE: /* 61 */ |
79ee8297 |
493 | { |
494 | svindex arg; |
01f988be |
495 | BGET_svindex(arg); |
21fff326 |
496 | BSET_hv_store(bstate->bs_sv, arg); |
79ee8297 |
497 | break; |
498 | } |
21fff326 |
499 | case INSN_SV_MAGIC: /* 62 */ |
79ee8297 |
500 | { |
501 | char arg; |
502 | BGET_U8(arg); |
21fff326 |
503 | BSET_sv_magic(bstate->bs_sv, arg); |
79ee8297 |
504 | break; |
505 | } |
21fff326 |
506 | case INSN_MG_OBJ: /* 63 */ |
79ee8297 |
507 | { |
508 | svindex arg; |
01f988be |
509 | BGET_svindex(arg); |
21fff326 |
510 | SvMAGIC(bstate->bs_sv)->mg_obj = arg; |
79ee8297 |
511 | break; |
512 | } |
21fff326 |
513 | case INSN_MG_PRIVATE: /* 64 */ |
79ee8297 |
514 | { |
515 | U16 arg; |
516 | BGET_U16(arg); |
21fff326 |
517 | SvMAGIC(bstate->bs_sv)->mg_private = arg; |
79ee8297 |
518 | break; |
519 | } |
21fff326 |
520 | case INSN_MG_FLAGS: /* 65 */ |
79ee8297 |
521 | { |
522 | U8 arg; |
523 | BGET_U8(arg); |
21fff326 |
524 | SvMAGIC(bstate->bs_sv)->mg_flags = arg; |
79ee8297 |
525 | break; |
526 | } |
21fff326 |
527 | case INSN_MG_PV: /* 66 */ |
79ee8297 |
528 | { |
529 | pvcontents arg; |
530 | BGET_pvcontents(arg); |
21fff326 |
531 | BSET_mg_pv(SvMAGIC(bstate->bs_sv), arg); |
79ee8297 |
532 | break; |
533 | } |
21fff326 |
534 | case INSN_XMG_STASH: /* 67 */ |
79ee8297 |
535 | { |
536 | svindex arg; |
01f988be |
537 | BGET_svindex(arg); |
21fff326 |
538 | *(SV**)&SvSTASH(bstate->bs_sv) = arg; |
79ee8297 |
539 | break; |
540 | } |
21fff326 |
541 | case INSN_GV_FETCHPV: /* 68 */ |
79ee8297 |
542 | { |
543 | strconst arg; |
544 | BGET_strconst(arg); |
21fff326 |
545 | BSET_gv_fetchpv(bstate->bs_sv, arg); |
79ee8297 |
546 | break; |
547 | } |
21fff326 |
548 | case INSN_GV_STASHPV: /* 69 */ |
79ee8297 |
549 | { |
550 | strconst arg; |
551 | BGET_strconst(arg); |
21fff326 |
552 | BSET_gv_stashpv(bstate->bs_sv, arg); |
79ee8297 |
553 | break; |
554 | } |
21fff326 |
555 | case INSN_GP_SV: /* 70 */ |
79ee8297 |
556 | { |
557 | svindex arg; |
01f988be |
558 | BGET_svindex(arg); |
21fff326 |
559 | GvSV(bstate->bs_sv) = arg; |
79ee8297 |
560 | break; |
561 | } |
21fff326 |
562 | case INSN_GP_REFCNT: /* 71 */ |
79ee8297 |
563 | { |
564 | U32 arg; |
565 | BGET_U32(arg); |
21fff326 |
566 | GvREFCNT(bstate->bs_sv) = arg; |
79ee8297 |
567 | break; |
568 | } |
21fff326 |
569 | case INSN_GP_REFCNT_ADD: /* 72 */ |
79ee8297 |
570 | { |
571 | I32 arg; |
572 | BGET_I32(arg); |
21fff326 |
573 | BSET_gp_refcnt_add(GvREFCNT(bstate->bs_sv), arg); |
79ee8297 |
574 | break; |
575 | } |
21fff326 |
576 | case INSN_GP_AV: /* 73 */ |
79ee8297 |
577 | { |
578 | svindex arg; |
01f988be |
579 | BGET_svindex(arg); |
21fff326 |
580 | *(SV**)&GvAV(bstate->bs_sv) = arg; |
79ee8297 |
581 | break; |
582 | } |
21fff326 |
583 | case INSN_GP_HV: /* 74 */ |
79ee8297 |
584 | { |
585 | svindex arg; |
01f988be |
586 | BGET_svindex(arg); |
21fff326 |
587 | *(SV**)&GvHV(bstate->bs_sv) = arg; |
79ee8297 |
588 | break; |
589 | } |
21fff326 |
590 | case INSN_GP_CV: /* 75 */ |
79ee8297 |
591 | { |
592 | svindex arg; |
01f988be |
593 | BGET_svindex(arg); |
21fff326 |
594 | *(SV**)&GvCV(bstate->bs_sv) = arg; |
79ee8297 |
595 | break; |
596 | } |
21fff326 |
597 | case INSN_GP_FILE: /* 76 */ |
79ee8297 |
598 | { |
21fff326 |
599 | pvindex arg; |
600 | BGET_pvindex(arg); |
601 | GvFILE(bstate->bs_sv) = arg; |
79ee8297 |
602 | break; |
603 | } |
21fff326 |
604 | case INSN_GP_IO: /* 77 */ |
79ee8297 |
605 | { |
606 | svindex arg; |
01f988be |
607 | BGET_svindex(arg); |
21fff326 |
608 | *(SV**)&GvIOp(bstate->bs_sv) = arg; |
79ee8297 |
609 | break; |
610 | } |
21fff326 |
611 | case INSN_GP_FORM: /* 78 */ |
79ee8297 |
612 | { |
613 | svindex arg; |
01f988be |
614 | BGET_svindex(arg); |
21fff326 |
615 | *(SV**)&GvFORM(bstate->bs_sv) = arg; |
79ee8297 |
616 | break; |
617 | } |
21fff326 |
618 | case INSN_GP_CVGEN: /* 79 */ |
79ee8297 |
619 | { |
620 | U32 arg; |
621 | BGET_U32(arg); |
21fff326 |
622 | GvCVGEN(bstate->bs_sv) = arg; |
79ee8297 |
623 | break; |
624 | } |
21fff326 |
625 | case INSN_GP_LINE: /* 80 */ |
79ee8297 |
626 | { |
627 | line_t arg; |
628 | BGET_U16(arg); |
21fff326 |
629 | GvLINE(bstate->bs_sv) = arg; |
79ee8297 |
630 | break; |
631 | } |
21fff326 |
632 | case INSN_GP_SHARE: /* 81 */ |
79ee8297 |
633 | { |
634 | svindex arg; |
01f988be |
635 | BGET_svindex(arg); |
21fff326 |
636 | BSET_gp_share(bstate->bs_sv, arg); |
79ee8297 |
637 | break; |
638 | } |
21fff326 |
639 | case INSN_XGV_FLAGS: /* 82 */ |
79ee8297 |
640 | { |
641 | U8 arg; |
642 | BGET_U8(arg); |
21fff326 |
643 | GvFLAGS(bstate->bs_sv) = arg; |
79ee8297 |
644 | break; |
645 | } |
21fff326 |
646 | case INSN_OP_NEXT: /* 83 */ |
79ee8297 |
647 | { |
648 | opindex arg; |
01f988be |
649 | BGET_opindex(arg); |
533c011a |
650 | PL_op->op_next = arg; |
79ee8297 |
651 | break; |
652 | } |
21fff326 |
653 | case INSN_OP_SIBLING: /* 84 */ |
79ee8297 |
654 | { |
655 | opindex arg; |
01f988be |
656 | BGET_opindex(arg); |
533c011a |
657 | PL_op->op_sibling = arg; |
79ee8297 |
658 | break; |
659 | } |
21fff326 |
660 | case INSN_OP_PPADDR: /* 85 */ |
79ee8297 |
661 | { |
662 | strconst arg; |
663 | BGET_strconst(arg); |
6b88bc9c |
664 | BSET_op_ppaddr(PL_op->op_ppaddr, arg); |
79ee8297 |
665 | break; |
666 | } |
21fff326 |
667 | case INSN_OP_TARG: /* 86 */ |
79ee8297 |
668 | { |
669 | PADOFFSET arg; |
670 | BGET_U32(arg); |
533c011a |
671 | PL_op->op_targ = arg; |
79ee8297 |
672 | break; |
673 | } |
21fff326 |
674 | case INSN_OP_TYPE: /* 87 */ |
79ee8297 |
675 | { |
676 | OPCODE arg; |
677 | BGET_U16(arg); |
533c011a |
678 | BSET_op_type(PL_op, arg); |
79ee8297 |
679 | break; |
680 | } |
21fff326 |
681 | case INSN_OP_SEQ: /* 88 */ |
79ee8297 |
682 | { |
683 | U16 arg; |
684 | BGET_U16(arg); |
533c011a |
685 | PL_op->op_seq = arg; |
79ee8297 |
686 | break; |
687 | } |
21fff326 |
688 | case INSN_OP_FLAGS: /* 89 */ |
79ee8297 |
689 | { |
690 | U8 arg; |
691 | BGET_U8(arg); |
533c011a |
692 | PL_op->op_flags = arg; |
79ee8297 |
693 | break; |
694 | } |
21fff326 |
695 | case INSN_OP_PRIVATE: /* 90 */ |
79ee8297 |
696 | { |
697 | U8 arg; |
698 | BGET_U8(arg); |
533c011a |
699 | PL_op->op_private = arg; |
79ee8297 |
700 | break; |
701 | } |
21fff326 |
702 | case INSN_OP_FIRST: /* 91 */ |
79ee8297 |
703 | { |
704 | opindex arg; |
01f988be |
705 | BGET_opindex(arg); |
79ee8297 |
706 | cUNOP->op_first = arg; |
707 | break; |
708 | } |
21fff326 |
709 | case INSN_OP_LAST: /* 92 */ |
79ee8297 |
710 | { |
711 | opindex arg; |
01f988be |
712 | BGET_opindex(arg); |
79ee8297 |
713 | cBINOP->op_last = arg; |
714 | break; |
715 | } |
21fff326 |
716 | case INSN_OP_OTHER: /* 93 */ |
79ee8297 |
717 | { |
718 | opindex arg; |
01f988be |
719 | BGET_opindex(arg); |
79ee8297 |
720 | cLOGOP->op_other = arg; |
721 | break; |
722 | } |
21fff326 |
723 | case INSN_OP_CHILDREN: /* 94 */ |
79ee8297 |
724 | { |
725 | U32 arg; |
726 | BGET_U32(arg); |
727 | cLISTOP->op_children = arg; |
728 | break; |
729 | } |
21fff326 |
730 | case INSN_OP_PMREPLROOT: /* 95 */ |
79ee8297 |
731 | { |
732 | opindex arg; |
01f988be |
733 | BGET_opindex(arg); |
79ee8297 |
734 | cPMOP->op_pmreplroot = arg; |
735 | break; |
736 | } |
21fff326 |
737 | case INSN_OP_PMREPLROOTGV: /* 96 */ |
79ee8297 |
738 | { |
739 | svindex arg; |
01f988be |
740 | BGET_svindex(arg); |
79ee8297 |
741 | *(SV**)&cPMOP->op_pmreplroot = arg; |
742 | break; |
743 | } |
21fff326 |
744 | case INSN_OP_PMREPLSTART: /* 97 */ |
79ee8297 |
745 | { |
746 | opindex arg; |
01f988be |
747 | BGET_opindex(arg); |
79ee8297 |
748 | cPMOP->op_pmreplstart = arg; |
749 | break; |
750 | } |
21fff326 |
751 | case INSN_OP_PMNEXT: /* 98 */ |
79ee8297 |
752 | { |
753 | opindex arg; |
01f988be |
754 | BGET_opindex(arg); |
79ee8297 |
755 | *(OP**)&cPMOP->op_pmnext = arg; |
756 | break; |
757 | } |
21fff326 |
758 | case INSN_PREGCOMP: /* 99 */ |
79ee8297 |
759 | { |
760 | pvcontents arg; |
761 | BGET_pvcontents(arg); |
533c011a |
762 | BSET_pregcomp(PL_op, arg); |
79ee8297 |
763 | break; |
764 | } |
21fff326 |
765 | case INSN_OP_PMFLAGS: /* 100 */ |
79ee8297 |
766 | { |
767 | U16 arg; |
768 | BGET_U16(arg); |
769 | cPMOP->op_pmflags = arg; |
770 | break; |
771 | } |
21fff326 |
772 | case INSN_OP_PMPERMFLAGS: /* 101 */ |
79ee8297 |
773 | { |
774 | U16 arg; |
775 | BGET_U16(arg); |
776 | cPMOP->op_pmpermflags = arg; |
777 | break; |
778 | } |
21fff326 |
779 | case INSN_OP_SV: /* 102 */ |
79ee8297 |
780 | { |
781 | svindex arg; |
01f988be |
782 | BGET_svindex(arg); |
79ee8297 |
783 | cSVOP->op_sv = arg; |
784 | break; |
785 | } |
21fff326 |
786 | case INSN_OP_PADIX: /* 103 */ |
79ee8297 |
787 | { |
7934575e |
788 | PADOFFSET arg; |
789 | BGET_U32(arg); |
790 | cPADOP->op_padix = arg; |
79ee8297 |
791 | break; |
792 | } |
21fff326 |
793 | case INSN_OP_PV: /* 104 */ |
79ee8297 |
794 | { |
795 | pvcontents arg; |
796 | BGET_pvcontents(arg); |
797 | cPVOP->op_pv = arg; |
798 | break; |
799 | } |
21fff326 |
800 | case INSN_OP_PV_TR: /* 105 */ |
79ee8297 |
801 | { |
802 | op_tr_array arg; |
803 | BGET_op_tr_array(arg); |
804 | cPVOP->op_pv = arg; |
805 | break; |
806 | } |
21fff326 |
807 | case INSN_OP_REDOOP: /* 106 */ |
79ee8297 |
808 | { |
809 | opindex arg; |
01f988be |
810 | BGET_opindex(arg); |
79ee8297 |
811 | cLOOP->op_redoop = arg; |
812 | break; |
813 | } |
21fff326 |
814 | case INSN_OP_NEXTOP: /* 107 */ |
79ee8297 |
815 | { |
816 | opindex arg; |
01f988be |
817 | BGET_opindex(arg); |
79ee8297 |
818 | cLOOP->op_nextop = arg; |
819 | break; |
820 | } |
21fff326 |
821 | case INSN_OP_LASTOP: /* 108 */ |
79ee8297 |
822 | { |
823 | opindex arg; |
01f988be |
824 | BGET_opindex(arg); |
79ee8297 |
825 | cLOOP->op_lastop = arg; |
826 | break; |
827 | } |
21fff326 |
828 | case INSN_COP_LABEL: /* 109 */ |
79ee8297 |
829 | { |
21fff326 |
830 | pvindex arg; |
831 | BGET_pvindex(arg); |
79ee8297 |
832 | cCOP->cop_label = arg; |
833 | break; |
834 | } |
21fff326 |
835 | case INSN_COP_STASHPV: /* 110 */ |
79ee8297 |
836 | { |
21fff326 |
837 | pvindex arg; |
838 | BGET_pvindex(arg); |
11faa288 |
839 | BSET_cop_stashpv(cCOP, arg); |
79ee8297 |
840 | break; |
841 | } |
21fff326 |
842 | case INSN_COP_FILE: /* 111 */ |
79ee8297 |
843 | { |
21fff326 |
844 | pvindex arg; |
845 | BGET_pvindex(arg); |
57843af0 |
846 | BSET_cop_file(cCOP, arg); |
79ee8297 |
847 | break; |
848 | } |
21fff326 |
849 | case INSN_COP_SEQ: /* 112 */ |
79ee8297 |
850 | { |
851 | U32 arg; |
852 | BGET_U32(arg); |
853 | cCOP->cop_seq = arg; |
854 | break; |
855 | } |
21fff326 |
856 | case INSN_COP_ARYBASE: /* 113 */ |
79ee8297 |
857 | { |
858 | I32 arg; |
859 | BGET_I32(arg); |
860 | cCOP->cop_arybase = arg; |
861 | break; |
862 | } |
21fff326 |
863 | case INSN_COP_LINE: /* 114 */ |
79ee8297 |
864 | { |
865 | line_t arg; |
866 | BGET_U16(arg); |
57843af0 |
867 | BSET_cop_line(cCOP, arg); |
79ee8297 |
868 | break; |
869 | } |
21fff326 |
870 | case INSN_COP_WARNINGS: /* 115 */ |
b295d113 |
871 | { |
872 | svindex arg; |
873 | BGET_svindex(arg); |
874 | cCOP->cop_warnings = arg; |
875 | break; |
876 | } |
21fff326 |
877 | case INSN_MAIN_START: /* 116 */ |
79ee8297 |
878 | { |
879 | opindex arg; |
01f988be |
880 | BGET_opindex(arg); |
3280af22 |
881 | PL_main_start = arg; |
79ee8297 |
882 | break; |
883 | } |
21fff326 |
884 | case INSN_MAIN_ROOT: /* 117 */ |
79ee8297 |
885 | { |
886 | opindex arg; |
01f988be |
887 | BGET_opindex(arg); |
3280af22 |
888 | PL_main_root = arg; |
79ee8297 |
889 | break; |
890 | } |
21fff326 |
891 | case INSN_CURPAD: /* 118 */ |
79ee8297 |
892 | { |
893 | svindex arg; |
01f988be |
894 | BGET_svindex(arg); |
3280af22 |
895 | BSET_curpad(PL_curpad, arg); |
79ee8297 |
896 | break; |
897 | } |
21fff326 |
898 | case INSN_PUSH_BEGIN: /* 119 */ |
d11915b8 |
899 | { |
900 | svindex arg; |
901 | BGET_svindex(arg); |
902 | BSET_push_begin(PL_beginav, arg); |
903 | break; |
904 | } |
21fff326 |
905 | case INSN_PUSH_INIT: /* 120 */ |
d11915b8 |
906 | { |
907 | svindex arg; |
908 | BGET_svindex(arg); |
909 | BSET_push_init(PL_initav, arg); |
910 | break; |
911 | } |
21fff326 |
912 | case INSN_PUSH_END: /* 121 */ |
d11915b8 |
913 | { |
914 | svindex arg; |
915 | BGET_svindex(arg); |
916 | BSET_push_end(PL_endav, arg); |
917 | break; |
918 | } |
79ee8297 |
919 | default: |
cea2e8a9 |
920 | Perl_croak(aTHX_ "Illegal bytecode instruction %d\n", insn); |
79ee8297 |
921 | /* NOTREACHED */ |
922 | } |
923 | } |
924 | } |