summaryrefslogtreecommitdiff
path: root/bytecode.pl
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2005-05-21 18:19:43 +0000
committerNicholas Clark <nick@ccl4.org>2005-05-21 18:19:43 +0000
commit7b2c381cf37e4e4611c4a864b5d6f7134344e3e6 (patch)
tree8807ac10b976a808e6707f79fbff58de3476795c /bytecode.pl
parent6e3207c2a1cd2d1644ac48e4d8ddd6742391e423 (diff)
downloadperl-7b2c381cf37e4e4611c4a864b5d6f7134344e3e6.tar.gz
Move the xpv_pv/xrv_rv member into the SV head, in a union with
IV and UV. Avoid allocating a body for IVs and RVs. p4raw-id: //depot/perl@24531
Diffstat (limited to 'bytecode.pl')
-rw-r--r--bytecode.pl13
1 files changed, 9 insertions, 4 deletions
diff --git a/bytecode.pl b/bytecode.pl
index 5747eaede3..1a090af983 100644
--- a/bytecode.pl
+++ b/bytecode.pl
@@ -212,13 +212,18 @@ struct byteloader_fdata {
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;
};
@@ -361,7 +366,7 @@ ldsv bstate->bs_sv svindex
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
@@ -370,8 +375,8 @@ newop PL_op 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