summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bytecode.pl12
-rw-r--r--ext/ByteLoader/bytecode.h7
-rw-r--r--malloc.c3
-rw-r--r--sv.c12
4 files changed, 21 insertions, 13 deletions
diff --git a/bytecode.pl b/bytecode.pl
index d471763a9f..adf1d1fa46 100644
--- a/bytecode.pl
+++ b/bytecode.pl
@@ -368,12 +368,12 @@ sv_upgrade bstate->bs_sv U8 x
sv_refcnt SvREFCNT(bstate->bs_sv) U32
sv_refcnt_add SvREFCNT(bstate->bs_sv) I32 x
sv_flags SvFLAGS(bstate->bs_sv) U32
-xrv SvRV(bstate->bs_sv) svindex
+xrv bstate->bs_sv svindex x
xpv bstate->bs_sv none x
-xpv_cur SvCUR(bstate->bs_sv) STRLEN
-xpv_len SvLEN(bstate->bs_sv) STRLEN
-xiv SvIVX(bstate->bs_sv) IV
-xnv SvNVX(bstate->bs_sv) NV
+xpv_cur bstate->bs_sv STRLEN x
+xpv_len bstate->bs_sv STRLEN x
+xiv bstate->bs_sv IV x
+xnv bstate->bs_sv NV x
xlv_targoff LvTARGOFF(bstate->bs_sv) STRLEN
xlv_targlen LvTARGLEN(bstate->bs_sv) STRLEN
xlv_targ LvTARG(bstate->bs_sv) svindex
@@ -422,7 +422,7 @@ mg_private SvMAGIC(bstate->bs_sv)->mg_private U16
mg_flags SvMAGIC(bstate->bs_sv)->mg_flags U8
mg_name SvMAGIC(bstate->bs_sv) pvcontents x
mg_namex SvMAGIC(bstate->bs_sv) svindex x
-xmg_stash *(SV**)&SvSTASH(bstate->bs_sv) svindex
+xmg_stash bstate->bs_sv svindex X
gv_fetchpv bstate->bs_sv strconst x
gv_fetchpvx bstate->bs_sv strconst x
gv_stashpv bstate->bs_sv strconst x
diff --git a/ext/ByteLoader/bytecode.h b/ext/ByteLoader/bytecode.h
index 0224625c20..11e7f5fb4e 100644
--- a/ext/ByteLoader/bytecode.h
+++ b/ext/ByteLoader/bytecode.h
@@ -126,12 +126,19 @@ typedef char *pvindex;
#define BSET_mg_namex(mg, arg) \
(mg->mg_ptr = (char*)SvREFCNT_inc((SV*)arg), \
mg->mg_len = HEf_SVKEY)
+#define BSET_xmg_stash(sv, arg) SvSTASH_set(sv, arg)
#define BSET_sv_upgrade(sv, arg) (void)SvUPGRADE(sv, arg)
+#define BSET_xrv(sv, arg) SvRV_set(sv, arg)
#define BSET_xpv(sv) do { \
SvPV_set(sv, bstate->bs_pv.xpv_pv); \
SvCUR_set(sv, bstate->bs_pv.xpv_cur); \
SvLEN_set(sv, bstate->bs_pv.xpv_len); \
} while (0)
+#define BSET_xpv_cur(sv, arg) SvCUR_set(sv, arg)
+#define BSET_xpv_len(sv, arg) SvLEN_set(sv, arg)
+#define BSET_xiv(sv, arg) SvIV_set(sv, arg)
+#define BSET_xnv(sv, arg) SvNV_set(sv, arg)
+
#define BSET_av_extend(sv, arg) av_extend((AV*)sv, arg)
#define BSET_av_push(sv, arg) av_push((AV*)sv, arg)
diff --git a/malloc.c b/malloc.c
index 569ac496b0..de5766d3f6 100644
--- a/malloc.c
+++ b/malloc.c
@@ -1176,7 +1176,8 @@ perl_get_emergency_buffer(IV *size)
SvPOK_off(sv);
SvPV_set(sv, Nullch);
- SvCUR(sv) = SvLEN(sv) = 0;
+ SvCUR_set(sv, 0);
+ SvLEN_set(sv, 0);
*size = malloced_size(pv) + M_OVERHEAD;
return pv - sizeof(union overhead);
}
diff --git a/sv.c b/sv.c
index ff5ba0db5b..f0a5a0f608 100644
--- a/sv.c
+++ b/sv.c
@@ -4541,8 +4541,8 @@ Perl_sv_setsv_flags(pTHX_ SV *dstr, register SV *sstr, I32 flags)
(sflags & SVf_UTF8?-cur:cur), hash));
SvUV_set(dstr, hash);
}
- SvLEN(dstr) = len;
- SvCUR(dstr) = cur;
+ SvLEN_set(dstr, len);
+ SvCUR_set(dstr, cur);
SvREADONLY_on(dstr);
SvFAKE_on(dstr);
/* Relesase a global SV mutex. */
@@ -4703,8 +4703,8 @@ Perl_sv_setsv_cow(pTHX_ SV *dstr, SV *sstr)
SvFLAGS(dstr) = (SVt_PVIV|SVf_POK|SVp_POK|SVf_FAKE|SVf_READONLY);
if (SvUTF8(sstr))
SvUTF8_on(dstr);
- SvLEN(dstr) = len;
- SvCUR(dstr) = cur;
+ SvLEN_set(dstr, len);
+ SvCUR_set(dstr, cur);
if (DEBUG_C_TEST) {
sv_dump(dstr);
}
@@ -4944,14 +4944,14 @@ Perl_sv_force_normal_flags(pTHX_ register SV *sv, U32 flags)
SvREADONLY_off(sv);
/* This SV doesn't own the buffer, so need to New() a new one: */
SvPV_set(sv, (char*)0);
- SvLEN(sv) = 0;
+ SvLEN_set(sv, 0);
if (flags & SV_COW_DROP_PV) {
/* OK, so we don't need to copy our buffer. */
SvPOK_off(sv);
} else {
SvGROW(sv, cur + 1);
Move(pvx,SvPVX(sv),cur,char);
- SvCUR(sv) = cur;
+ SvCUR_set(sv, cur);
*SvEND(sv) = '\0';
}
sv_release_COW(sv, pvx, cur, len, hash, next);