summaryrefslogtreecommitdiff
path: root/universal.c
diff options
context:
space:
mode:
authorDaniel Dragan <bulk88@hotmail.com>2013-12-26 14:18:16 -0500
committerFather Chrysostomos <sprout@cpan.org>2013-12-29 06:03:29 -0800
commit147eebd0a5a440afce6e575b0430102a24a6ab9d (patch)
tree67ed1b51975788ac2acda37a16584bfab339f890 /universal.c
parentc77808333c43c183362d2c2a2b71cb2af640ff72 (diff)
downloadperl-147eebd0a5a440afce6e575b0430102a24a6ab9d.tar.gz
cut out/inline wrapper calls of sv_*catpvf*
these wrappers use 1 or 2 indirect calls to reach the guts of Perl's format string engine. Win64 and ARM (and I assume other 4 register regcall platforms) compilers can't easily tailcall or optimize these due to sv_vcatpvfn_flags > 4 args and strlen calls. They allocate lots of C stack and set up new frames and copy args over. So just call the core format string function directly. Not all paths to sv_vcatpvfn_flags were optimized since they have no CORE or CPAN grep usage. sv_vcatpvf has usage, sv_catpvf_mg* have none but were done anyway because they sound like they would be commonly used.
Diffstat (limited to 'universal.c')
0 files changed, 0 insertions, 0 deletions