This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Correct several Stratus VOS build issues
[perl5.git] / scope.h
diff --git a/scope.h b/scope.h
index 3e05962..f0abb72 100644 (file)
--- a/scope.h
+++ b/scope.h
 #define SAVEt_COMPPAD          33
 #define SAVEt_GENERIC_PVREF    34
 #define SAVEt_PADSV            35
+#define SAVEt_MORTALIZESV      36
+
+#ifndef SCOPE_SAVES_SIGNAL_MASK
+#define SCOPE_SAVES_SIGNAL_MASK 0
+#endif
 
 #define SSCHECK(need) if (PL_savestack_ix + need > PL_savestack_max) savestack_grow()
 #define SSPUSHINT(i) (PL_savestack[PL_savestack_ix++].any_i32 = (I32)(i))
@@ -50,6 +55,8 @@
 #define SSPOPDXPTR (PL_savestack[--PL_savestack_ix].any_dxptr)
 
 /*
+=head1 Callback Functions
+
 =for apidoc Ams||SAVETMPS
 Opening bracket for temporaries on a callback.  See C<FREETMPS> and
 L<perlcall>.
@@ -104,6 +111,7 @@ Closing bracket on a callback.  See C<ENTER> and L<perlcall>.
 #define SAVEVPTR(s)    save_vptr((void*)&(s))
 #define SAVEPADSV(s)   save_padsv(s)
 #define SAVEFREESV(s)  save_freesv((SV*)(s))
+#define SAVEMORTALIZESV(s)     save_mortalizesv((SV*)(s))
 #define SAVEFREEOP(o)  save_freeop(SOFT_CAST(OP*)(o))
 #define SAVEFREEPV(p)  save_freepv(SOFT_CAST(char*)(p))
 #define SAVECLEARSV(sv)        save_clearsv(SOFT_CAST(SV**)&(sv))
@@ -307,7 +315,7 @@ typedef void *(CPERLscope(*protect_proc_t)) (pTHX_ volatile JMPENV *pcur_env,
            DEBUG_l(Perl_deb(aTHX_ "Setting up jumplevel %p, was %p\n", \
                             ce, PL_top_env));                  \
            JMPENV_PUSH_INIT_ENV(ce,NULL);                      \
-           EXCEPT_SET_ENV(ce,PerlProc_setjmp((ce).je_buf, 1));\
+           EXCEPT_SET_ENV(ce,PerlProc_setjmp((ce).je_buf, SCOPE_SAVES_SIGNAL_MASK));\
            (ce).je_noset = 1;                                  \
        }                                                       \
        else                                                    \
@@ -356,7 +364,7 @@ typedef void *(CPERLscope(*protect_proc_t)) (pTHX_ volatile JMPENV *pcur_env,
                         &cur_env, PL_top_env));                        \
        cur_env.je_prev = PL_top_env;                                   \
        OP_REG_TO_MEM;                                                  \
-       cur_env.je_ret = PerlProc_setjmp(cur_env.je_buf, 1);            \
+       cur_env.je_ret = PerlProc_setjmp(cur_env.je_buf, SCOPE_SAVES_SIGNAL_MASK);              \
        OP_MEM_TO_REG;                                                  \
        PL_top_env = &cur_env;                                          \
        cur_env.je_mustcatch = FALSE;                                   \