diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-01-14 15:42:45 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-01-14 16:12:02 +0900 |
commit | c060bdc2b4ab8eeef5374f4174f5de48ab936d74 (patch) | |
tree | a1c562961e54b2e15339465cb4e5f3644b61c168 /node.h | |
parent | e1fee7f949cb6719122672fa1081c60984a5339f (diff) |
NODE markability should not change by nd_set_type
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/4069
Diffstat (limited to 'node.h')
-rw-r--r-- | node.h | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -187,6 +187,8 @@ typedef struct RNode { #define nd_type(n) ((int) (((n)->flags & NODE_TYPEMASK)>>NODE_TYPESHIFT)) #define nd_set_type(n,t) \ + rb_node_set_type(n, t) +#define nd_init_type(n,t) \ (n)->flags=(((n)->flags&~NODE_TYPEMASK)|((((unsigned long)(t))<<NODE_TYPESHIFT)&NODE_TYPEMASK)) #define NODE_LSHIFT (NODE_TYPESHIFT+7) @@ -471,9 +473,19 @@ void *rb_parser_realloc(struct parser_params *, void *, size_t); void *rb_parser_calloc(struct parser_params *, size_t, size_t); void rb_parser_free(struct parser_params *, void *); PRINTF_ARGS(void rb_parser_printf(struct parser_params *parser, const char *fmt, ...), 2, 3); +void rb_ast_node_type_change(NODE *n, enum node_type type); RUBY_SYMBOL_EXPORT_END +static inline VALUE +rb_node_set_type(NODE *n, enum node_type t) +{ +#if RUBY_DEBUG + rb_ast_node_type_change(n, t); +#endif + return nd_init_type(n, t); +} + #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ |