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