From 6aa2cbe8070e9d7f0385a57bbc0cce1045fd1725 Mon Sep 17 00:00:00 2001 From: ridiculousfish Date: Sat, 19 Dec 2015 18:09:41 -0800 Subject: [PATCH] Shave 4 bytes from parse_node_t Bitfields ftw --- src/parse_tree.cpp | 4 +++- src/parse_tree.h | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/parse_tree.cpp b/src/parse_tree.cpp index c1f1f80f3..ead78a6e5 100644 --- a/src/parse_tree.cpp +++ b/src/parse_tree.cpp @@ -1149,7 +1149,9 @@ void parse_ll_t::accept_tokens(parse_token_t token1, parse_token_t token2) // Get the production for the top of the stack parse_stack_element_t &stack_elem = symbol_stack.back(); parse_node_t &node = nodes.at(stack_elem.node_idx); - const production_t *production = production_for_token(stack_elem.type, token1, token2, &node.tag); + parse_node_tag_t tag = 0; + const production_t *production = production_for_token(stack_elem.type, token1, token2, &tag); + node.tag = tag; if (production == NULL) { parse_error_failed_production(stack_elem, token1); diff --git a/src/parse_tree.h b/src/parse_tree.h index b4c4b8ba4..4d0ad4a6b 100644 --- a/src/parse_tree.h +++ b/src/parse_tree.h @@ -103,10 +103,10 @@ public: enum parse_keyword_t keyword; /* Node flags */ - parse_node_flags_t flags; + parse_node_flags_t flags:4; /* This is used to store e.g. the statement decoration. */ - parse_node_tag_t tag; + parse_node_tag_t tag:4; /* Description */ wcstring describe(void) const;