This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Restore 5.004 and 5.005 support in Storable.
authorNicholas Clark <nick@ccl4.org>
Sat, 10 Sep 2011 15:14:31 +0000 (17:14 +0200)
committerNicholas Clark <nick@ccl4.org>
Wed, 14 Sep 2011 09:49:37 +0000 (11:49 +0200)
Add XSLoader as a prerequisite.
Use parentheses for the call to XSLoader::load().
Don't pass parameters that old ExtUtil::MakeMaker doesn't understand.

Avoid the T_BOOL typemap, as xsubpp will always mortalise the SV generated
by processing RETVAL, T_BOOL generates the SV using boolSV() which returns
PL_sv_yes or PL_sv_no, and on 5.004 Perl_sv_2mortal() will croak if passed
a readonly scalar. This is actually a small optimisation on later perls, as
the call to Perl_sv_2mortal() isn't actually needed.

Avoid repeating the PPCODE by merging last_op_in_netorder() with
is_storing() and is_retrieving(). (Which I didn't spot was easy to do
when commit 7cb18e1b020cd2e5 merged is_storing() and is_retrieving().)

Together these reduce the size of the shared object by about 200 bytes on
this platform. Small, but in the right direction.

dist/Storable/Makefile.PL
dist/Storable/Storable.pm
dist/Storable/Storable.xs

index e40f5c5..bcfd9e0 100644 (file)
@@ -13,11 +13,14 @@ WriteMakefile(
     DISTNAME            => "Storable",
 # We now ship this in t/
 #    PREREQ_PM           => { 'Test::More' => '0.41' },
+    PREREQ_PM           => { XSLoader => 0 },
     INSTALLDIRS                => $] >= 5.007 ? 'perl' : 'site',
     VERSION_FROM        => 'Storable.pm',
-    META_MERGE          => { resources =>
+    ($ExtUtils::MakeMaker::VERSION > 6.45 ?
+     (META_MERGE        => { resources =>
                                { bugtracker => 'http://rt.perl.org/perlbug/' }
                            },
+    ) : ()),
     dist                => { SUFFIX => 'gz', COMPRESS => 'gzip -f' },
 );
 
index 76d5486..3e995c3 100644 (file)
@@ -69,7 +69,7 @@ sub CLONE {
 $Storable::downgrade_restricted = 1;
 $Storable::accept_future_minor = 1;
 
-XSLoader::load 'Storable', $Storable::VERSION;
+XSLoader::load('Storable', $Storable::VERSION);
 
 #
 # Determine whether locking is possible, but only when needed.
index 5d95fe5..9b4bb46 100644 (file)
@@ -6438,23 +6438,20 @@ SV *    sv
  OUTPUT:
   RETVAL
 
-bool
+void
 last_op_in_netorder()
- CODE:
-  RETVAL = !!last_op_in_netorder(aTHX);
- OUTPUT:
-  RETVAL
-
-bool
-is_storing()
  ALIAS:
  is_storing = ST_STORE
  is_retrieving = ST_RETRIEVE
- CODE:
- {
-  dSTCXT;
-
-  RETVAL = cxt->entry && (cxt->optype & ix) ? TRUE : FALSE;
- }
- OUTPUT:
-  RETVAL
+ PREINIT:
+  bool result;
+ PPCODE:
+  if (ix) {
+   dSTCXT;
+
+   result = cxt->entry && (cxt->optype & ix) ? TRUE : FALSE;
+  } else {
+   result = !!last_op_in_netorder(aTHX);
+  }
+  ST(0) = boolSV(result);
+  XSRETURN(1);