This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
add xs_handshake API
authorDaniel Dragan <bulk88@hotmail.com>
Sat, 8 Nov 2014 05:20:52 +0000 (00:20 -0500)
committerFather Chrysostomos <sprout@cpan.org>
Sat, 8 Nov 2014 06:52:22 +0000 (22:52 -0800)
commitdb6e00bd00dae7b918216c69bd58fe860e640276
treeb812a379126e4f58290cb6f2a9f293aa878abead
parent6402d4ee6fab9f5d76a131921ef72d686ad7aac5
add xs_handshake API

This API elevates the amount of ABI compatibility protection between XS
modules and the interp. It also makes each boot XSUB smaller in machine
code by removing function calls and factoring out code into the new
Perl_xs_handshake and Perl_xs_epilog functions.

sv.c :
- revise padlist duping code to reduce code bloat/asserts on DEBUGGING

ext/DynaLoader/dlutils.c :
- disable version checking so interp startup is faster, ABI mismatches are
  impossible because DynaLoader is never available as a shared library

ext/XS-APItest/XSUB-redefined-macros.xs :
- "" means dont check the version, so switch to " " to make the test in
  xsub_h.t pass, see ML thread "XS_APIVERSION_BOOTCHECK and XS_VERSION
  is CPP defined but "", mow what?"

ext/re/re.xs :
- disable API version checking until #123007 is resolved

ParseXS/Utilities.pm :
109-standard_XS_defs.t :
- remove context from S_croak_xs_usage similar to core commit cb077ed296 .
  CvGV doesn't need a context until 5.21.4 and commit ae77754ae2 and
  by then core's croak_xs_uage API has been long available and this
  backport doesn't need to account for newer perls
- fix test where lack of having PERL_IMPLICIT_CONTEXT caused it to fail
26 files changed:
XSUB.h
cv.h
dist/ExtUtils-ParseXS/Changes
dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm
dist/ExtUtils-ParseXS/t/109-standard_XS_defs.t
dump.c
embed.fnc
embed.h
ext/B/B.xs
ext/Devel-Peek/t/Peek.t
ext/DynaLoader/dlutils.c
ext/XS-APItest/XSUB-redefined-macros.xs
ext/re/re.pm
ext/re/re.xs
op.c
pad.c
perl.c
perl.h
perlio.c
pod/perldiag.pod
proto.h
sv.c
sv.h
util.c
util.h