diff options
author | Yves Orton <demerphq@gmail.com> | 2023-03-04 14:19:25 +0100 |
---|---|---|
committer | Yves Orton <demerphq@gmail.com> | 2023-03-06 14:43:25 +0800 |
commit | 624f6f53b1081642aea65e1f3f172bcaad6c12c7 (patch) | |
tree | 4731cfddc244093185954ae3d891466d46319d99 /scope_types.h | |
parent | ad2d7a7b8430731f134374105121d039762c6f6c (diff) | |
download | perl-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.h | 72 |
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: */ |