In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/6e0eede9b1aceb547aaf28a246d0f7792ed6e360?hp=d50f1408338c986819086d7001a554dcd41e31f5>

- Log -----------------------------------------------------------------
commit 6e0eede9b1aceb547aaf28a246d0f7792ed6e360
Author: Nicholas Clark <[email protected]>
Date:   Wed Oct 6 19:20:04 2010 +0100

    Avoid defining a full XSLoader::bootstrap_inherit post 5.6, as it's not 
needed.
    
    Previously the full pre 5.6 XSLoader::bootstrap_inherit emulation code was
    always declared, but only used with a *runtime* check of Perl version.
    
    However, it appears to be part of the implicit API of XSLoader that
    XSLoader::bootstrap_inherit exists, so keep a stub implementation post 5.6
     the commit.
-----------------------------------------------------------------------

Summary of changes:
 dist/XSLoader/XSLoader_pm.PL |   31 +++++++++++++++++++++++--------
 1 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/dist/XSLoader/XSLoader_pm.PL b/dist/XSLoader/XSLoader_pm.PL
index f2e5bbc..47492e1 100644
--- a/dist/XSLoader/XSLoader_pm.PL
+++ b/dist/XSLoader/XSLoader_pm.PL
@@ -8,7 +8,7 @@ print OUT <<'EOT';
 
 package XSLoader;
 
-$VERSION = "0.11";
+$VERSION = "0.12";
 
 #use strict;
 
@@ -34,7 +34,7 @@ sub load {
     my $boots = "$module\::bootstrap";
     goto &$boots if defined &$boots;
 
-    goto retry unless $module and defined &dl_load_file;
+    goto \&XSLoader::bootstrap_inherit unless $module and defined 
&dl_load_file;
 
     my @modparts = split(/::/,$module);
     my $modfname = $modparts[-1];
@@ -82,7 +82,7 @@ print OUT <<'EOT';
         warn "$bs: $...@\n" if $@;
     }
 
-    goto retry if not -f $file or -s $bs;
+    goto \&XSLoader::bootstrap_inherit if not -f $file or -s $bs;
 
     my $bootname = "boot_$module";
     $bootname =~ s/\W/_/g;
@@ -133,15 +133,26 @@ print OUT <<'EOT';
     # See comment block above
     push(@DynaLoader::dl_shared_objects, $file); # record files loaded
     return &$xs(@_);
+}
+EOT
+
+# Can't test with DynaLoader->can('bootstrap_inherit' when building in the
+# core, as XSLoader gets built before DynaLoader.
 
-  retry:
-    my $bootstrap_inherit = DynaLoader->can('bootstrap_inherit') || 
-                            XSLoader->can('bootstrap_inherit');
-    goto &$bootstrap_inherit;
+if ($] >= 5.006) {
+    print OUT <<'EOT';
+
+sub bootstrap_inherit {
+    require DynaLoader;
+    goto \&DynaLoader::bootstrap_inherit;
 }
 
-# Versions of DynaLoader prior to 5.6.0 don't have this function.
+EOT
+} else {
+    print OUT <<'EOT';
+
 sub bootstrap_inherit {
+    # Versions of DynaLoader prior to 5.6.0 don't have bootstrap_inherit.
     package DynaLoader;
 
     my $module = $_[0];
@@ -152,6 +163,10 @@ sub bootstrap_inherit {
     DynaLoader::bootstrap(@_);
 }
 
+EOT
+}
+
+print OUT <<'EOT';
 1;
 
 

--
Perl5 Master Repository

Reply via email to