Skip to content

Commit

Permalink
Make node line macros inline functions
Browse files Browse the repository at this point in the history
To suppress -Waddress warning and for the debugging purpose.
  • Loading branch information
nobu committed Jan 30, 2025
1 parent 2ced092 commit 5d396ad
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions node.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 5d396ad

Please sign in to comment.