diff options
author | Damien George <damien.p.george@gmail.com> | 2016-03-16 13:04:51 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2016-03-16 13:04:51 +0000 |
commit | 3acaa28b52587bace3a4e8382fbf06ed6f6e4aaf (patch) | |
tree | 1bef0f7d436e459f0df8568da8461e237fb7f80a /py/compile.c | |
parent | 52e062ef3396bb94381073547f0dff7b36a6815d (diff) |
py: Don't allocate an extra parse node for power exponent.
Previous to this patch, the "**b" in "a**b" had its own parse node with
just one item (the "b"). Now, the "b" is just the last element of the
power parse-node. This saves (a tiny bit of) RAM when compiling.
Diffstat (limited to 'py/compile.c')
-rw-r--r-- | py/compile.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/py/compile.c b/py/compile.c index 0699692df..9213fd22f 100644 --- a/py/compile.c +++ b/py/compile.c @@ -1970,6 +1970,10 @@ STATIC void compile_power(compiler_t *comp, mp_parse_node_struct_t *pns) { comp->func_arg_is_super = MP_PARSE_NODE_IS_ID(pns->nodes[0]) && MP_PARSE_NODE_LEAF_ARG(pns->nodes[0]) == MP_QSTR_super; compile_generic_all_nodes(comp, pns); + + if (!MP_PARSE_NODE_IS_NULL(pns->nodes[2])) { + EMIT_ARG(binary_op, MP_BINARY_OP_POWER); + } } STATIC void compile_trailer_paren_helper(compiler_t *comp, mp_parse_node_t pn_arglist, bool is_method_call, int n_positional_extra) { @@ -2087,11 +2091,6 @@ STATIC void compile_power_trailers(compiler_t *comp, mp_parse_node_struct_t *pns } } -STATIC void compile_power_dbl_star(compiler_t *comp, mp_parse_node_struct_t *pns) { - compile_node(comp, pns->nodes[0]); - EMIT_ARG(binary_op, MP_BINARY_OP_POWER); -} - STATIC void compile_atom_string(compiler_t *comp, mp_parse_node_struct_t *pns) { // a list of strings |