summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--regen/scope_types.pl2
-rw-r--r--scope.c4
-rw-r--r--scope.h3
-rw-r--r--scope_types.h90
4 files changed, 50 insertions, 49 deletions
diff --git a/regen/scope_types.pl b/regen/scope_types.pl
index 2d56557ece..b7b149be66 100644
--- a/regen/scope_types.pl
+++ b/regen/scope_types.pl
@@ -117,7 +117,6 @@ SAVEt_REGCONTEXT
SAVEt_TMPSFLOOR
SAVEt_BOOL
-SAVEt_COMPILE_WARNINGS
SAVEt_COMPPAD
SAVEt_FREECOPHH
SAVEt_FREEOP
@@ -164,6 +163,7 @@ SAVEt_VPTR
SAVEt_ADELETE
SAVEt_APTR
SAVEt_RCPV_FREE
+SAVEt_COMPILE_WARNINGS
/* three args */
diff --git a/scope.c b/scope.c
index 3f96a491b7..7acbf4939c 100644
--- a/scope.c
+++ b/scope.c
@@ -1639,8 +1639,8 @@ Perl_leave_scope(pTHX_ I32 base)
break;
case SAVEt_COMPILE_WARNINGS:
- a0 = ap[0];
- free_and_set_cop_warnings(&PL_compiling, (STRLEN*) a0.any_ptr);
+ a0 = ap[0]; a1 = ap[1];
+ free_and_set_cop_warnings((COP*)a0.any_ptr, (STRLEN*)a1.any_ptr);
break;
case SAVEt_PARSER:
diff --git a/scope.h b/scope.h
index e3a672a4e7..3b5b37cf75 100644
--- a/scope.h
+++ b/scope.h
@@ -220,7 +220,8 @@ scope has the given name. C<name> must be a literal string.
could have done savefreesharedpvREF, but this way actually seems cleaner,
as it simplifies the code that does the saves, and reduces the load on the
save stack. */
-#define SAVECOMPILEWARNINGS() save_pushptr(PL_compiling.cop_warnings, SAVEt_COMPILE_WARNINGS)
+#define SAVECOPWARNINGS(cop) save_pushptrptr((cop),(cop)->cop_warnings, SAVEt_COMPILE_WARNINGS)
+#define SAVECOMPILEWARNINGS() SAVECOPWARNINGS(&PL_compiling)
#define SAVEPARSER(p) save_pushptr((p), SAVEt_PARSER)
diff --git a/scope_types.h b/scope_types.h
index 960219c648..5e821b8182 100644
--- a/scope_types.h
+++ b/scope_types.h
@@ -24,53 +24,53 @@
#define SAVEt_TMPSFLOOR 4
#define SAVEt_BOOL 5
-#define SAVEt_COMPILE_WARNINGS 6
-#define SAVEt_COMPPAD 7
-#define SAVEt_FREECOPHH 8
-#define SAVEt_FREEOP 9
-#define SAVEt_FREEPV 10
-#define SAVEt_FREESV 11
-#define SAVEt_I16 12
-#define SAVEt_I32_SMALL 13
-#define SAVEt_I8 14
-#define SAVEt_INT_SMALL 15
-#define SAVEt_MORTALIZESV 16
-#define SAVEt_NSTAB 17
-#define SAVEt_OP 18
-#define SAVEt_PARSER 19
-#define SAVEt_STACK_POS 20
-#define SAVEt_READONLY_OFF 21
-#define SAVEt_FREEPADNAME 22
-#define SAVEt_STRLEN_SMALL 23
+#define SAVEt_COMPPAD 6
+#define SAVEt_FREECOPHH 7
+#define SAVEt_FREEOP 8
+#define SAVEt_FREEPV 9
+#define SAVEt_FREESV 10
+#define SAVEt_I16 11
+#define SAVEt_I32_SMALL 12
+#define SAVEt_I8 13
+#define SAVEt_INT_SMALL 14
+#define SAVEt_MORTALIZESV 15
+#define SAVEt_NSTAB 16
+#define SAVEt_OP 17
+#define SAVEt_PARSER 18
+#define SAVEt_STACK_POS 19
+#define SAVEt_READONLY_OFF 20
+#define SAVEt_FREEPADNAME 21
+#define SAVEt_STRLEN_SMALL 22
/* two args */
-#define SAVEt_AV 24
-#define SAVEt_DESTRUCTOR 25
-#define SAVEt_DESTRUCTOR_X 26
-#define SAVEt_GENERIC_PVREF 27
-#define SAVEt_GENERIC_SVREF 28
-#define SAVEt_GP 29
-#define SAVEt_GVSV 30
-#define SAVEt_HINTS 31
-#define SAVEt_HPTR 32
-#define SAVEt_HV 33
-#define SAVEt_I32 34
-#define SAVEt_INT 35
-#define SAVEt_ITEM 36
-#define SAVEt_IV 37
-#define SAVEt_LONG 38
-#define SAVEt_PPTR 39
-#define SAVEt_SAVESWITCHSTACK 40
-#define SAVEt_SHARED_PVREF 41
-#define SAVEt_SPTR 42
-#define SAVEt_STRLEN 43
-#define SAVEt_SV 44
-#define SAVEt_SVREF 45
-#define SAVEt_VPTR 46
-#define SAVEt_ADELETE 47
-#define SAVEt_APTR 48
-#define SAVEt_RCPV_FREE 49
+#define SAVEt_AV 23
+#define SAVEt_DESTRUCTOR 24
+#define SAVEt_DESTRUCTOR_X 25
+#define SAVEt_GENERIC_PVREF 26
+#define SAVEt_GENERIC_SVREF 27
+#define SAVEt_GP 28
+#define SAVEt_GVSV 29
+#define SAVEt_HINTS 30
+#define SAVEt_HPTR 31
+#define SAVEt_HV 32
+#define SAVEt_I32 33
+#define SAVEt_INT 34
+#define SAVEt_ITEM 35
+#define SAVEt_IV 36
+#define SAVEt_LONG 37
+#define SAVEt_PPTR 38
+#define SAVEt_SAVESWITCHSTACK 39
+#define SAVEt_SHARED_PVREF 40
+#define SAVEt_SPTR 41
+#define SAVEt_STRLEN 42
+#define SAVEt_SV 43
+#define SAVEt_SVREF 44
+#define SAVEt_VPTR 45
+#define SAVEt_ADELETE 46
+#define SAVEt_APTR 47
+#define SAVEt_RCPV_FREE 48
+#define SAVEt_COMPILE_WARNINGS 49
/* three args */
@@ -89,7 +89,6 @@ static const U8 leave_scope_arg_counts[] = {
0, /* SAVEt_REGCONTEXT */
1, /* SAVEt_TMPSFLOOR */
1, /* SAVEt_BOOL */
- 1, /* SAVEt_COMPILE_WARNINGS */
1, /* SAVEt_COMPPAD */
1, /* SAVEt_FREECOPHH */
1, /* SAVEt_FREEOP */
@@ -133,6 +132,7 @@ static const U8 leave_scope_arg_counts[] = {
2, /* SAVEt_ADELETE */
2, /* SAVEt_APTR */
2, /* SAVEt_RCPV_FREE */
+ 2, /* SAVEt_COMPILE_WARNINGS */
3, /* SAVEt_HELEM */
3, /* SAVEt_PADSV_AND_MORTALIZE */
3, /* SAVEt_SET_SVFLAGS */