This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Stop using AutoLoader in Storable
authorDavid Leadbeater <dgl@dgl.cx>
Tue, 8 Mar 2011 21:45:48 +0000 (21:45 +0000)
committerFather Chrysostomos <sprout@cpan.org>
Sat, 12 Mar 2011 20:52:49 +0000 (12:52 -0800)
Storable isn't that large by today's standards; using AutoLoader
doesn't make much sense now. Although barely significant this shaves
about 1% off the execution time of the tests on my machine.

dist/Storable/Storable.pm

index fcc1588..8d57ab3 100644 (file)
@@ -19,23 +19,31 @@ package Storable; @ISA = qw(Exporter);
         file_magic read_magic
 );
 
         file_magic read_magic
 );
 
-use AutoLoader;
 use FileHandle;
 use vars qw($canonical $forgive_me $VERSION);
 
 $VERSION = '2.27';
 use FileHandle;
 use vars qw($canonical $forgive_me $VERSION);
 
 $VERSION = '2.27';
-*AUTOLOAD = \&AutoLoader::AUTOLOAD;            # Grrr...
 
 
-#
-# Use of Log::Agent is optional
-#
+BEGIN {
+    if (eval { local $SIG{__DIE__}; require Log::Agent; 1 }) {
+        Log::Agent->import;
+    }
+    #
+    # Use of Log::Agent is optional. If it hasn't imported these subs then
+    # provide a fallback implementation.
+    #
+    else {
+        require Carp;
 
 
-{
-    local $SIG{__DIE__};
-    eval "use Log::Agent";
-}
+        *logcroak = sub {
+            Carp::croak(@_);
+        };
 
 
-require Carp;
+        *logcarp = sub {
+          Carp::carp(@_);
+        };
+    }
+}
 
 #
 # They might miss :flock in Fcntl
 
 #
 # They might miss :flock in Fcntl
@@ -57,29 +65,12 @@ sub CLONE {
     Storable::init_perinterp();
 }
 
     Storable::init_perinterp();
 }
 
-# Can't Autoload cleanly as this clashes 8.3 with &retrieve
-sub retrieve_fd { &fd_retrieve }               # Backward compatibility
-
 # By default restricted hashes are downgraded on earlier perls.
 
 $Storable::downgrade_restricted = 1;
 $Storable::accept_future_minor = 1;
 
 XSLoader::load 'Storable', $Storable::VERSION;
 # By default restricted hashes are downgraded on earlier perls.
 
 $Storable::downgrade_restricted = 1;
 $Storable::accept_future_minor = 1;
 
 XSLoader::load 'Storable', $Storable::VERSION;
-1;
-__END__
-#
-# Use of Log::Agent is optional. If it hasn't imported these subs then
-# Autoloader will kindly supply our fallback implementation.
-#
-
-sub logcroak {
-    Carp::croak(@_);
-}
-
-sub logcarp {
-  Carp::carp(@_);
-}
 
 #
 # Determine whether locking is possible, but only when needed.
 
 #
 # Determine whether locking is possible, but only when needed.
@@ -408,6 +399,8 @@ sub fd_retrieve {
        return $self;
 }
 
        return $self;
 }
 
+sub retrieve_fd { &fd_retrieve }               # Backward compatibility
+
 #
 # thaw
 #
 #
 # thaw
 #