Make node line macros inline functions
To suppress -Waddress warning and for the debugging purpose.
This commit is contained in:
parent
aca0b92c2f
commit
4bde1493a7
Notes:
git
2025-01-30 09:20:09 +00:00
16
node.h
16
node.h
@ -74,10 +74,20 @@ RUBY_SYMBOL_EXPORT_END
|
||||
#define NODE_LSHIFT (NODE_TYPESHIFT+7)
|
||||
#define NODE_LMASK (((SIGNED_VALUE)1<<(sizeof(VALUE)*CHAR_BIT-NODE_LSHIFT))-1)
|
||||
|
||||
#define nd_line(n) (int)((n) ? ((SIGNED_VALUE)(n)->flags)>>NODE_LSHIFT : -1)
|
||||
#define nd_set_line(n,l) \
|
||||
(n)->flags=(((n)->flags&~((VALUE)(-1)<<NODE_LSHIFT))|((VALUE)((l)&NODE_LMASK)<<NODE_LSHIFT))
|
||||
static inline int
|
||||
nd_line(const NODE *n)
|
||||
{
|
||||
if (!n) return -1;
|
||||
SIGNED_VALUE flags = (SIGNED_VALUE)n->flags;
|
||||
return (int)(flags >> NODE_LSHIFT);
|
||||
}
|
||||
|
||||
static inline void
|
||||
nd_set_line(NODE *n, SIGNED_VALUE l)
|
||||
{
|
||||
n->flags &= ~(~(VALUE)0 << NODE_LSHIFT);
|
||||
n->flags |= ((VALUE)(l & NODE_LMASK) << NODE_LSHIFT);
|
||||
}
|
||||
|
||||
#define NODE_SPECIAL_REQUIRED_KEYWORD ((NODE *)-1)
|
||||
#define NODE_REQUIRED_KEYWORD_P(node) ((node) == NODE_SPECIAL_REQUIRED_KEYWORD)
|
||||
|
Loading…
x
Reference in New Issue
Block a user