This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Perl_load_module() no longer moves the current stack, so no need to save it.
authorNicholas Clark <nick@ccl4.org>
Fri, 4 Oct 2013 13:15:56 +0000 (15:15 +0200)
committerFather Chrysostomos <sprout@cpan.org>
Sat, 23 Nov 2013 05:20:37 +0000 (21:20 -0800)
ext/PerlIO-encoding/encoding.xs
ext/Win32CORE/Win32CORE.c
gv.c
toke.c

index a0415d0..f7b5a4c 100644 (file)
@@ -650,11 +650,9 @@ BOOT:
        Perl_warner(aTHX_ packWARN(WARN_IO), ":encoding without 'use Encode'");
 #endif
        ENTER;
-       /* Encode needs a lot of stack - it is likely to move ... */
-       PUTBACK;
        /* The SV is magically freed by load_module */
        load_module(PERL_LOADMOD_NOIMPORT, newSVpvn("Encode", 6), Nullsv, Nullsv);
-       SPAGAIN;
+       assert(sp == PL_stack_sp);
        LEAVE;
     }
     PUSHMARK(sp);
index b318fcc..db58514 100644 (file)
@@ -32,7 +32,7 @@ XS(w32_CORE_all){
     const char *function  = (const char *) XSANY.any_ptr;
     Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT, newSVpvn("Win32",5), newSVnv(0.27));
     SetLastError(err);
-    SPAGAIN;
+    assert(sp == PL_stack_sp);
     PUSHMARK(SP-items);
     call_pv(function, GIMME_V);
 }
diff --git a/gv.c b/gv.c
index 5a4a80e..569537b 100644 (file)
--- a/gv.c
+++ b/gv.c
@@ -1255,14 +1255,15 @@ S_require_tie_mod(pTHX_ GV *gv, const char *varpv, SV* namesv, const char *methp
                                  so save it. For the moment it's always
                                  a single char. */
        const char type = varname == '[' ? '$' : '%';
+#ifdef DEBUGGING
        dSP;
+#endif
        ENTER;
        SAVEFREESV(namesv);
        if ( flags & 1 )
            save_scalar(gv);
-       PUSHSTACKi(PERLSI_MAGIC);
        Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT, module, NULL);
-       POPSTACK;
+       assert(sp == PL_stack_sp);
        stash = gv_stashsv(namesv, 0);
        if (!stash)
            Perl_croak(aTHX_ "panic: Can't use %c%c because %"SVf" is not available",
diff --git a/toke.c b/toke.c
index 1bdeedb..72d2649 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -9228,7 +9228,7 @@ S_new_constant(pTHX_ const char *s, STRLEN len, const char *key, STRLEN keylen,
                            newSVpvs(":full"),
                            newSVpvs(":short"),
                            NULL);
-           SPAGAIN;
+            assert(sp == PL_stack_sp);
            table = GvHV(PL_hintgv);
            if (table
                && (PL_hints & HINT_LOCALIZE_HH)