Integrate from ansi branch to mainline.
[p5sagit/p5-mst-13.2.git] / scope.c
diff --git a/scope.c b/scope.c
index fe7cb2d..4382072 100644 (file)
--- a/scope.c
+++ b/scope.c
@@ -29,7 +29,7 @@ cxinc(void)
 {
     dTHR;
     cxstack_max = cxstack_max * 3 / 2;
-    Renew(cxstack, cxstack_max + 1, CONTEXT);  /* XXX should fix CXINC macro */
+    Renew(cxstack, cxstack_max + 1, PERL_CONTEXT);     /* XXX should fix CXINC macro */
     return cxstack_ix + 1;
 }
 
@@ -330,6 +330,22 @@ save_sptr(SV **sptr)
     SSPUSHINT(SAVEt_SPTR);
 }
 
+SV **
+save_threadsv(PADOFFSET i)
+{
+#ifdef USE_THREADS
+    dTHR;
+    SV **svp = av_fetch(thr->threadsv, i, FALSE);
+    DEBUG_L(PerlIO_printf(PerlIO_stderr(), "save_threadsv %u: %p %p:%s\n",
+                         i, svp, *svp, SvPEEK(*svp)));
+    save_svref(svp);
+    return svp;
+#else
+    croak("panic: save_threadsv called in non-threaded perl");
+    return 0;
+#endif /* USE_THREADS */
+}
+
 void
 save_nogv(GV *gv)
 {
@@ -475,6 +491,9 @@ leave_scope(I32 base)
            ptr = SSPOPPTR;
        restore_sv:
            sv = *(SV**)ptr;
+           DEBUG_L(PerlIO_printf(PerlIO_stderr(),
+                                 "restore svref: %p %p:%s -> %p:%s\n",
+                                 ptr, sv, SvPEEK(sv), value, SvPEEK(value)));
            if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv) &&
                SvTYPE(sv) != SVt_PVGV)
            {
@@ -683,7 +702,7 @@ leave_scope(I32 base)
 #ifdef DEBUGGING
 
 void
-cx_dump(CONTEXT *cx)
+cx_dump(PERL_CONTEXT *cx)
 {
     dTHR;
     PerlIO_printf(Perl_debug_log, "CX %ld = %s\n", (long)(cx - cxstack), block_type[cx->cx_type]);