ud, 24, ' ', mark, base));
if (base < mark) {
+#if SU_HAS_PERL(5, 19, 4)
+ I32 save = -1;
+ PERL_CONTEXT *cx;
+#endif
+
SU_D(PerlIO_printf(Perl_debug_log, "%p: clear leftovers\n", ud));
+
+#if SU_HAS_PERL(5, 19, 4)
+ cx = cxstack + cxstack_ix;
+ if (CxTYPE(cx) == CXt_SUB)
+ save = PL_scopestack[cx->blk_oldscopesp - 1];
+#endif
+
PL_savestack_ix = mark;
leave_scope(base);
+
+#if SU_HAS_PERL(5, 19, 4)
+ if (CxTYPE(cx) == CXt_SUB)
+ PL_scopestack[cx->blk_oldscopesp - 1] = save;
+#endif
}
PL_savestack_ix = base;
return sud;
}
+#if SU_HAS_PERL(5, 13, 7)
+
static void su_uplevel_storage_delete(pTHX_ su_uplevel_ud *sud) {
#define su_uplevel_storage_delete(S) su_uplevel_storage_delete(aTHX_ (S))
dMY_CXT;
}
}
+#endif
+
static int su_uplevel_goto_static(const OP *o) {
for (; o; o = OpSIBLING(o)) {
/* goto ops are unops with kids. */
return;
#endif
+ SU_LOCK(&su_uid_seq_counter_mutex);
+ PerlMemShared_free(su_uid_seq_counter.seqs);
+ su_uid_seq_counter.size = 0;
+ SU_UNLOCK(&su_uid_seq_counter_mutex);
+
+ MUTEX_DESTROY(&su_uid_seq_counter_mutex);
+
su_initialized = 0;
return;
MUTEX_INIT(&su_uid_seq_counter_mutex);
+ SU_LOCK(&su_uid_seq_counter_mutex);
su_uid_seq_counter.seqs = NULL;
su_uid_seq_counter.size = 0;
+ SU_UNLOCK(&su_uid_seq_counter_mutex);
stash = gv_stashpv(__PACKAGE__, 1);
newCONSTSUB(stash, "TOP", newSViv(0));