[PATCH] Refactoring to Sv*_set() macros - patch #6
[email protected] (Steve Peters) Wed, 20 Apr 2005 06:27:20 -0500
| Newsgroups | perl.perl5.porters,perl.ponie.dev |
|---|---|
| Message-ID | <[email protected]> |
--IJpNTDwzlM2Ie8A6 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Argh! I spoke too soon again. This patch is mainly clean up of a file missed in the previous patch, lvalue assignments that showed up when an additional -D flag was set, and changes to bytecode.pl and ext/Byteloader/bytecode.h since I hadn't realized that byterun.c was a generated file. Questions and comments are welcome. Steve Peters [email protected] --IJpNTDwzlM2Ie8A6 Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="misc.patch" --- ext/ByteLoader/bytecode.h.orig 2003-09-04 13:45:58.000000000 -0500 +++ ext/ByteLoader/bytecode.h 2005-04-19 23:52:22.801862984 -0500 @@ -126,12 +126,19 @@ #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) --- bytecode.pl.orig 2004-11-16 05:24:36.000000000 -0600 +++ bytecode.pl 2005-04-19 23:50:28.577227768 -0500 @@ -368,12 +368,12 @@ 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_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 --- malloc.c.orig 2005-04-18 07:44:18.000000000 -0500 +++ malloc.c 2005-04-19 21:34:07.160992088 -0500 @@ -1176,7 +1176,8 @@ 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); } --- sv.c.orig 2005-04-19 17:22:16.000000000 -0500 +++ sv.c 2005-04-19 22:02:41.536367416 -0500 @@ -4586,8 +4586,8 @@ (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. */ @@ -4748,8 +4748,8 @@ 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); } @@ -4989,14 +4989,14 @@ 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); --IJpNTDwzlM2Ie8A6--