summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/CORE/scope.h
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl/lib/CORE/scope.h')
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/scope.h32
1 files changed, 17 insertions, 15 deletions
diff --git a/Master/tlpkg/tlperl/lib/CORE/scope.h b/Master/tlpkg/tlperl/lib/CORE/scope.h
index 97ef3faa913..9a504f1bfd8 100644
--- a/Master/tlpkg/tlperl/lib/CORE/scope.h
+++ b/Master/tlpkg/tlperl/lib/CORE/scope.h
@@ -21,7 +21,7 @@
/* one arg */
-#define SAVEt_GP_ALIASED_SV 4
+#define SAVEt_TMPSFLOOR 4
#define SAVEt_BOOL 5
#define SAVEt_COMPILE_WARNINGS 6
#define SAVEt_COMPPAD 7
@@ -100,8 +100,8 @@
* macros */
#define SS_MAXPUSH 4
-#define SSCHECK(need) if (UNLIKELY(PL_savestack_ix + (I32)(need) + SS_MAXPUSH > PL_savestack_max)) savestack_grow()
-#define SSGROW(need) if (UNLIKELY(PL_savestack_ix + (I32)(need) + SS_MAXPUSH > PL_savestack_max)) savestack_grow_cnt(need + SS_MAXPUSH)
+#define SSCHECK(need) if (UNLIKELY(PL_savestack_ix + (I32)(need) > PL_savestack_max)) savestack_grow()
+#define SSGROW(need) if (UNLIKELY(PL_savestack_ix + (I32)(need) > PL_savestack_max)) savestack_grow_cnt(need)
#define SSPUSHINT(i) (PL_savestack[PL_savestack_ix++].any_i32 = (I32)(i))
#define SSPUSHLONG(i) (PL_savestack[PL_savestack_ix++].any_long = (long)(i))
#define SSPUSHBOOL(p) (PL_savestack[PL_savestack_ix++].any_bool = (p))
@@ -119,7 +119,9 @@
* of the grow() can be done. These changes reduce the code of something
* like save_pushptrptr() to half its former size.
* Of course, doing the size check *after* pushing means we must always
- * ensure there are SS_MAXPUSH free slots on the savestack
+ * ensure there are SS_MAXPUSH free slots on the savestack. This ensured
+ * bt savestack_grow() and savestack_grow_cnt always allocating SS_MAXPUSH
+ * slots more than asked for, or that it sets PL_savestack_max to
*
* These are for internal core use only and are subject to change */
@@ -131,9 +133,9 @@
assert((need) <= SS_MAXPUSH); \
ix += (need); \
PL_savestack_ix = ix; \
- assert(ix <= PL_savestack_max); \
- if (UNLIKELY((ix + SS_MAXPUSH) > PL_savestack_max)) savestack_grow(); \
- assert(PL_savestack_ix + SS_MAXPUSH <= PL_savestack_max);
+ assert(ix <= PL_savestack_max + SS_MAXPUSH); \
+ if (UNLIKELY(ix > PL_savestack_max)) savestack_grow(); \
+ assert(PL_savestack_ix <= PL_savestack_max);
#define SS_ADD_INT(i) ((ssp++)->any_i32 = (I32)(i))
#define SS_ADD_LONG(i) ((ssp++)->any_long = (long)(i))
@@ -158,18 +160,18 @@
=head1 Callback Functions
=for apidoc Ams||SAVETMPS
-Opening bracket for temporaries on a callback. See C<FREETMPS> and
+Opening bracket for temporaries on a callback. See C<L</FREETMPS>> and
L<perlcall>.
=for apidoc Ams||FREETMPS
-Closing bracket for temporaries on a callback. See C<SAVETMPS> and
+Closing bracket for temporaries on a callback. See C<L</SAVETMPS>> and
L<perlcall>.
=for apidoc Ams||ENTER
-Opening bracket on a callback. See C<LEAVE> and L<perlcall>.
+Opening bracket on a callback. See C<L</LEAVE>> and L<perlcall>.
=for apidoc Ams||LEAVE
-Closing bracket on a callback. See C<ENTER> and L<perlcall>.
+Closing bracket on a callback. See C<L</ENTER>> and L<perlcall>.
=over
@@ -181,15 +183,15 @@ given literal string with the new scope.
=item LEAVE_with_name(name)
Same as C<LEAVE>, but when debugging is enabled it first checks that the
-scope has the given name. Name must be a literal string.
+scope has the given name. C<name> must be a C<NUL>-terminated literal string.
=back
=cut
*/
-#define SAVETMPS Perl_save_strlen(aTHX_ (STRLEN *)&PL_tmps_floor), \
- PL_tmps_floor = PL_tmps_ix
+#define SAVETMPS Perl_savetmps(aTHX)
+
#define FREETMPS if (PL_tmps_ix > PL_tmps_floor) free_tmps()
#ifdef DEBUGGING
@@ -308,7 +310,7 @@ scope has the given name. Name must be a literal string.
#define SAVECOPLINE(c) SAVEI32(CopLINE(c))
/* SSNEW() temporarily allocates a specified number of bytes of data on the
- * savestack. It returns an integer index into the savestack, because a
+ * savestack. It returns an I32 index into the savestack, because a
* pointer would get broken if the savestack is moved on reallocation.
* SSNEWa() works like SSNEW(), but also aligns the data to the specified
* number of bytes. MEM_ALIGNBYTES is perhaps the most useful. The