diff options
author | Nicholas Clark <nick@ccl4.org> | 2005-05-21 18:19:43 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2005-05-21 18:19:43 +0000 |
commit | 7b2c381cf37e4e4611c4a864b5d6f7134344e3e6 (patch) | |
tree | 8807ac10b976a808e6707f79fbff58de3476795c /bytecode.pl | |
parent | 6e3207c2a1cd2d1644ac48e4d8ddd6742391e423 (diff) | |
download | perl-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.pl | 13 |
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 |