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