SvPVXtrue single eval->multiple eval
authorDaniel Dragan <bulk88@hotmail.com>
Fri, 23 Nov 2012 21:15:04 +0000 (16:15 -0500)
committerFather Chrysostomos <sprout@cpan.org>
Sat, 24 Nov 2012 02:00:39 +0000 (18:00 -0800)
commit630b72b081fe290d04732279e069c327eea82b09
tree4f6f482b4e9d8f36d78f2b88f734768597c6b8d4
parentb899e89d91e81e631e553a5b805e8d068828dbf0
SvPVXtrue single eval->multiple eval

Make SvTRUE and SvPVXtrue smaller and faster in machine code on non GCC
compilers.

This commit implements my posts here,
http://www.nntp.perl.org/group/perl.perl5.porters/2012/11/msg195720.html
and in my commit message in commit 4cc783efe0 . SvPVXtrue was added in
commit 4bac9ae47b . No reason was given why SvPVXtrue is single eval, but
its only use is in multi eval SvTRUE. A non GCC compiler will write to
PL_Xpv and PL_Sv, and still keep the SV * and PV *s in a register for the
next operations/instructions. The writes to PL_Xpv and PL_Sv are needless.
The use of PL_Xpv and PL_Sv is self explanatory C lang wise. As said in the
ML post, this commit causes overall code bloat because of incorrect uses
of passing macro args that make calls (ERRSV for example) to SvTRUE. This
will have to be fixed in the future. All of the pp opcode funcs decrease
tiny bit in size after this commit. See the ML list post for details.
sv.h