From 5b4563c8796d609e1b00a7e3af7630b7fee611ae Mon Sep 17 00:00:00 2001 From: Nicholas Clark Date: Mon, 20 Feb 2006 00:02:53 +0000 Subject: Re-order CV flags to bring the 4 CVf_BUILTIN_ATTRS into adjacent bits, and make other flag bits that are paired in the code adjacent. Will produce tighter code on ARM; might help on other platforms too. p4raw-id: //depot/perl@27234 --- cv.h | 25 +++++++++++++------------ ext/Devel/Peek/t/Peek.t | 4 ++-- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/cv.h b/cv.h index ada2e4df3e..dd68f52a5f 100644 --- a/cv.h +++ b/cv.h @@ -74,22 +74,23 @@ Returns the stash of the CV. #define CvFLAGS(sv) ((XPVCV*)SvANY(sv))->xcv_flags #define CvOUTSIDE_SEQ(sv) ((XPVCV*)SvANY(sv))->xcv_outside_seq -#define CVf_CLONE 0x0001 /* anon CV uses external lexicals */ -#define CVf_CLONED 0x0002 /* a clone of one of those */ -#define CVf_ANON 0x0004 /* CvGV() can't be trusted */ -#define CVf_OLDSTYLE 0x0008 -#define CVf_UNIQUE 0x0010 /* sub is only called once (eg PL_main_cv, +#define CVf_METHOD 0x0001 /* CV is explicitly marked as a method */ +#define CVf_LOCKED 0x0002 /* CV locks itself or first arg on entry */ +#define CVf_LVALUE 0x0004 /* CV return value can be used as lvalue */ +#define CVf_ASSERTION 0x0008 /* CV called only when asserting */ + +#define CVf_WEAKOUTSIDE 0x0010 /* CvOUTSIDE isn't ref counted */ +#define CVf_CLONE 0x0020 /* anon CV uses external lexicals */ +#define CVf_CLONED 0x0040 /* a clone of one of those */ +#define CVf_ANON 0x0080 /* CvGV() can't be trusted */ +#define CVf_UNIQUE 0x0100 /* sub is only called once (eg PL_main_cv, * require, eval). Not to be confused * with the GVf_UNIQUE flag associated * with the :unique attribute */ -#define CVf_NODEBUG 0x0020 /* no DB::sub indirection for this CV +#define CVf_NODEBUG 0x0200 /* no DB::sub indirection for this CV (esp. useful for special XSUBs) */ -#define CVf_METHOD 0x0040 /* CV is explicitly marked as a method */ -#define CVf_LOCKED 0x0080 /* CV locks itself or first arg on entry */ -#define CVf_LVALUE 0x0100 /* CV return value can be used as lvalue */ -#define CVf_CONST 0x0200 /* inlinable sub */ -#define CVf_WEAKOUTSIDE 0x0400 /* CvOUTSIDE isn't ref counted */ -#define CVf_ASSERTION 0x0800 /* CV called only when asserting */ +#define CVf_CONST 0x0400 /* inlinable sub */ +#define CVf_OLDSTYLE 0x0800 /* This symbol for optimised communication between toke.c and op.c: */ #define CVf_BUILTIN_ATTRS (CVf_METHOD|CVf_LOCKED|CVf_LVALUE|CVf_ASSERTION) diff --git a/ext/Devel/Peek/t/Peek.t b/ext/Devel/Peek/t/Peek.t index 5fcd108842..d7b51ee721 100644 --- a/ext/Devel/Peek/t/Peek.t +++ b/ext/Devel/Peek/t/Peek.t @@ -219,7 +219,7 @@ do_test(13, DEPTH = 0 (?: MUTEXP = $ADDR OWNER = $ADDR -)? FLAGS = 0x404 +)? FLAGS = 0x90 OUTSIDE_SEQ = \\d+ PADLIST = $ADDR PADNAME = $ADDR\\($ADDR\\) PAD = $ADDR\\($ADDR\\) @@ -499,7 +499,7 @@ do_test(23, DEPTH = 0 (?: MUTEXP = $ADDR OWNER = $ADDR -)? FLAGS = 0x200 +)? FLAGS = 0x400 OUTSIDE_SEQ = 0 PADLIST = 0x0 OUTSIDE = 0x0 \\(null\\)'); -- cgit v1.2.1