diff options
author | Damien George <damien.p.george@gmail.com> | 2016-11-13 15:35:11 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2016-11-15 16:48:48 +1100 |
commit | ed9c93f0f13fe2b6b4b0fbc1155b1e38ee1be242 (patch) | |
tree | f12e971d90e0a54d50e7a1008b38cc48a3e49c0c /py/parse.h | |
parent | b0cbfb0492028192a28f0514fba71ec954330108 (diff) |
py/parse: Make mp_parse_node_new_leaf an inline function.
It is split into 2 functions, one to make small ints and the other to make
a non-small-int leaf node. This reduces code size by 32 bytes on
bare-arm, 64 bytes on unix (x64-64) and 144 bytes on stmhal.
Diffstat (limited to 'py/parse.h')
-rw-r--r-- | py/parse.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/py/parse.h b/py/parse.h index 54bbd2645..769f5a875 100644 --- a/py/parse.h +++ b/py/parse.h @@ -76,7 +76,12 @@ typedef struct _mp_parse_node_struct_t { #define MP_PARSE_NODE_STRUCT_KIND(pns) ((pns)->kind_num_nodes & 0xff) #define MP_PARSE_NODE_STRUCT_NUM_NODES(pns) ((pns)->kind_num_nodes >> 8) -mp_parse_node_t mp_parse_node_new_leaf(size_t kind, mp_int_t arg); +static inline mp_parse_node_t mp_parse_node_new_small_int(mp_int_t val) { + return (mp_parse_node_t)(MP_PARSE_NODE_SMALL_INT | ((mp_uint_t)val << 1)); +} +static inline mp_parse_node_t mp_parse_node_new_leaf(size_t kind, mp_int_t arg) { + return (mp_parse_node_t)(kind | ((mp_uint_t)arg << 4)); +} bool mp_parse_node_is_const_false(mp_parse_node_t pn); bool mp_parse_node_is_const_true(mp_parse_node_t pn); bool mp_parse_node_get_int_maybe(mp_parse_node_t pn, mp_obj_t *o); |