Skip to content

Commit 4bde149

Browse files
committed
Make node line macros inline functions
To suppress -Waddress warning and for the debugging purpose.
1 parent aca0b92 commit 4bde149

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

node.h

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,20 @@ RUBY_SYMBOL_EXPORT_END
7474
#define NODE_LSHIFT (NODE_TYPESHIFT+7)
7575
#define NODE_LMASK (((SIGNED_VALUE)1<<(sizeof(VALUE)*CHAR_BIT-NODE_LSHIFT))-1)
7676

77-
#define nd_line(n) (int)((n) ? ((SIGNED_VALUE)(n)->flags)>>NODE_LSHIFT : -1)
78-
#define nd_set_line(n,l) \
79-
(n)->flags=(((n)->flags&~((VALUE)(-1)<<NODE_LSHIFT))|((VALUE)((l)&NODE_LMASK)<<NODE_LSHIFT))
77+
static inline int
78+
nd_line(const NODE *n)
79+
{
80+
if (!n) return -1;
81+
SIGNED_VALUE flags = (SIGNED_VALUE)n->flags;
82+
return (int)(flags >> NODE_LSHIFT);
83+
}
8084

85+
static inline void
86+
nd_set_line(NODE *n, SIGNED_VALUE l)
87+
{
88+
n->flags &= ~(~(VALUE)0 << NODE_LSHIFT);
89+
n->flags |= ((VALUE)(l & NODE_LMASK) << NODE_LSHIFT);
90+
}
8191

8292
#define NODE_SPECIAL_REQUIRED_KEYWORD ((NODE *)-1)
8393
#define NODE_REQUIRED_KEYWORD_P(node) ((node) == NODE_SPECIAL_REQUIRED_KEYWORD)

0 commit comments

Comments
 (0)