summaryrefslogtreecommitdiff
path: root/scope_types.h
diff options
context:
space:
mode:
authorYves Orton <demerphq@gmail.com>2023-03-04 14:19:25 +0100
committerYves Orton <demerphq@gmail.com>2023-03-06 14:43:25 +0800
commit624f6f53b1081642aea65e1f3f172bcaad6c12c7 (patch)
tree4731cfddc244093185954ae3d891466d46319d99 /scope_types.h
parentad2d7a7b8430731f134374105121d039762c6f6c (diff)
downloadperl-624f6f53b1081642aea65e1f3f172bcaad6c12c7.tar.gz
scope.c - improved RCPV support, SAVERCPV SAVEFREERCPV
I misnamed some of the RCPV stuff when it was introduced. The macro which I called SAVERCPVFREE should have been called SAVERCPV, and there should also have been a SAVEFREERCPV macro. Note the naming system for these functions is a bit confusing. SAVEFREERCPV /just/ frees. SAVERCPV saves and restores (eg, its like local). SAVEFREESV is an exception. :-( and it behaves like SAVERCPV. See for instance SAVEPV or similar macros. There also should have been RCPV_REFCNT_dec() and RCPV_REFCNT_inc() macros. There was also missing documentation. This patch should fix all of these issues. Since this functionality has never been released in a production perl it should be fine to do these renames, nothing out there should use these macros yet. I noticed these oversights while fixing Scope::Upper, see also: https://github.com/Perl/perl5/issues/20861 https://rt.cpan.org/Ticket/Display.html?id=146897
Diffstat (limited to 'scope_types.h')
-rw-r--r--scope_types.h72
1 files changed, 37 insertions, 35 deletions
diff --git a/scope_types.h b/scope_types.h
index e021954ff0..f100eb5008 100644
--- a/scope_types.h
+++ b/scope_types.h
@@ -43,45 +43,46 @@
#define SAVEt_READONLY_OFF 22
#define SAVEt_FREEPADNAME 23
#define SAVEt_STRLEN_SMALL 24
+#define SAVEt_FREERCPV 25
/* two args */
-#define SAVEt_AV 25
-#define SAVEt_DESTRUCTOR 26
-#define SAVEt_DESTRUCTOR_X 27
-#define SAVEt_GENERIC_PVREF 28
-#define SAVEt_GENERIC_SVREF 29
-#define SAVEt_GP 30
-#define SAVEt_GVSV 31
-#define SAVEt_HINTS 32
-#define SAVEt_HPTR 33
-#define SAVEt_HV 34
-#define SAVEt_I32 35
-#define SAVEt_INT 36
-#define SAVEt_ITEM 37
-#define SAVEt_IV 38
-#define SAVEt_LONG 39
-#define SAVEt_PPTR 40
-#define SAVEt_SAVESWITCHSTACK 41
-#define SAVEt_SHARED_PVREF 42
-#define SAVEt_SPTR 43
-#define SAVEt_STRLEN 44
-#define SAVEt_SV 45
-#define SAVEt_SVREF 46
-#define SAVEt_VPTR 47
-#define SAVEt_ADELETE 48
-#define SAVEt_APTR 49
-#define SAVEt_RCPV_FREE 50
+#define SAVEt_AV 26
+#define SAVEt_DESTRUCTOR 27
+#define SAVEt_DESTRUCTOR_X 28
+#define SAVEt_GENERIC_PVREF 29
+#define SAVEt_GENERIC_SVREF 30
+#define SAVEt_GP 31
+#define SAVEt_GVSV 32
+#define SAVEt_HINTS 33
+#define SAVEt_HPTR 34
+#define SAVEt_HV 35
+#define SAVEt_I32 36
+#define SAVEt_INT 37
+#define SAVEt_ITEM 38
+#define SAVEt_IV 39
+#define SAVEt_LONG 40
+#define SAVEt_PPTR 41
+#define SAVEt_SAVESWITCHSTACK 42
+#define SAVEt_SHARED_PVREF 43
+#define SAVEt_SPTR 44
+#define SAVEt_STRLEN 45
+#define SAVEt_SV 46
+#define SAVEt_SVREF 47
+#define SAVEt_VPTR 48
+#define SAVEt_ADELETE 49
+#define SAVEt_APTR 50
+#define SAVEt_RCPV 51
/* three args */
-#define SAVEt_HELEM 51
-#define SAVEt_PADSV_AND_MORTALIZE 52
-#define SAVEt_SET_SVFLAGS 53
-#define SAVEt_GVSLOT 54
-#define SAVEt_AELEM 55
-#define SAVEt_DELETE 56
-#define SAVEt_HINTS_HH 57
+#define SAVEt_HELEM 52
+#define SAVEt_PADSV_AND_MORTALIZE 53
+#define SAVEt_SET_SVFLAGS 54
+#define SAVEt_GVSLOT 55
+#define SAVEt_AELEM 56
+#define SAVEt_DELETE 57
+#define SAVEt_HINTS_HH 58
static const U8 leave_scope_arg_counts[] = {
0, /* SAVEt_ALLOC */
@@ -109,6 +110,7 @@ static const U8 leave_scope_arg_counts[] = {
1, /* SAVEt_READONLY_OFF */
1, /* SAVEt_FREEPADNAME */
1, /* SAVEt_STRLEN_SMALL */
+ 1, /* SAVEt_FREERCPV */
2, /* SAVEt_AV */
2, /* SAVEt_DESTRUCTOR */
2, /* SAVEt_DESTRUCTOR_X */
@@ -134,7 +136,7 @@ static const U8 leave_scope_arg_counts[] = {
2, /* SAVEt_VPTR */
2, /* SAVEt_ADELETE */
2, /* SAVEt_APTR */
- 2, /* SAVEt_RCPV_FREE */
+ 2, /* SAVEt_RCPV */
3, /* SAVEt_HELEM */
3, /* SAVEt_PADSV_AND_MORTALIZE */
3, /* SAVEt_SET_SVFLAGS */
@@ -144,6 +146,6 @@ static const U8 leave_scope_arg_counts[] = {
3 /* SAVEt_HINTS_HH */
};
-#define MAX_SAVEt 57
+#define MAX_SAVEt 58
/* ex: set ro ft=C: */