From: Nicholas Clark Date: Fri, 1 Sep 2006 17:25:50 +0000 (+0000) Subject: Merge lval and hasargs into one U8 in struct block_sub X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=2bce612fe74e9201b4580982cff7074a06336462;p=p5sagit%2Fp5-mst-13.2.git Merge lval and hasargs into one U8 in struct block_sub p4raw-id: //depot/perl@28774 --- diff --git a/cop.h b/cop.h index df07aa6..65651b0 100644 --- a/cop.h +++ b/cop.h @@ -268,19 +268,20 @@ struct block_sub { AV * savearray; AV * argarray; I32 olddepth; - U8 hasargs; - U8 lval; /* XXX merge lval and hasargs? */ + /* These are merged to to get struct context down to 64 bytes on ILP32. */ + U8 hasargs_lval; PAD *oldcomppad; OP * retop; /* op to execute on exit from sub */ }; -#define CX_SUB_HASARGS_SET(cx, v) ((cx)->blk_sub.hasargs = (v)) -#define CX_SUB_HASARGS_GET(cx) ((cx)->blk_sub.hasargs + 0) +#define CX_SUB_HASARGS_SET(cx, v) ((cx)->blk_sub.hasargs_lval = \ + ((cx)->blk_sub.hasargs_lval & 0xFE) | ((v) ? 1 : 0)) +#define CX_SUB_HASARGS_GET(cx) ((cx)->blk_sub.hasargs_lval & 0x01) -#define CX_SUB_LVAL_SET(cx, v) ((cx)->blk_sub.lval = (v) & \ - (OPpLVAL_INTRO|OPpENTERSUB_INARGS)) -#define CX_SUB_LVAL(cx) ((cx)->blk_sub.lval + 0) -#define CX_SUB_LVAL_INARGS(cx) ((cx)->blk_sub.lval & \ +#define CX_SUB_LVAL_SET(cx, v) ((cx)->blk_sub.hasargs_lval = \ + (((cx)->blk_sub.hasargs_lval & 0x01) | ((v) & (OPpLVAL_INTRO|OPpENTERSUB_INARGS)))) +#define CX_SUB_LVAL(cx) ((cx)->blk_sub.hasargs_lval & 0xFE) +#define CX_SUB_LVAL_INARGS(cx) ((cx)->blk_sub.hasargs_lval & \ OPpENTERSUB_INARGS) /* base for the next two macros. Don't use directly.