This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Allow TIME_HIRES_DONT_RUN_PROBES=1 to aid cross-compiling
[perl5.git] / inline.h
index 99fe4ad..492a965 100644 (file)
--- a/inline.h
+++ b/inline.h
@@ -423,7 +423,7 @@ S_cx_pushblock(pTHX_ U8 type, U8 gimme, SV** sp, I32 saveix)
     cx->blk_oldmarksp  = PL_markstack_ptr - PL_markstack;
     cx->blk_oldscopesp = PL_scopestack_ix;
     cx->blk_oldpm      = PL_curpm;
-    cx->cx_u.cx_blk.blku_old_tmpsfloor = PL_tmps_floor;
+    cx->blk_old_tmpsfloor = PL_tmps_floor;
 
     PL_tmps_floor        = PL_tmps_ix;
     CX_DEBUG(cx, "PUSH");
@@ -450,7 +450,7 @@ S_cx_popblock(pTHX_ PERL_CONTEXT *cx)
     assert(   (CxTYPE(cx) == CXt_SUB && CxMULTICALL(cx))
             || PL_savestack_ix == cx->blk_oldsaveix);
     PL_curcop     = cx->blk_oldcop;
-    PL_tmps_floor = cx->cx_u.cx_blk.blku_old_tmpsfloor;
+    PL_tmps_floor = cx->blk_old_tmpsfloor;
 }
 
 /* Continue a block elsewhere (e.g. NEXT, REDO, GOTO).
@@ -708,6 +708,54 @@ S_cx_poploop(pTHX_ PERL_CONTEXT *cx)
     }
 }
 
+
+PERL_STATIC_INLINE void
+S_cx_pushwhen(pTHX_ PERL_CONTEXT *cx)
+{
+    PERL_ARGS_ASSERT_CX_PUSHWHEN;
+
+    cx->blk_givwhen.leave_op = cLOGOP->op_other;
+}
+
+
+PERL_STATIC_INLINE void
+S_cx_popwhen(pTHX_ PERL_CONTEXT *cx)
+{
+    PERL_ARGS_ASSERT_CX_POPWHEN;
+    assert(CxTYPE(cx) == CXt_WHEN);
+
+    PERL_UNUSED_ARG(cx);
+    /* currently NOOP */
+}
+
+
+PERL_STATIC_INLINE void
+S_cx_pushgiven(pTHX_ PERL_CONTEXT *cx, SV *orig_defsv)
+{
+    PERL_ARGS_ASSERT_CX_PUSHGIVEN;
+
+    cx->blk_givwhen.leave_op = cLOGOP->op_other;
+    cx->blk_givwhen.defsv_save = orig_defsv;
+}
+
+
+PERL_STATIC_INLINE void
+S_cx_popgiven(pTHX_ PERL_CONTEXT *cx)
+{
+    SV *sv;
+
+    PERL_ARGS_ASSERT_CX_POPGIVEN;
+    assert(CxTYPE(cx) == CXt_GIVEN);
+
+    sv = GvSV(PL_defgv);
+    GvSV(PL_defgv) = cx->blk_givwhen.defsv_save;
+    cx->blk_givwhen.defsv_save = NULL;
+    SvREFCNT_dec(sv);
+}
+
+
+
+
 /*
  * ex: set ts=8 sts=4 sw=4 et:
  */