ridiculousfish
3319e308d0
Make ast::node_t non-virtual
...
Eliminate its vtable to save 8 bytes per node, which is a lot!
2020-07-12 16:57:30 -07:00
ridiculousfish
a8eb2a6813
Make union_ptr_t's constructor statically type safe
...
Ensure it cannot be constructed from the wrong node type.
2020-07-12 16:57:30 -07:00
ridiculousfish
8d37be2916
ast lists to use new[] instead of vector
...
Because the list is not changed after construction, we do not need
the vector's capacity field. This reduces the size of lists from 48
to 32 bytes.
2020-07-12 16:57:30 -07:00
ridiculousfish
c12ab7a674
Rearrange ast::node_t fields to improve packing
2020-07-12 16:57:30 -07:00
ridiculousfish
dfeec433d8
Reduce allocation churn in parse_util_detect_errors
...
Reuse a single string for storage.
2020-07-12 16:57:30 -07:00
ridiculousfish
9ee5075fc3
Reformat CPP files
2020-07-12 12:21:25 -07:00
ridiculousfish
225470493b
Make parse_token_type_t an enum class
...
Improves type safety.
2020-07-09 14:22:04 -07:00
ridiculousfish
35cb449aa1
Make parse_statement_decoration_t a class enum
2020-07-07 16:28:39 -07:00
ridiculousfish
4d4455007d
Introduce a new fish ast
...
This is the first commit of a series intended to replace the existing
"parse tree" machinery. It adds a new abstract syntax tree and uses a more
normal recursive descent parser.
Initially there are no users of the new ast. The following commits will
replace parse_tree -> ast for all usages.
2020-07-04 14:58:02 -07:00