Change 33029 by [EMAIL PROTECTED] on 2008/01/21 15:14:35
In struct block_eval, access the members old_in_eval and
old_op_type
via macros CxOLD_IN_EVAL() and CxOLD_OP_TYPE(), which will allow
the
storage location to be changed.
Affected files ...
... //depot/perl/cop.h#159 edit
... //depot/perl/pp_ctl.c#665 edit
... //depot/perl/scope.c#215 edit
Differences ...
==== //depot/perl/cop.h#159 (text) ====
Index: perl/cop.h
--- perl/cop.h#158~33028~ 2008-01-21 06:45:56.000000000 -0800
+++ perl/cop.h 2008-01-21 07:14:35.000000000 -0800
@@ -402,6 +402,9 @@
JMPENV * cur_top_env; /* value of PL_top_env when eval CX created */
};
+#define CxOLD_IN_EVAL(cx) (0 + (cx)->blk_eval.old_in_eval)
+#define CxOLD_OP_TYPE(cx) (0 + (cx)->blk_eval.old_op_type)
+
#define PUSHEVAL(cx,n,fgv) \
STMT_START { \
cx->blk_eval.old_in_eval = PL_in_eval; \
@@ -416,8 +419,8 @@
#define POPEVAL(cx) \
STMT_START { \
- PL_in_eval = cx->blk_eval.old_in_eval; \
- optype = cx->blk_eval.old_op_type; \
+ PL_in_eval = CxOLD_IN_EVAL(cx); \
+ optype = CxOLD_OP_TYPE(cx); \
PL_eval_root = cx->blk_eval.old_eval_root; \
if (cx->blk_eval.old_namesv) \
sv_2mortal(cx->blk_eval.old_namesv); \
==== //depot/perl/pp_ctl.c#665 (text) ====
Index: perl/pp_ctl.c
--- perl/pp_ctl.c#664~33024~ 2008-01-21 03:49:38.000000000 -0800
+++ perl/pp_ctl.c 2008-01-21 07:14:35.000000000 -0800
@@ -1672,7 +1672,7 @@
PUSHs(boolSV((gimme & G_WANT) == G_ARRAY));
if (CxTYPE(cx) == CXt_EVAL) {
/* eval STRING */
- if (cx->blk_eval.old_op_type == OP_ENTEREVAL) {
+ if (CxOLD_OP_TYPE(cx) == OP_ENTEREVAL) {
PUSHs(cx->blk_eval.cur_text);
PUSHs(&PL_sv_no);
}
@@ -2437,7 +2437,7 @@
else {
AV* const padlist = CvPADLIST(cv);
if (CxTYPE(cx) == CXt_EVAL) {
- PL_in_eval = cx->blk_eval.old_in_eval;
+ PL_in_eval = CxOLD_IN_EVAL(cx);
PL_eval_root = cx->blk_eval.old_eval_root;
cx->cx_type = CXt_SUB;
}
==== //depot/perl/scope.c#215 (text) ====
Index: perl/scope.c
--- perl/scope.c#214~33017~ 2008-01-20 13:50:31.000000000 -0800
+++ perl/scope.c 2008-01-21 07:14:35.000000000 -0800
@@ -1070,10 +1070,10 @@
break;
case CXt_EVAL:
PerlIO_printf(Perl_debug_log, "BLK_EVAL.OLD_IN_EVAL = %ld\n",
- (long)cx->blk_eval.old_in_eval);
+ (long)CxOLD_IN_EVAL(cx));
PerlIO_printf(Perl_debug_log, "BLK_EVAL.OLD_OP_TYPE = %s (%s)\n",
- PL_op_name[cx->blk_eval.old_op_type],
- PL_op_desc[cx->blk_eval.old_op_type]);
+ PL_op_name[CxOLD_OP_TYPE(cx)],
+ PL_op_desc[CxOLD_OP_TYPE(cx)]);
if (cx->blk_eval.old_namesv)
PerlIO_printf(Perl_debug_log, "BLK_EVAL.OLD_NAME = %s\n",
SvPVX_const(cx->blk_eval.old_namesv));
End of Patch.