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