SV *specialsv_list[6];
BYTECODE_HEADER_CHECK; /* croak if incorrect platform */
- New(666, bstate->bs_obj_list, 32, void*); /* set op objlist */
+ Newx(bstate->bs_obj_list, 32, void*); /* set op objlist */
bstate->bs_obj_list_fill = 31;
bstate->bs_obj_list[0] = NULL; /* first is always Null */
bstate->bs_ix = 1;
int idx;
};
+struct byteloader_pv_state {
+ char *pvx;
+ XPV xpv;
+};
+
struct byteloader_state {
struct byteloader_fdata *bs_fdata;
SV *bs_sv;
void **bs_obj_list;
int bs_obj_list_fill;
int bs_ix;
- XPV bs_pv;
+ struct byteloader_pv_state bs_pv;
int bs_iv_overflows;
};
my $sv_name = $specialsv_name[$sv_index];
Certain SV types are considered 'special'. They're represented by
-B::SPECIAL and are refered to by a number from the specialsv_list.
+B::SPECIAL and are referred to by a number from the specialsv_list.
This array maps that number back to the name of the SV (like 'Nullsv'
or '&PL_sv_undef').
ldop PL_op opindex
stsv bstate->bs_sv U32 s
stop PL_op U32 s
-stpv bstate->bs_pv.xpv_pv U32 x
+stpv bstate->bs_pv.pvx U32 x
ldspecsv bstate->bs_sv U8 x
ldspecsvx bstate->bs_sv U8 x
newsv bstate->bs_sv U8 x
newopx PL_op U16 x
newopn PL_op U8 x
newpv none PV
-pv_cur bstate->bs_pv.xpv_cur STRLEN
-pv_free bstate->bs_pv none x
+pv_cur bstate->bs_pv.xpv.xpv_cur STRLEN
+pv_free bstate->bs_pv.pvx none x
sv_upgrade bstate->bs_sv U8 x
sv_refcnt SvREFCNT(bstate->bs_sv) U32
sv_refcnt_add SvREFCNT(bstate->bs_sv) I32 x
xav_fill AvFILLp(bstate->bs_sv) SSize_t
xav_max AvMAX(bstate->bs_sv) SSize_t
xhv_riter HvRITER(bstate->bs_sv) I32
-xhv_name HvNAME(bstate->bs_sv) pvindex
+xhv_name bstate->bs_sv pvindex x
hv_store bstate->bs_sv svindex x
sv_magic bstate->bs_sv char x
mg_obj SvMAGIC(bstate->bs_sv)->mg_obj svindex
cop_filegv cCOP svindex x
#endif
cop_seq cCOP->cop_seq U32
-cop_arybase cCOP->cop_arybase I32
+cop_arybase cCOP I32 x
cop_line cCOP->cop_line line_t
cop_io cCOP->cop_io svindex
cop_warnings cCOP->cop_warnings svindex