continued -Wformat support
[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{
ed65db6c 57 dTHR;
059a8bb7 58 register int insn;
59 U32 ix;
60 SV *specialsv_list[6];
61
62 BYTECODE_HEADER_CHECK; /* croak if incorrect platform */
63 New(666, bstate->bs_obj_list, 32, void*); /* set op objlist */
64 bstate->bs_obj_list_fill = 31;
e8edd1e6 65
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;
059a8bb7 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);
059a8bb7 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);
059a8bb7 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 }
059a8bb7 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);
059a8bb7 130 BSET_ldspecsv(bstate->bs_sv, arg);
79ee8297 131 break;
132 }
059a8bb7 133 case INSN_NEWSV: /* 7 */
79ee8297 134 {
135 U8 arg;
136 BGET_U8(arg);
059a8bb7 137 BSET_newsv(bstate->bs_sv, arg);
79ee8297 138 break;
139 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 154 case INSN_NEWPV: /* 11 */
79ee8297 155 {
156 PV arg;
157 BGET_PV(arg);
158 break;
159 }
059a8bb7 160 case INSN_PV_CUR: /* 12 */
79ee8297 161 {
162 STRLEN arg;
163 BGET_U32(arg);
059a8bb7 164 bstate->bs_pv.xpv_cur = arg;
79ee8297 165 break;
166 }
059a8bb7 167 case INSN_PV_FREE: /* 13 */
79ee8297 168 {
059a8bb7 169 BSET_pv_free(bstate->bs_pv);
79ee8297 170 break;
171 }
059a8bb7 172 case INSN_SV_UPGRADE: /* 14 */
79ee8297 173 {
174 char arg;
175 BGET_U8(arg);
059a8bb7 176 BSET_sv_upgrade(bstate->bs_sv, arg);
79ee8297 177 break;
178 }
059a8bb7 179 case INSN_SV_REFCNT: /* 15 */
79ee8297 180 {
181 U32 arg;
182 BGET_U32(arg);
059a8bb7 183 SvREFCNT(bstate->bs_sv) = arg;
79ee8297 184 break;
185 }
059a8bb7 186 case INSN_SV_REFCNT_ADD: /* 16 */
79ee8297 187 {
188 I32 arg;
189 BGET_I32(arg);
059a8bb7 190 BSET_sv_refcnt_add(SvREFCNT(bstate->bs_sv), arg);
79ee8297 191 break;
192 }
059a8bb7 193 case INSN_SV_FLAGS: /* 17 */
79ee8297 194 {
195 U32 arg;
196 BGET_U32(arg);
059a8bb7 197 SvFLAGS(bstate->bs_sv) = arg;
79ee8297 198 break;
199 }
059a8bb7 200 case INSN_XRV: /* 18 */
79ee8297 201 {
202 svindex arg;
01f988be 203 BGET_svindex(arg);
059a8bb7 204 SvRV(bstate->bs_sv) = arg;
79ee8297 205 break;
206 }
059a8bb7 207 case INSN_XPV: /* 19 */
79ee8297 208 {
059a8bb7 209 BSET_xpv(bstate->bs_sv);
79ee8297 210 break;
211 }
059a8bb7 212 case INSN_XIV32: /* 20 */
79ee8297 213 {
214 I32 arg;
215 BGET_I32(arg);
059a8bb7 216 SvIVX(bstate->bs_sv) = arg;
79ee8297 217 break;
218 }
059a8bb7 219 case INSN_XIV64: /* 21 */
79ee8297 220 {
221 IV64 arg;
222 BGET_IV64(arg);
059a8bb7 223 SvIVX(bstate->bs_sv) = arg;
79ee8297 224 break;
225 }
059a8bb7 226 case INSN_XNV: /* 22 */
79ee8297 227 {
65202027 228 NV arg;
229 BGET_NV(arg);
059a8bb7 230 SvNVX(bstate->bs_sv) = arg;
79ee8297 231 break;
232 }
059a8bb7 233 case INSN_XLV_TARGOFF: /* 23 */
79ee8297 234 {
235 STRLEN arg;
236 BGET_U32(arg);
059a8bb7 237 LvTARGOFF(bstate->bs_sv) = arg;
79ee8297 238 break;
239 }
059a8bb7 240 case INSN_XLV_TARGLEN: /* 24 */
79ee8297 241 {
242 STRLEN arg;
243 BGET_U32(arg);
059a8bb7 244 LvTARGLEN(bstate->bs_sv) = arg;
79ee8297 245 break;
246 }
059a8bb7 247 case INSN_XLV_TARG: /* 25 */
79ee8297 248 {
249 svindex arg;
01f988be 250 BGET_svindex(arg);
059a8bb7 251 LvTARG(bstate->bs_sv) = arg;
79ee8297 252 break;
253 }
059a8bb7 254 case INSN_XLV_TYPE: /* 26 */
79ee8297 255 {
256 char arg;
257 BGET_U8(arg);
059a8bb7 258 LvTYPE(bstate->bs_sv) = arg;
79ee8297 259 break;
260 }
059a8bb7 261 case INSN_XBM_USEFUL: /* 27 */
79ee8297 262 {
263 I32 arg;
264 BGET_I32(arg);
059a8bb7 265 BmUSEFUL(bstate->bs_sv) = arg;
79ee8297 266 break;
267 }
059a8bb7 268 case INSN_XBM_PREVIOUS: /* 28 */
79ee8297 269 {
270 U16 arg;
271 BGET_U16(arg);
059a8bb7 272 BmPREVIOUS(bstate->bs_sv) = arg;
79ee8297 273 break;
274 }
059a8bb7 275 case INSN_XBM_RARE: /* 29 */
79ee8297 276 {
277 U8 arg;
278 BGET_U8(arg);
059a8bb7 279 BmRARE(bstate->bs_sv) = arg;
79ee8297 280 break;
281 }
059a8bb7 282 case INSN_XFM_LINES: /* 30 */
79ee8297 283 {
284 I32 arg;
285 BGET_I32(arg);
059a8bb7 286 FmLINES(bstate->bs_sv) = arg;
79ee8297 287 break;
288 }
059a8bb7 289 case INSN_XIO_LINES: /* 31 */
79ee8297 290 {
291 long arg;
292 BGET_I32(arg);
059a8bb7 293 IoLINES(bstate->bs_sv) = arg;
79ee8297 294 break;
295 }
059a8bb7 296 case INSN_XIO_PAGE: /* 32 */
79ee8297 297 {
298 long arg;
299 BGET_I32(arg);
059a8bb7 300 IoPAGE(bstate->bs_sv) = arg;
79ee8297 301 break;
302 }
059a8bb7 303 case INSN_XIO_PAGE_LEN: /* 33 */
79ee8297 304 {
305 long arg;
306 BGET_I32(arg);
059a8bb7 307 IoPAGE_LEN(bstate->bs_sv) = arg;
79ee8297 308 break;
309 }
059a8bb7 310 case INSN_XIO_LINES_LEFT: /* 34 */
79ee8297 311 {
312 long arg;
313 BGET_I32(arg);
059a8bb7 314 IoLINES_LEFT(bstate->bs_sv) = arg;
79ee8297 315 break;
316 }
059a8bb7 317 case INSN_XIO_TOP_NAME: /* 36 */
79ee8297 318 {
319 pvcontents arg;
320 BGET_pvcontents(arg);
059a8bb7 321 IoTOP_NAME(bstate->bs_sv) = arg;
79ee8297 322 break;
323 }
059a8bb7 324 case INSN_XIO_TOP_GV: /* 37 */
79ee8297 325 {
326 svindex arg;
01f988be 327 BGET_svindex(arg);
059a8bb7 328 *(SV**)&IoTOP_GV(bstate->bs_sv) = arg;
79ee8297 329 break;
330 }
059a8bb7 331 case INSN_XIO_FMT_NAME: /* 38 */
79ee8297 332 {
333 pvcontents arg;
334 BGET_pvcontents(arg);
059a8bb7 335 IoFMT_NAME(bstate->bs_sv) = arg;
79ee8297 336 break;
337 }
059a8bb7 338 case INSN_XIO_FMT_GV: /* 39 */
79ee8297 339 {
340 svindex arg;
01f988be 341 BGET_svindex(arg);
059a8bb7 342 *(SV**)&IoFMT_GV(bstate->bs_sv) = arg;
79ee8297 343 break;
344 }
059a8bb7 345 case INSN_XIO_BOTTOM_NAME: /* 40 */
79ee8297 346 {
347 pvcontents arg;
348 BGET_pvcontents(arg);
059a8bb7 349 IoBOTTOM_NAME(bstate->bs_sv) = arg;
79ee8297 350 break;
351 }
059a8bb7 352 case INSN_XIO_BOTTOM_GV: /* 41 */
79ee8297 353 {
354 svindex arg;
01f988be 355 BGET_svindex(arg);
059a8bb7 356 *(SV**)&IoBOTTOM_GV(bstate->bs_sv) = arg;
79ee8297 357 break;
358 }
059a8bb7 359 case INSN_XIO_SUBPROCESS: /* 42 */
79ee8297 360 {
361 short arg;
362 BGET_U16(arg);
059a8bb7 363 IoSUBPROCESS(bstate->bs_sv) = arg;
79ee8297 364 break;
365 }
059a8bb7 366 case INSN_XIO_TYPE: /* 43 */
79ee8297 367 {
368 char arg;
369 BGET_U8(arg);
059a8bb7 370 IoTYPE(bstate->bs_sv) = arg;
79ee8297 371 break;
372 }
059a8bb7 373 case INSN_XIO_FLAGS: /* 44 */
79ee8297 374 {
375 char arg;
376 BGET_U8(arg);
059a8bb7 377 IoFLAGS(bstate->bs_sv) = arg;
79ee8297 378 break;
379 }
059a8bb7 380 case INSN_XCV_STASH: /* 45 */
79ee8297 381 {
382 svindex arg;
01f988be 383 BGET_svindex(arg);
059a8bb7 384 *(SV**)&CvSTASH(bstate->bs_sv) = arg;
79ee8297 385 break;
386 }
059a8bb7 387 case INSN_XCV_START: /* 46 */
79ee8297 388 {
389 opindex arg;
01f988be 390 BGET_opindex(arg);
059a8bb7 391 CvSTART(bstate->bs_sv) = arg;
79ee8297 392 break;
393 }
059a8bb7 394 case INSN_XCV_ROOT: /* 47 */
79ee8297 395 {
396 opindex arg;
01f988be 397 BGET_opindex(arg);
059a8bb7 398 CvROOT(bstate->bs_sv) = arg;
79ee8297 399 break;
400 }
059a8bb7 401 case INSN_XCV_GV: /* 48 */
79ee8297 402 {
403 svindex arg;
01f988be 404 BGET_svindex(arg);
059a8bb7 405 *(SV**)&CvGV(bstate->bs_sv) = arg;
79ee8297 406 break;
407 }
059a8bb7 408 case INSN_XCV_FILE: /* 49 */
57843af0 409 {
059a8bb7 410 pvindex arg;
411 BGET_pvindex(arg);
412 CvFILE(bstate->bs_sv) = arg;
57843af0 413 break;
414 }
059a8bb7 415 case INSN_XCV_DEPTH: /* 50 */
79ee8297 416 {
417 long arg;
418 BGET_I32(arg);
059a8bb7 419 CvDEPTH(bstate->bs_sv) = arg;
79ee8297 420 break;
421 }
059a8bb7 422 case INSN_XCV_PADLIST: /* 51 */
79ee8297 423 {
424 svindex arg;
01f988be 425 BGET_svindex(arg);
059a8bb7 426 *(SV**)&CvPADLIST(bstate->bs_sv) = arg;
79ee8297 427 break;
428 }
059a8bb7 429 case INSN_XCV_OUTSIDE: /* 52 */
79ee8297 430 {
431 svindex arg;
01f988be 432 BGET_svindex(arg);
059a8bb7 433 *(SV**)&CvOUTSIDE(bstate->bs_sv) = arg;
79ee8297 434 break;
435 }
059a8bb7 436 case INSN_XCV_FLAGS: /* 53 */
79ee8297 437 {
fc290457 438 U16 arg;
439 BGET_U16(arg);
059a8bb7 440 CvFLAGS(bstate->bs_sv) = arg;
79ee8297 441 break;
442 }
059a8bb7 443 case INSN_AV_EXTEND: /* 54 */
79ee8297 444 {
445 SSize_t arg;
446 BGET_I32(arg);
059a8bb7 447 BSET_av_extend(bstate->bs_sv, arg);
79ee8297 448 break;
449 }
059a8bb7 450 case INSN_AV_PUSH: /* 55 */
79ee8297 451 {
452 svindex arg;
01f988be 453 BGET_svindex(arg);
059a8bb7 454 BSET_av_push(bstate->bs_sv, arg);
79ee8297 455 break;
456 }
059a8bb7 457 case INSN_XAV_FILL: /* 56 */
79ee8297 458 {
459 SSize_t arg;
460 BGET_I32(arg);
059a8bb7 461 AvFILLp(bstate->bs_sv) = arg;
79ee8297 462 break;
463 }
059a8bb7 464 case INSN_XAV_MAX: /* 57 */
79ee8297 465 {
466 SSize_t arg;
467 BGET_I32(arg);
059a8bb7 468 AvMAX(bstate->bs_sv) = arg;
79ee8297 469 break;
470 }
059a8bb7 471 case INSN_XAV_FLAGS: /* 58 */
79ee8297 472 {
473 U8 arg;
474 BGET_U8(arg);
059a8bb7 475 AvFLAGS(bstate->bs_sv) = arg;
79ee8297 476 break;
477 }
059a8bb7 478 case INSN_XHV_RITER: /* 59 */
79ee8297 479 {
480 I32 arg;
481 BGET_I32(arg);
059a8bb7 482 HvRITER(bstate->bs_sv) = arg;
79ee8297 483 break;
484 }
059a8bb7 485 case INSN_XHV_NAME: /* 60 */
79ee8297 486 {
487 pvcontents arg;
488 BGET_pvcontents(arg);
059a8bb7 489 HvNAME(bstate->bs_sv) = arg;
79ee8297 490 break;
491 }
059a8bb7 492 case INSN_HV_STORE: /* 61 */
79ee8297 493 {
494 svindex arg;
01f988be 495 BGET_svindex(arg);
059a8bb7 496 BSET_hv_store(bstate->bs_sv, arg);
79ee8297 497 break;
498 }
059a8bb7 499 case INSN_SV_MAGIC: /* 62 */
79ee8297 500 {
501 char arg;
502 BGET_U8(arg);
059a8bb7 503 BSET_sv_magic(bstate->bs_sv, arg);
79ee8297 504 break;
505 }
059a8bb7 506 case INSN_MG_OBJ: /* 63 */
79ee8297 507 {
508 svindex arg;
01f988be 509 BGET_svindex(arg);
059a8bb7 510 SvMAGIC(bstate->bs_sv)->mg_obj = arg;
79ee8297 511 break;
512 }
059a8bb7 513 case INSN_MG_PRIVATE: /* 64 */
79ee8297 514 {
515 U16 arg;
516 BGET_U16(arg);
059a8bb7 517 SvMAGIC(bstate->bs_sv)->mg_private = arg;
79ee8297 518 break;
519 }
059a8bb7 520 case INSN_MG_FLAGS: /* 65 */
79ee8297 521 {
522 U8 arg;
523 BGET_U8(arg);
059a8bb7 524 SvMAGIC(bstate->bs_sv)->mg_flags = arg;
79ee8297 525 break;
526 }
059a8bb7 527 case INSN_MG_PV: /* 66 */
79ee8297 528 {
529 pvcontents arg;
530 BGET_pvcontents(arg);
059a8bb7 531 BSET_mg_pv(SvMAGIC(bstate->bs_sv), arg);
79ee8297 532 break;
533 }
059a8bb7 534 case INSN_XMG_STASH: /* 67 */
79ee8297 535 {
536 svindex arg;
01f988be 537 BGET_svindex(arg);
059a8bb7 538 *(SV**)&SvSTASH(bstate->bs_sv) = arg;
79ee8297 539 break;
540 }
059a8bb7 541 case INSN_GV_FETCHPV: /* 68 */
79ee8297 542 {
543 strconst arg;
544 BGET_strconst(arg);
059a8bb7 545 BSET_gv_fetchpv(bstate->bs_sv, arg);
79ee8297 546 break;
547 }
059a8bb7 548 case INSN_GV_STASHPV: /* 69 */
79ee8297 549 {
550 strconst arg;
551 BGET_strconst(arg);
059a8bb7 552 BSET_gv_stashpv(bstate->bs_sv, arg);
79ee8297 553 break;
554 }
059a8bb7 555 case INSN_GP_SV: /* 70 */
79ee8297 556 {
557 svindex arg;
01f988be 558 BGET_svindex(arg);
059a8bb7 559 GvSV(bstate->bs_sv) = arg;
79ee8297 560 break;
561 }
059a8bb7 562 case INSN_GP_REFCNT: /* 71 */
79ee8297 563 {
564 U32 arg;
565 BGET_U32(arg);
059a8bb7 566 GvREFCNT(bstate->bs_sv) = arg;
79ee8297 567 break;
568 }
059a8bb7 569 case INSN_GP_REFCNT_ADD: /* 72 */
79ee8297 570 {
571 I32 arg;
572 BGET_I32(arg);
059a8bb7 573 BSET_gp_refcnt_add(GvREFCNT(bstate->bs_sv), arg);
79ee8297 574 break;
575 }
059a8bb7 576 case INSN_GP_AV: /* 73 */
79ee8297 577 {
578 svindex arg;
01f988be 579 BGET_svindex(arg);
059a8bb7 580 *(SV**)&GvAV(bstate->bs_sv) = arg;
79ee8297 581 break;
582 }
059a8bb7 583 case INSN_GP_HV: /* 74 */
79ee8297 584 {
585 svindex arg;
01f988be 586 BGET_svindex(arg);
059a8bb7 587 *(SV**)&GvHV(bstate->bs_sv) = arg;
79ee8297 588 break;
589 }
059a8bb7 590 case INSN_GP_CV: /* 75 */
79ee8297 591 {
592 svindex arg;
01f988be 593 BGET_svindex(arg);
059a8bb7 594 *(SV**)&GvCV(bstate->bs_sv) = arg;
79ee8297 595 break;
596 }
059a8bb7 597 case INSN_GP_FILE: /* 76 */
79ee8297 598 {
059a8bb7 599 pvindex arg;
600 BGET_pvindex(arg);
601 GvFILE(bstate->bs_sv) = arg;
79ee8297 602 break;
603 }
059a8bb7 604 case INSN_GP_IO: /* 77 */
79ee8297 605 {
606 svindex arg;
01f988be 607 BGET_svindex(arg);
059a8bb7 608 *(SV**)&GvIOp(bstate->bs_sv) = arg;
79ee8297 609 break;
610 }
059a8bb7 611 case INSN_GP_FORM: /* 78 */
79ee8297 612 {
613 svindex arg;
01f988be 614 BGET_svindex(arg);
059a8bb7 615 *(SV**)&GvFORM(bstate->bs_sv) = arg;
79ee8297 616 break;
617 }
059a8bb7 618 case INSN_GP_CVGEN: /* 79 */
79ee8297 619 {
620 U32 arg;
621 BGET_U32(arg);
059a8bb7 622 GvCVGEN(bstate->bs_sv) = arg;
79ee8297 623 break;
624 }
059a8bb7 625 case INSN_GP_LINE: /* 80 */
79ee8297 626 {
627 line_t arg;
628 BGET_U16(arg);
059a8bb7 629 GvLINE(bstate->bs_sv) = arg;
79ee8297 630 break;
631 }
059a8bb7 632 case INSN_GP_SHARE: /* 81 */
79ee8297 633 {
634 svindex arg;
01f988be 635 BGET_svindex(arg);
059a8bb7 636 BSET_gp_share(bstate->bs_sv, arg);
79ee8297 637 break;
638 }
059a8bb7 639 case INSN_XGV_FLAGS: /* 82 */
79ee8297 640 {
641 U8 arg;
642 BGET_U8(arg);
059a8bb7 643 GvFLAGS(bstate->bs_sv) = arg;
79ee8297 644 break;
645 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 723 case INSN_OP_CHILDREN: /* 94 */
79ee8297 724 {
725 U32 arg;
726 BGET_U32(arg);
727 cLISTOP->op_children = arg;
728 break;
729 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 765 case INSN_OP_PMFLAGS: /* 100 */
79ee8297 766 {
767 U16 arg;
768 BGET_U16(arg);
769 cPMOP->op_pmflags = arg;
770 break;
771 }
059a8bb7 772 case INSN_OP_PMPERMFLAGS: /* 101 */
79ee8297 773 {
774 U16 arg;
775 BGET_U16(arg);
776 cPMOP->op_pmpermflags = arg;
777 break;
778 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 793 case INSN_OP_PV: /* 104 */
79ee8297 794 {
795 pvcontents arg;
796 BGET_pvcontents(arg);
797 cPVOP->op_pv = arg;
798 break;
799 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 828 case INSN_COP_LABEL: /* 109 */
79ee8297 829 {
059a8bb7 830 pvindex arg;
831 BGET_pvindex(arg);
79ee8297 832 cCOP->cop_label = arg;
833 break;
834 }
059a8bb7 835 case INSN_COP_STASHPV: /* 110 */
79ee8297 836 {
059a8bb7 837 pvindex arg;
838 BGET_pvindex(arg);
11faa288 839 BSET_cop_stashpv(cCOP, arg);
79ee8297 840 break;
841 }
059a8bb7 842 case INSN_COP_FILE: /* 111 */
79ee8297 843 {
059a8bb7 844 pvindex arg;
845 BGET_pvindex(arg);
57843af0 846 BSET_cop_file(cCOP, arg);
79ee8297 847 break;
848 }
059a8bb7 849 case INSN_COP_SEQ: /* 112 */
79ee8297 850 {
851 U32 arg;
852 BGET_U32(arg);
853 cCOP->cop_seq = arg;
854 break;
855 }
059a8bb7 856 case INSN_COP_ARYBASE: /* 113 */
79ee8297 857 {
858 I32 arg;
859 BGET_I32(arg);
860 cCOP->cop_arybase = arg;
861 break;
862 }
059a8bb7 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 }
059a8bb7 870 case INSN_COP_WARNINGS: /* 115 */
b295d113 871 {
872 svindex arg;
873 BGET_svindex(arg);
874 cCOP->cop_warnings = arg;
875 break;
876 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 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 }
059a8bb7 898 case INSN_PUSH_BEGIN: /* 119 */
899 {
900 svindex arg;
901 BGET_svindex(arg);
902 BSET_push_begin(PL_beginav, arg);
903 break;
904 }
905 case INSN_PUSH_INIT: /* 120 */
906 {
907 svindex arg;
908 BGET_svindex(arg);
909 BSET_push_init(PL_initav, arg);
910 break;
911 }
912 case INSN_PUSH_END: /* 121 */
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}