diff options
author | Daniel Dragan <bulk88@hotmail.com> | 2012-11-15 15:11:10 -0500 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2012-11-15 18:00:00 -0800 |
commit | 6702ba93464c105fae0da7b54ac21a0485c1f0b5 (patch) | |
tree | 7ea0ec76ff2ea8ba3eab5915211c0966b1c95002 /scope.h | |
parent | 2339cd98152c59549162d6ea3b4c0ab6ece0e6af (diff) | |
download | perl-6702ba93464c105fae0da7b54ac21a0485c1f0b5.tar.gz |
save_freeop is not an expression, remove PL_Xpv
save_freeop and SAVEFREEOP are never used in expressions only statements.
Using PL_Xpv is never ideal. For me .text section dropped from 0xC1DFF to
0xC1DBF after applying this.
Diffstat (limited to 'scope.h')
-rw-r--r-- | scope.h | 15 |
1 files changed, 3 insertions, 12 deletions
@@ -272,23 +272,14 @@ scope has the given name. Name must be a literal string. #define save_freesv(op) save_pushptr((void *)(op), SAVEt_FREESV) #define save_mortalizesv(op) save_pushptr((void *)(op), SAVEt_MORTALIZESV) -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) + # define save_freeop(op) \ - ({ \ +STMT_START { \ OP * const _o = (OP *)(op); \ assert(!_o->op_savefree); \ _o->op_savefree = 1; \ save_pushptr((void *)(_o), SAVEt_FREEOP); \ - }) -#else -# define save_freeop(op) \ - ( \ - PL_Xpv = (XPV *)(op), \ - assert_(!((OP *)PL_Xpv)->op_savefree) \ - ((OP *)PL_Xpv)->op_savefree = 1, \ - save_pushptr((void *)(PL_Xpv), SAVEt_FREEOP) \ - ) -#endif + } STMT_END #define save_freepv(pv) save_pushptr((void *)(pv), SAVEt_FREEPV) #define save_op() save_pushptr((void *)(PL_op), SAVEt_OP) |