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.
diff --git a/py/compile.c b/py/compile.c
index 0699692..9213fd2 100644
--- a/py/compile.c
+++ b/py/compile.c
@@ -1970,6 +1970,10 @@
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_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