This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
GvFILE() cannot be a pointer to the memory owned by the COP, because
[perl5.git] / ext / ByteLoader / byterun.c
CommitLineData
37442d52
RGS
1/* -*- buffer-read-only: t -*-
2 *
a6c40364 3 * Copyright (c) 1996-1999 Malcolm Beattie
79ee8297
MB
4 *
5 * You may distribute under the terms of either the GNU General Public
6 * License or the Artistic License, as specified in the README file.
7 *
8 */
9/*
10 * This file is autogenerated from bytecode.pl. Changes made here will be lost.
11 */
12
c5be433b 13#define PERL_NO_GET_CONTEXT
79ee8297
MB
14#include "EXTERN.h"
15#include "perl.h"
0cb96387
GS
16#define NO_XSLOCKS
17#include "XSUB.h"
18
e8edd1e6
TH
19#include "byterun.h"
20#include "bytecode.h"
21
0cb96387 22
059a8bb7 23static const int optype_size[] = {
e8edd1e6
TH
24 sizeof(OP),
25 sizeof(UNOP),
26 sizeof(BINOP),
27 sizeof(LOGOP),
e8edd1e6
TH
28 sizeof(LISTOP),
29 sizeof(PMOP),
30 sizeof(SVOP),
7934575e 31 sizeof(PADOP),
e8edd1e6
TH
32 sizeof(PVOP),
33 sizeof(LOOP),
34 sizeof(COP)
35};
36
d613ef02 37void *
acfe0abc 38bset_obj_store(pTHX_ struct byteloader_state *bstate, void *obj, I32 ix)
d613ef02 39{
059a8bb7
JH
40 if (ix > bstate->bs_obj_list_fill) {
41 Renew(bstate->bs_obj_list, ix + 32, void*);
42 bstate->bs_obj_list_fill = ix + 31;
d613ef02 43 }
059a8bb7 44 bstate->bs_obj_list[ix] = obj;
d613ef02
GS
45 return obj;
46}
79ee8297 47
3610fdac 48int
acfe0abc 49byterun(pTHX_ register struct byteloader_state *bstate)
79ee8297 50{
27da23d5 51 dVAR;
059a8bb7
JH
52 register int insn;
53 U32 ix;
93d343c6 54 SV *specialsv_list[7];
059a8bb7
JH
55
56 BYTECODE_HEADER_CHECK; /* croak if incorrect platform */
a02a5408 57 Newx(bstate->bs_obj_list, 32, void*); /* set op objlist */
059a8bb7 58 bstate->bs_obj_list_fill = 31;
3610fdac 59 bstate->bs_obj_list[0] = NULL; /* first is always Null */
566ece03 60 bstate->bs_ix = 1;
e8edd1e6
TH
61
62 specialsv_list[0] = Nullsv;
63 specialsv_list[1] = &PL_sv_undef;
64 specialsv_list[2] = &PL_sv_yes;
65 specialsv_list[3] = &PL_sv_no;
5c3c3f81
NC
66 specialsv_list[4] = (SV*)pWARN_ALL;
67 specialsv_list[5] = (SV*)pWARN_NONE;
68 specialsv_list[6] = (SV*)pWARN_STD;
e8edd1e6 69
47358472 70 while ((insn = BGET_FGETC()) != EOF) {
79ee8297
MB
71 switch (insn) {
72 case INSN_COMMENT: /* 35 */
73 {
34e97019 74 comment_t arg;
fe3a57c4 75 BGET_comment_t(arg);
79ee8297
MB
76 arg = arg;
77 break;
78 }
79 case INSN_NOP: /* 10 */
80 {
81 break;
82 }
83 case INSN_RET: /* 0 */
84 {
85 BSET_ret(none);
86 break;
87 }
88 case INSN_LDSV: /* 1 */
89 {
90 svindex arg;
01f988be 91 BGET_svindex(arg);
059a8bb7 92 bstate->bs_sv = arg;
79ee8297
MB
93 break;
94 }
95 case INSN_LDOP: /* 2 */
96 {
97 opindex arg;
01f988be 98 BGET_opindex(arg);
533c011a 99 PL_op = arg;
79ee8297
MB
100 break;
101 }
102 case INSN_STSV: /* 3 */
103 {
104 U32 arg;
105 BGET_U32(arg);
059a8bb7 106 BSET_OBJ_STORE(bstate->bs_sv, arg);
79ee8297
MB
107 break;
108 }
109 case INSN_STOP: /* 4 */
110 {
111 U32 arg;
112 BGET_U32(arg);
533c011a 113 BSET_OBJ_STORE(PL_op, arg);
79ee8297
MB
114 break;
115 }
059a8bb7
JH
116 case INSN_STPV: /* 5 */
117 {
118 U32 arg;
119 BGET_U32(arg);
7b2c381c 120 BSET_stpv(bstate->bs_pv.pvx, arg);
059a8bb7
JH
121 break;
122 }
123 case INSN_LDSPECSV: /* 6 */
79ee8297
MB
124 {
125 U8 arg;
126 BGET_U8(arg);
059a8bb7 127 BSET_ldspecsv(bstate->bs_sv, arg);
79ee8297
MB
128 break;
129 }
566ece03
JH
130 case INSN_LDSPECSVX: /* 7 */
131 {
132 U8 arg;
133 BGET_U8(arg);
134 BSET_ldspecsvx(bstate->bs_sv, arg);
135 break;
136 }
137 case INSN_NEWSV: /* 8 */
79ee8297
MB
138 {
139 U8 arg;
140 BGET_U8(arg);
059a8bb7 141 BSET_newsv(bstate->bs_sv, arg);
79ee8297
MB
142 break;
143 }
566ece03
JH
144 case INSN_NEWSVX: /* 9 */
145 {
146 U32 arg;
147 BGET_U32(arg);
148 BSET_newsvx(bstate->bs_sv, arg);
149 break;
150 }
151 case INSN_NEWOP: /* 11 */
79ee8297
MB
152 {
153 U8 arg;
154 BGET_U8(arg);
533c011a 155 BSET_newop(PL_op, arg);
79ee8297
MB
156 break;
157 }
566ece03
JH
158 case INSN_NEWOPX: /* 12 */
159 {
160 U16 arg;
161 BGET_U16(arg);
162 BSET_newopx(PL_op, arg);
163 break;
164 }
165 case INSN_NEWOPN: /* 13 */
79ee8297
MB
166 {
167 U8 arg;
168 BGET_U8(arg);
533c011a 169 BSET_newopn(PL_op, arg);
79ee8297
MB
170 break;
171 }
566ece03 172 case INSN_NEWPV: /* 14 */
79ee8297
MB
173 {
174 PV arg;
175 BGET_PV(arg);
176 break;
177 }
566ece03 178 case INSN_PV_CUR: /* 15 */
79ee8297
MB
179 {
180 STRLEN arg;
ebc18564 181 BGET_PADOFFSET(arg);
7b2c381c 182 bstate->bs_pv.xpv.xpv_cur = arg;
79ee8297
MB
183 break;
184 }
566ece03 185 case INSN_PV_FREE: /* 16 */
79ee8297 186 {
7b2c381c 187 BSET_pv_free(bstate->bs_pv.pvx);
79ee8297
MB
188 break;
189 }
566ece03 190 case INSN_SV_UPGRADE: /* 17 */
79ee8297 191 {
6e21dc91 192 U8 arg;
79ee8297 193 BGET_U8(arg);
059a8bb7 194 BSET_sv_upgrade(bstate->bs_sv, arg);
79ee8297
MB
195 break;
196 }
566ece03 197 case INSN_SV_REFCNT: /* 18 */
79ee8297
MB
198 {
199 U32 arg;
200 BGET_U32(arg);
059a8bb7 201 SvREFCNT(bstate->bs_sv) = arg;
79ee8297
MB
202 break;
203 }
566ece03 204 case INSN_SV_REFCNT_ADD: /* 19 */
79ee8297
MB
205 {
206 I32 arg;
207 BGET_I32(arg);
059a8bb7 208 BSET_sv_refcnt_add(SvREFCNT(bstate->bs_sv), arg);
79ee8297
MB
209 break;
210 }
566ece03 211 case INSN_SV_FLAGS: /* 20 */
79ee8297
MB
212 {
213 U32 arg;
214 BGET_U32(arg);
059a8bb7 215 SvFLAGS(bstate->bs_sv) = arg;
79ee8297
MB
216 break;
217 }
566ece03 218 case INSN_XRV: /* 21 */
79ee8297
MB
219 {
220 svindex arg;
01f988be 221 BGET_svindex(arg);
27da23d5 222 BSET_xrv(bstate->bs_sv, arg);
79ee8297
MB
223 break;
224 }
566ece03 225 case INSN_XPV: /* 22 */
79ee8297 226 {
059a8bb7 227 BSET_xpv(bstate->bs_sv);
79ee8297
MB
228 break;
229 }
0032b46e 230 case INSN_XPV_CUR: /* 23 */
79ee8297 231 {
3610fdac 232 STRLEN arg;
ebc18564 233 BGET_PADOFFSET(arg);
27da23d5 234 BSET_xpv_cur(bstate->bs_sv, arg);
3610fdac
JH
235 break;
236 }
566ece03 237 case INSN_XPV_LEN: /* 24 */
3610fdac
JH
238 {
239 STRLEN arg;
ebc18564 240 BGET_PADOFFSET(arg);
27da23d5 241 BSET_xpv_len(bstate->bs_sv, arg);
79ee8297
MB
242 break;
243 }
566ece03 244 case INSN_XIV: /* 25 */
79ee8297 245 {
3610fdac
JH
246 IV arg;
247 BGET_IV(arg);
27da23d5 248 BSET_xiv(bstate->bs_sv, arg);
79ee8297
MB
249 break;
250 }
566ece03 251 case INSN_XNV: /* 26 */
79ee8297 252 {
65202027
DS
253 NV arg;
254 BGET_NV(arg);
27da23d5 255 BSET_xnv(bstate->bs_sv, arg);
79ee8297
MB
256 break;
257 }
566ece03 258 case INSN_XLV_TARGOFF: /* 27 */
79ee8297
MB
259 {
260 STRLEN arg;
ebc18564 261 BGET_PADOFFSET(arg);
059a8bb7 262 LvTARGOFF(bstate->bs_sv) = arg;
79ee8297
MB
263 break;
264 }
566ece03 265 case INSN_XLV_TARGLEN: /* 28 */
79ee8297
MB
266 {
267 STRLEN arg;
ebc18564 268 BGET_PADOFFSET(arg);
059a8bb7 269 LvTARGLEN(bstate->bs_sv) = arg;
79ee8297
MB
270 break;
271 }
566ece03 272 case INSN_XLV_TARG: /* 29 */
79ee8297
MB
273 {
274 svindex arg;
01f988be 275 BGET_svindex(arg);
059a8bb7 276 LvTARG(bstate->bs_sv) = arg;
79ee8297
MB
277 break;
278 }
566ece03 279 case INSN_XLV_TYPE: /* 30 */
79ee8297
MB
280 {
281 char arg;
282 BGET_U8(arg);
059a8bb7 283 LvTYPE(bstate->bs_sv) = arg;
79ee8297
MB
284 break;
285 }
566ece03 286 case INSN_XBM_USEFUL: /* 31 */
79ee8297
MB
287 {
288 I32 arg;
289 BGET_I32(arg);
059a8bb7 290 BmUSEFUL(bstate->bs_sv) = arg;
79ee8297
MB
291 break;
292 }
566ece03 293 case INSN_XBM_PREVIOUS: /* 32 */
79ee8297
MB
294 {
295 U16 arg;
296 BGET_U16(arg);
059a8bb7 297 BmPREVIOUS(bstate->bs_sv) = arg;
79ee8297
MB
298 break;
299 }
566ece03 300 case INSN_XBM_RARE: /* 33 */
79ee8297
MB
301 {
302 U8 arg;
303 BGET_U8(arg);
059a8bb7 304 BmRARE(bstate->bs_sv) = arg;
79ee8297
MB
305 break;
306 }
566ece03 307 case INSN_XFM_LINES: /* 34 */
79ee8297 308 {
11a7ac70
JH
309 IV arg;
310 BGET_IV(arg);
059a8bb7 311 FmLINES(bstate->bs_sv) = arg;
79ee8297
MB
312 break;
313 }
566ece03 314 case INSN_XIO_LINES: /* 36 */
79ee8297 315 {
11a7ac70
JH
316 IV arg;
317 BGET_IV(arg);
059a8bb7 318 IoLINES(bstate->bs_sv) = arg;
79ee8297
MB
319 break;
320 }
566ece03 321 case INSN_XIO_PAGE: /* 37 */
79ee8297 322 {
11a7ac70
JH
323 IV arg;
324 BGET_IV(arg);
059a8bb7 325 IoPAGE(bstate->bs_sv) = arg;
79ee8297
MB
326 break;
327 }
566ece03 328 case INSN_XIO_PAGE_LEN: /* 38 */
79ee8297 329 {
11a7ac70
JH
330 IV arg;
331 BGET_IV(arg);
059a8bb7 332 IoPAGE_LEN(bstate->bs_sv) = arg;
79ee8297
MB
333 break;
334 }
566ece03 335 case INSN_XIO_LINES_LEFT: /* 39 */
79ee8297 336 {
11a7ac70
JH
337 IV arg;
338 BGET_IV(arg);
059a8bb7 339 IoLINES_LEFT(bstate->bs_sv) = arg;
79ee8297
MB
340 break;
341 }
566ece03 342 case INSN_XIO_TOP_NAME: /* 40 */
79ee8297 343 {
3610fdac
JH
344 pvindex arg;
345 BGET_pvindex(arg);
059a8bb7 346 IoTOP_NAME(bstate->bs_sv) = arg;
79ee8297
MB
347 break;
348 }
566ece03 349 case INSN_XIO_TOP_GV: /* 41 */
79ee8297
MB
350 {
351 svindex arg;
01f988be 352 BGET_svindex(arg);
059a8bb7 353 *(SV**)&IoTOP_GV(bstate->bs_sv) = arg;
79ee8297
MB
354 break;
355 }
566ece03 356 case INSN_XIO_FMT_NAME: /* 42 */
79ee8297 357 {
3610fdac
JH
358 pvindex arg;
359 BGET_pvindex(arg);
059a8bb7 360 IoFMT_NAME(bstate->bs_sv) = arg;
79ee8297
MB
361 break;
362 }
566ece03 363 case INSN_XIO_FMT_GV: /* 43 */
79ee8297
MB
364 {
365 svindex arg;
01f988be 366 BGET_svindex(arg);
059a8bb7 367 *(SV**)&IoFMT_GV(bstate->bs_sv) = arg;
79ee8297
MB
368 break;
369 }
566ece03 370 case INSN_XIO_BOTTOM_NAME: /* 44 */
79ee8297 371 {
3610fdac
JH
372 pvindex arg;
373 BGET_pvindex(arg);
059a8bb7 374 IoBOTTOM_NAME(bstate->bs_sv) = arg;
79ee8297
MB
375 break;
376 }
566ece03 377 case INSN_XIO_BOTTOM_GV: /* 45 */
79ee8297
MB
378 {
379 svindex arg;
01f988be 380 BGET_svindex(arg);
059a8bb7 381 *(SV**)&IoBOTTOM_GV(bstate->bs_sv) = arg;
79ee8297
MB
382 break;
383 }
566ece03 384 case INSN_XIO_SUBPROCESS: /* 46 */
79ee8297
MB
385 {
386 short arg;
387 BGET_U16(arg);
059a8bb7 388 IoSUBPROCESS(bstate->bs_sv) = arg;
79ee8297
MB
389 break;
390 }
566ece03 391 case INSN_XIO_TYPE: /* 47 */
79ee8297
MB
392 {
393 char arg;
394 BGET_U8(arg);
059a8bb7 395 IoTYPE(bstate->bs_sv) = arg;
79ee8297
MB
396 break;
397 }
566ece03 398 case INSN_XIO_FLAGS: /* 48 */
79ee8297
MB
399 {
400 char arg;
401 BGET_U8(arg);
059a8bb7 402 IoFLAGS(bstate->bs_sv) = arg;
79ee8297
MB
403 break;
404 }
566ece03 405 case INSN_XCV_XSUBANY: /* 49 */
3610fdac
JH
406 {
407 svindex arg;
408 BGET_svindex(arg);
409 *(SV**)&CvXSUBANY(bstate->bs_sv).any_ptr = arg;
410 break;
411 }
566ece03 412 case INSN_XCV_STASH: /* 50 */
79ee8297
MB
413 {
414 svindex arg;
01f988be 415 BGET_svindex(arg);
059a8bb7 416 *(SV**)&CvSTASH(bstate->bs_sv) = arg;
79ee8297
MB
417 break;
418 }
566ece03 419 case INSN_XCV_START: /* 51 */
79ee8297
MB
420 {
421 opindex arg;
01f988be 422 BGET_opindex(arg);
059a8bb7 423 CvSTART(bstate->bs_sv) = arg;
79ee8297
MB
424 break;
425 }
566ece03 426 case INSN_XCV_ROOT: /* 52 */
79ee8297
MB
427 {
428 opindex arg;
01f988be 429 BGET_opindex(arg);
059a8bb7 430 CvROOT(bstate->bs_sv) = arg;
79ee8297
MB
431 break;
432 }
566ece03 433 case INSN_XCV_GV: /* 53 */
79ee8297
MB
434 {
435 svindex arg;
01f988be 436 BGET_svindex(arg);
059a8bb7 437 *(SV**)&CvGV(bstate->bs_sv) = arg;
79ee8297
MB
438 break;
439 }
566ece03 440 case INSN_XCV_FILE: /* 54 */
57843af0 441 {
059a8bb7
JH
442 pvindex arg;
443 BGET_pvindex(arg);
444 CvFILE(bstate->bs_sv) = arg;
57843af0
GS
445 break;
446 }
566ece03 447 case INSN_XCV_DEPTH: /* 55 */
79ee8297
MB
448 {
449 long arg;
ebc18564 450 BGET_long(arg);
059a8bb7 451 CvDEPTH(bstate->bs_sv) = arg;
79ee8297
MB
452 break;
453 }
566ece03 454 case INSN_XCV_PADLIST: /* 56 */
79ee8297
MB
455 {
456 svindex arg;
01f988be 457 BGET_svindex(arg);
059a8bb7 458 *(SV**)&CvPADLIST(bstate->bs_sv) = arg;
79ee8297
MB
459 break;
460 }
566ece03 461 case INSN_XCV_OUTSIDE: /* 57 */
79ee8297
MB
462 {
463 svindex arg;
01f988be 464 BGET_svindex(arg);
059a8bb7 465 *(SV**)&CvOUTSIDE(bstate->bs_sv) = arg;
79ee8297
MB
466 break;
467 }
566ece03 468 case INSN_XCV_OUTSIDE_SEQ: /* 58 */
f52873be
AE
469 {
470 U32 arg;
471 BGET_U32(arg);
472 CvOUTSIDE_SEQ(bstate->bs_sv) = arg;
473 break;
474 }
566ece03 475 case INSN_XCV_FLAGS: /* 59 */
79ee8297 476 {
fc290457
GS
477 U16 arg;
478 BGET_U16(arg);
059a8bb7 479 CvFLAGS(bstate->bs_sv) = arg;
79ee8297
MB
480 break;
481 }
566ece03 482 case INSN_AV_EXTEND: /* 60 */
79ee8297
MB
483 {
484 SSize_t arg;
ebc18564 485 BGET_PADOFFSET(arg);
059a8bb7 486 BSET_av_extend(bstate->bs_sv, arg);
79ee8297
MB
487 break;
488 }
566ece03 489 case INSN_AV_PUSHX: /* 61 */
3610fdac
JH
490 {
491 svindex arg;
492 BGET_svindex(arg);
493 BSET_av_pushx(bstate->bs_sv, arg);
494 break;
495 }
566ece03 496 case INSN_AV_PUSH: /* 62 */
79ee8297
MB
497 {
498 svindex arg;
01f988be 499 BGET_svindex(arg);
059a8bb7 500 BSET_av_push(bstate->bs_sv, arg);
79ee8297
MB
501 break;
502 }
566ece03 503 case INSN_XAV_FILL: /* 63 */
79ee8297
MB
504 {
505 SSize_t arg;
ebc18564 506 BGET_PADOFFSET(arg);
059a8bb7 507 AvFILLp(bstate->bs_sv) = arg;
79ee8297
MB
508 break;
509 }
566ece03 510 case INSN_XAV_MAX: /* 64 */
79ee8297
MB
511 {
512 SSize_t arg;
ebc18564 513 BGET_PADOFFSET(arg);
059a8bb7 514 AvMAX(bstate->bs_sv) = arg;
79ee8297
MB
515 break;
516 }
11ca45c0 517 case INSN_XHV_RITER: /* 65 */
79ee8297
MB
518 {
519 I32 arg;
520 BGET_I32(arg);
059a8bb7 521 HvRITER(bstate->bs_sv) = arg;
79ee8297
MB
522 break;
523 }
11ca45c0 524 case INSN_XHV_NAME: /* 66 */
79ee8297 525 {
3610fdac
JH
526 pvindex arg;
527 BGET_pvindex(arg);
4ba4de04 528 BSET_xhv_name(bstate->bs_sv, arg);
79ee8297
MB
529 break;
530 }
8d2f4536 531 case INSN_HV_STORE: /* 67 */
79ee8297
MB
532 {
533 svindex arg;
01f988be 534 BGET_svindex(arg);
059a8bb7 535 BSET_hv_store(bstate->bs_sv, arg);
79ee8297
MB
536 break;
537 }
8d2f4536 538 case INSN_SV_MAGIC: /* 68 */
79ee8297
MB
539 {
540 char arg;
541 BGET_U8(arg);
059a8bb7 542 BSET_sv_magic(bstate->bs_sv, arg);
79ee8297
MB
543 break;
544 }
8d2f4536 545 case INSN_MG_OBJ: /* 69 */
79ee8297
MB
546 {
547 svindex arg;
01f988be 548 BGET_svindex(arg);
059a8bb7 549 SvMAGIC(bstate->bs_sv)->mg_obj = arg;
79ee8297
MB
550 break;
551 }
8d2f4536 552 case INSN_MG_PRIVATE: /* 70 */
79ee8297
MB
553 {
554 U16 arg;
555 BGET_U16(arg);
059a8bb7 556 SvMAGIC(bstate->bs_sv)->mg_private = arg;
79ee8297
MB
557 break;
558 }
8d2f4536 559 case INSN_MG_FLAGS: /* 71 */
79ee8297
MB
560 {
561 U8 arg;
562 BGET_U8(arg);
059a8bb7 563 SvMAGIC(bstate->bs_sv)->mg_flags = arg;
79ee8297
MB
564 break;
565 }
8d2f4536 566 case INSN_MG_NAME: /* 72 */
79ee8297
MB
567 {
568 pvcontents arg;
569 BGET_pvcontents(arg);
3610fdac
JH
570 BSET_mg_name(SvMAGIC(bstate->bs_sv), arg);
571 break;
572 }
8d2f4536 573 case INSN_MG_NAMEX: /* 73 */
3610fdac
JH
574 {
575 svindex arg;
576 BGET_svindex(arg);
577 BSET_mg_namex(SvMAGIC(bstate->bs_sv), arg);
79ee8297
MB
578 break;
579 }
8d2f4536 580 case INSN_XMG_STASH: /* 74 */
79ee8297
MB
581 {
582 svindex arg;
01f988be 583 BGET_svindex(arg);
03687789 584 BSET_xmg_stash(bstate->bs_sv, arg);
79ee8297
MB
585 break;
586 }
8d2f4536 587 case INSN_GV_FETCHPV: /* 75 */
79ee8297
MB
588 {
589 strconst arg;
590 BGET_strconst(arg);
059a8bb7 591 BSET_gv_fetchpv(bstate->bs_sv, arg);
79ee8297
MB
592 break;
593 }
8d2f4536 594 case INSN_GV_FETCHPVX: /* 76 */
566ece03
JH
595 {
596 strconst arg;
597 BGET_strconst(arg);
598 BSET_gv_fetchpvx(bstate->bs_sv, arg);
599 break;
600 }
8d2f4536 601 case INSN_GV_STASHPV: /* 77 */
79ee8297
MB
602 {
603 strconst arg;
604 BGET_strconst(arg);
059a8bb7 605 BSET_gv_stashpv(bstate->bs_sv, arg);
79ee8297
MB
606 break;
607 }
8d2f4536 608 case INSN_GV_STASHPVX: /* 78 */
566ece03
JH
609 {
610 strconst arg;
611 BGET_strconst(arg);
612 BSET_gv_stashpvx(bstate->bs_sv, arg);
613 break;
614 }
8d2f4536 615 case INSN_GP_SV: /* 79 */
79ee8297
MB
616 {
617 svindex arg;
01f988be 618 BGET_svindex(arg);
059a8bb7 619 GvSV(bstate->bs_sv) = arg;
79ee8297
MB
620 break;
621 }
8d2f4536 622 case INSN_GP_REFCNT: /* 80 */
79ee8297
MB
623 {
624 U32 arg;
625 BGET_U32(arg);
059a8bb7 626 GvREFCNT(bstate->bs_sv) = arg;
79ee8297
MB
627 break;
628 }
8d2f4536 629 case INSN_GP_REFCNT_ADD: /* 81 */
79ee8297
MB
630 {
631 I32 arg;
632 BGET_I32(arg);
059a8bb7 633 BSET_gp_refcnt_add(GvREFCNT(bstate->bs_sv), arg);
79ee8297
MB
634 break;
635 }
8d2f4536 636 case INSN_GP_AV: /* 82 */
79ee8297
MB
637 {
638 svindex arg;
01f988be 639 BGET_svindex(arg);
059a8bb7 640 *(SV**)&GvAV(bstate->bs_sv) = arg;
79ee8297
MB
641 break;
642 }
8d2f4536 643 case INSN_GP_HV: /* 83 */
79ee8297
MB
644 {
645 svindex arg;
01f988be 646 BGET_svindex(arg);
059a8bb7 647 *(SV**)&GvHV(bstate->bs_sv) = arg;
79ee8297
MB
648 break;
649 }
8d2f4536 650 case INSN_GP_CV: /* 84 */
79ee8297
MB
651 {
652 svindex arg;
01f988be 653 BGET_svindex(arg);
059a8bb7 654 *(SV**)&GvCV(bstate->bs_sv) = arg;
79ee8297
MB
655 break;
656 }
8d2f4536 657 case INSN_GP_FILE: /* 85 */
79ee8297 658 {
059a8bb7
JH
659 pvindex arg;
660 BGET_pvindex(arg);
f4890806 661 BSET_gp_file(bstate->bs_sv, arg);
79ee8297
MB
662 break;
663 }
8d2f4536 664 case INSN_GP_IO: /* 86 */
79ee8297
MB
665 {
666 svindex arg;
01f988be 667 BGET_svindex(arg);
059a8bb7 668 *(SV**)&GvIOp(bstate->bs_sv) = arg;
79ee8297
MB
669 break;
670 }
8d2f4536 671 case INSN_GP_FORM: /* 87 */
79ee8297
MB
672 {
673 svindex arg;
01f988be 674 BGET_svindex(arg);
059a8bb7 675 *(SV**)&GvFORM(bstate->bs_sv) = arg;
79ee8297
MB
676 break;
677 }
8d2f4536 678 case INSN_GP_CVGEN: /* 88 */
79ee8297
MB
679 {
680 U32 arg;
681 BGET_U32(arg);
059a8bb7 682 GvCVGEN(bstate->bs_sv) = arg;
79ee8297
MB
683 break;
684 }
8d2f4536 685 case INSN_GP_LINE: /* 89 */
79ee8297
MB
686 {
687 line_t arg;
dea28490 688 BGET_U32(arg);
059a8bb7 689 GvLINE(bstate->bs_sv) = arg;
79ee8297
MB
690 break;
691 }
8d2f4536 692 case INSN_GP_SHARE: /* 90 */
79ee8297
MB
693 {
694 svindex arg;
01f988be 695 BGET_svindex(arg);
059a8bb7 696 BSET_gp_share(bstate->bs_sv, arg);
79ee8297
MB
697 break;
698 }
8d2f4536 699 case INSN_XGV_FLAGS: /* 91 */
79ee8297
MB
700 {
701 U8 arg;
702 BGET_U8(arg);
059a8bb7 703 GvFLAGS(bstate->bs_sv) = arg;
79ee8297
MB
704 break;
705 }
8d2f4536 706 case INSN_OP_NEXT: /* 92 */
79ee8297
MB
707 {
708 opindex arg;
01f988be 709 BGET_opindex(arg);
533c011a 710 PL_op->op_next = arg;
79ee8297
MB
711 break;
712 }
8d2f4536 713 case INSN_OP_SIBLING: /* 93 */
79ee8297
MB
714 {
715 opindex arg;
01f988be 716 BGET_opindex(arg);
533c011a 717 PL_op->op_sibling = arg;
79ee8297
MB
718 break;
719 }
8d2f4536 720 case INSN_OP_PPADDR: /* 94 */
79ee8297
MB
721 {
722 strconst arg;
723 BGET_strconst(arg);
6b88bc9c 724 BSET_op_ppaddr(PL_op->op_ppaddr, arg);
79ee8297
MB
725 break;
726 }
8d2f4536 727 case INSN_OP_TARG: /* 95 */
79ee8297
MB
728 {
729 PADOFFSET arg;
ca337316 730 BGET_PADOFFSET(arg);
533c011a 731 PL_op->op_targ = arg;
79ee8297
MB
732 break;
733 }
8d2f4536 734 case INSN_OP_TYPE: /* 96 */
79ee8297
MB
735 {
736 OPCODE arg;
737 BGET_U16(arg);
533c011a 738 BSET_op_type(PL_op, arg);
79ee8297
MB
739 break;
740 }
8d2f4536 741 case INSN_OP_OPT: /* 97 */
79ee8297 742 {
2814eb74
PJ
743 U8 arg;
744 BGET_U8(arg);
745 PL_op->op_opt = arg;
746 break;
747 }
8d2f4536 748 case INSN_OP_STATIC: /* 98 */
2814eb74
PJ
749 {
750 U8 arg;
751 BGET_U8(arg);
752 PL_op->op_static = arg;
79ee8297
MB
753 break;
754 }
8d2f4536 755 case INSN_OP_FLAGS: /* 99 */
79ee8297
MB
756 {
757 U8 arg;
758 BGET_U8(arg);
533c011a 759 PL_op->op_flags = arg;
79ee8297
MB
760 break;
761 }
8d2f4536 762 case INSN_OP_PRIVATE: /* 100 */
79ee8297
MB
763 {
764 U8 arg;
765 BGET_U8(arg);
533c011a 766 PL_op->op_private = arg;
79ee8297
MB
767 break;
768 }
8d2f4536 769 case INSN_OP_FIRST: /* 101 */
79ee8297
MB
770 {
771 opindex arg;
01f988be 772 BGET_opindex(arg);
79ee8297
MB
773 cUNOP->op_first = arg;
774 break;
775 }
8d2f4536 776 case INSN_OP_LAST: /* 102 */
79ee8297
MB
777 {
778 opindex arg;
01f988be 779 BGET_opindex(arg);
79ee8297
MB
780 cBINOP->op_last = arg;
781 break;
782 }
8d2f4536 783 case INSN_OP_OTHER: /* 103 */
79ee8297
MB
784 {
785 opindex arg;
01f988be 786 BGET_opindex(arg);
79ee8297
MB
787 cLOGOP->op_other = arg;
788 break;
789 }
8d2f4536 790 case INSN_OP_PMREPLROOT: /* 104 */
79ee8297
MB
791 {
792 opindex arg;
01f988be 793 BGET_opindex(arg);
79ee8297
MB
794 cPMOP->op_pmreplroot = arg;
795 break;
796 }
8d2f4536 797 case INSN_OP_PMREPLSTART: /* 105 */
79ee8297
MB
798 {
799 opindex arg;
01f988be 800 BGET_opindex(arg);
79ee8297
MB
801 cPMOP->op_pmreplstart = arg;
802 break;
803 }
8d2f4536 804 case INSN_OP_PMNEXT: /* 106 */
79ee8297
MB
805 {
806 opindex arg;
01f988be 807 BGET_opindex(arg);
79ee8297
MB
808 *(OP**)&cPMOP->op_pmnext = arg;
809 break;
810 }
3610fdac 811#ifdef USE_ITHREADS
8d2f4536 812 case INSN_OP_PMSTASHPV: /* 107 */
3610fdac
JH
813 {
814 pvindex arg;
815 BGET_pvindex(arg);
47682f07 816 BSET_op_pmstashpv(cPMOP, arg);
3610fdac
JH
817 break;
818 }
8d2f4536 819 case INSN_OP_PMREPLROOTPO: /* 108 */
3610fdac
JH
820 {
821 PADOFFSET arg;
ca337316 822 BGET_PADOFFSET(arg);
b97332e7 823 cPMOP->op_pmreplroot = (OP*)arg;
3610fdac
JH
824 break;
825 }
826#else
8d2f4536 827 case INSN_OP_PMSTASH: /* 109 */
3610fdac
JH
828 {
829 svindex arg;
830 BGET_svindex(arg);
831 *(SV**)&cPMOP->op_pmstash = arg;
832 break;
833 }
8d2f4536 834 case INSN_OP_PMREPLROOTGV: /* 110 */
3610fdac
JH
835 {
836 svindex arg;
837 BGET_svindex(arg);
838 *(SV**)&cPMOP->op_pmreplroot = arg;
839 break;
840 }
841#endif
8d2f4536 842 case INSN_PREGCOMP: /* 111 */
79ee8297
MB
843 {
844 pvcontents arg;
845 BGET_pvcontents(arg);
533c011a 846 BSET_pregcomp(PL_op, arg);
79ee8297
MB
847 break;
848 }
8d2f4536 849 case INSN_OP_PMFLAGS: /* 112 */
79ee8297
MB
850 {
851 U16 arg;
852 BGET_U16(arg);
853 cPMOP->op_pmflags = arg;
854 break;
855 }
8d2f4536 856 case INSN_OP_PMPERMFLAGS: /* 113 */
79ee8297
MB
857 {
858 U16 arg;
859 BGET_U16(arg);
860 cPMOP->op_pmpermflags = arg;
861 break;
862 }
8d2f4536 863 case INSN_OP_PMDYNFLAGS: /* 114 */
3610fdac
JH
864 {
865 U8 arg;
866 BGET_U8(arg);
867 cPMOP->op_pmdynflags = arg;
868 break;
869 }
8d2f4536 870 case INSN_OP_SV: /* 115 */
79ee8297
MB
871 {
872 svindex arg;
01f988be 873 BGET_svindex(arg);
79ee8297
MB
874 cSVOP->op_sv = arg;
875 break;
876 }
8d2f4536 877 case INSN_OP_PADIX: /* 116 */
79ee8297 878 {
7934575e 879 PADOFFSET arg;
ca337316 880 BGET_PADOFFSET(arg);
7934575e 881 cPADOP->op_padix = arg;
79ee8297
MB
882 break;
883 }
8d2f4536 884 case INSN_OP_PV: /* 117 */
79ee8297
MB
885 {
886 pvcontents arg;
887 BGET_pvcontents(arg);
888 cPVOP->op_pv = arg;
889 break;
890 }
8d2f4536 891 case INSN_OP_PV_TR: /* 118 */
79ee8297
MB
892 {
893 op_tr_array arg;
894 BGET_op_tr_array(arg);
895 cPVOP->op_pv = arg;
896 break;
897 }
8d2f4536 898 case INSN_OP_REDOOP: /* 119 */
79ee8297
MB
899 {
900 opindex arg;
01f988be 901 BGET_opindex(arg);
79ee8297
MB
902 cLOOP->op_redoop = arg;
903 break;
904 }
8d2f4536 905 case INSN_OP_NEXTOP: /* 120 */
79ee8297
MB
906 {
907 opindex arg;
01f988be 908 BGET_opindex(arg);
79ee8297
MB
909 cLOOP->op_nextop = arg;
910 break;
911 }
8d2f4536 912 case INSN_OP_LASTOP: /* 121 */
79ee8297
MB
913 {
914 opindex arg;
01f988be 915 BGET_opindex(arg);
79ee8297
MB
916 cLOOP->op_lastop = arg;
917 break;
918 }
8d2f4536 919 case INSN_COP_LABEL: /* 122 */
79ee8297 920 {
059a8bb7
JH
921 pvindex arg;
922 BGET_pvindex(arg);
79ee8297
MB
923 cCOP->cop_label = arg;
924 break;
925 }
3610fdac 926#ifdef USE_ITHREADS
8d2f4536 927 case INSN_COP_STASHPV: /* 123 */
79ee8297 928 {
059a8bb7
JH
929 pvindex arg;
930 BGET_pvindex(arg);
11faa288 931 BSET_cop_stashpv(cCOP, arg);
79ee8297
MB
932 break;
933 }
8d2f4536 934 case INSN_COP_FILE: /* 124 */
79ee8297 935 {
059a8bb7
JH
936 pvindex arg;
937 BGET_pvindex(arg);
57843af0 938 BSET_cop_file(cCOP, arg);
79ee8297
MB
939 break;
940 }
3610fdac 941#else
8d2f4536 942 case INSN_COP_STASH: /* 125 */
3610fdac
JH
943 {
944 svindex arg;
945 BGET_svindex(arg);
946 BSET_cop_stash(cCOP, arg);
947 break;
948 }
8d2f4536 949 case INSN_COP_FILEGV: /* 126 */
3610fdac
JH
950 {
951 svindex arg;
952 BGET_svindex(arg);
953 BSET_cop_filegv(cCOP, arg);
954 break;
955 }
956#endif
8d2f4536 957 case INSN_COP_SEQ: /* 127 */
79ee8297
MB
958 {
959 U32 arg;
960 BGET_U32(arg);
961 cCOP->cop_seq = arg;
962 break;
963 }
8d2f4536 964 case INSN_COP_ARYBASE: /* 128 */
79ee8297
MB
965 {
966 I32 arg;
967 BGET_I32(arg);
07910858 968 BSET_cop_arybase(cCOP, arg);
79ee8297
MB
969 break;
970 }
8d2f4536 971 case INSN_COP_LINE: /* 129 */
79ee8297
MB
972 {
973 line_t arg;
dea28490 974 BGET_U32(arg);
3610fdac
JH
975 cCOP->cop_line = arg;
976 break;
977 }
8d2f4536 978 case INSN_COP_IO: /* 130 */
3610fdac
JH
979 {
980 svindex arg;
981 BGET_svindex(arg);
982 cCOP->cop_io = arg;
79ee8297
MB
983 break;
984 }
8d2f4536 985 case INSN_COP_WARNINGS: /* 131 */
b295d113
TH
986 {
987 svindex arg;
988 BGET_svindex(arg);
5c3c3f81 989 BSET_cop_warnings(cCOP, arg);
b295d113
TH
990 break;
991 }
8d2f4536 992 case INSN_MAIN_START: /* 132 */
79ee8297
MB
993 {
994 opindex arg;
01f988be 995 BGET_opindex(arg);
3280af22 996 PL_main_start = arg;
79ee8297
MB
997 break;
998 }
8d2f4536 999 case INSN_MAIN_ROOT: /* 133 */
79ee8297
MB
1000 {
1001 opindex arg;
01f988be 1002 BGET_opindex(arg);
3280af22 1003 PL_main_root = arg;
79ee8297
MB
1004 break;
1005 }
8d2f4536 1006 case INSN_MAIN_CV: /* 134 */
3610fdac
JH
1007 {
1008 svindex arg;
1009 BGET_svindex(arg);
1010 *(SV**)&PL_main_cv = arg;
1011 break;
1012 }
8d2f4536 1013 case INSN_CURPAD: /* 135 */
79ee8297
MB
1014 {
1015 svindex arg;
01f988be 1016 BGET_svindex(arg);
3280af22 1017 BSET_curpad(PL_curpad, arg);
79ee8297
MB
1018 break;
1019 }
8d2f4536 1020 case INSN_PUSH_BEGIN: /* 136 */
059a8bb7
JH
1021 {
1022 svindex arg;
1023 BGET_svindex(arg);
1024 BSET_push_begin(PL_beginav, arg);
1025 break;
1026 }
8d2f4536 1027 case INSN_PUSH_INIT: /* 137 */
059a8bb7
JH
1028 {
1029 svindex arg;
1030 BGET_svindex(arg);
1031 BSET_push_init(PL_initav, arg);
1032 break;
1033 }
8d2f4536 1034 case INSN_PUSH_END: /* 138 */
059a8bb7
JH
1035 {
1036 svindex arg;
1037 BGET_svindex(arg);
1038 BSET_push_end(PL_endav, arg);
1039 break;
1040 }
8d2f4536 1041 case INSN_CURSTASH: /* 139 */
3610fdac
JH
1042 {
1043 svindex arg;
1044 BGET_svindex(arg);
1045 *(SV**)&PL_curstash = arg;
1046 break;
1047 }
8d2f4536 1048 case INSN_DEFSTASH: /* 140 */
3610fdac
JH
1049 {
1050 svindex arg;
1051 BGET_svindex(arg);
1052 *(SV**)&PL_defstash = arg;
1053 break;
1054 }
8d2f4536 1055 case INSN_DATA: /* 141 */
3610fdac
JH
1056 {
1057 U8 arg;
1058 BGET_U8(arg);
1059 BSET_data(none, arg);
1060 break;
1061 }
8d2f4536 1062 case INSN_INCAV: /* 142 */
3610fdac
JH
1063 {
1064 svindex arg;
1065 BGET_svindex(arg);
0ac16f7c 1066 *(SV**)&GvAV(PL_incgv) = arg;
3610fdac
JH
1067 break;
1068 }
8d2f4536 1069 case INSN_LOAD_GLOB: /* 143 */
3610fdac
JH
1070 {
1071 svindex arg;
1072 BGET_svindex(arg);
1073 BSET_load_glob(none, arg);
1074 break;
1075 }
1076#ifdef USE_ITHREADS
8d2f4536 1077 case INSN_REGEX_PADAV: /* 144 */
3610fdac
JH
1078 {
1079 svindex arg;
1080 BGET_svindex(arg);
1081 *(SV**)&PL_regex_padav = arg;
1082 break;
1083 }
1084#endif
8d2f4536 1085 case INSN_DOWARN: /* 145 */
3610fdac
JH
1086 {
1087 U8 arg;
1088 BGET_U8(arg);
1089 PL_dowarn = arg;
1090 break;
1091 }
8d2f4536 1092 case INSN_COMPPAD_NAME: /* 146 */
3610fdac
JH
1093 {
1094 svindex arg;
1095 BGET_svindex(arg);
1096 *(SV**)&PL_comppad_name = arg;
1097 break;
1098 }
8d2f4536 1099 case INSN_XGV_STASH: /* 147 */
3610fdac
JH
1100 {
1101 svindex arg;
1102 BGET_svindex(arg);
1103 *(SV**)&GvSTASH(bstate->bs_sv) = arg;
1104 break;
1105 }
8d2f4536 1106 case INSN_SIGNAL: /* 148 */
3610fdac
JH
1107 {
1108 strconst arg;
1109 BGET_strconst(arg);
1110 BSET_signal(bstate->bs_sv, arg);
1111 break;
1112 }
8d2f4536 1113 case INSN_FORMFEED: /* 149 */
3610fdac
JH
1114 {
1115 svindex arg;
1116 BGET_svindex(arg);
1117 PL_formfeed = arg;
1118 break;
1119 }
79ee8297 1120 default:
cea2e8a9 1121 Perl_croak(aTHX_ "Illegal bytecode instruction %d\n", insn);
79ee8297
MB
1122 /* NOTREACHED */
1123 }
1124 }
3610fdac 1125 return 0;
79ee8297 1126}
37442d52
RGS
1127
1128/* ex: set ro: */