aboutsummaryrefslogtreecommitdiff
path: root/py/bc.h
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2019-09-23 23:37:01 +1000
committerDamien George <damien.p.george@gmail.com>2019-10-01 12:26:22 +1000
commit4c5e1a036831a3ac36866e4daab3a50c772b4443 (patch)
tree795134f3011461f5574d64d545a3061eff655ea8 /py/bc.h
parent1d7afcce49366c11f67561019a5adf5e60c450f5 (diff)
py/bc: Change mp_code_state_t.exc_sp to exc_sp_idx.
Change from a pointer to an index, to make space in mp_code_state_t.
Diffstat (limited to 'py/bc.h')
-rw-r--r--py/bc.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/py/bc.h b/py/bc.h
index dafd74376..1d28dcc4f 100644
--- a/py/bc.h
+++ b/py/bc.h
@@ -60,6 +60,13 @@
// const0 : obj
// constN : obj
+// Sentinel value for mp_code_state_t.exc_sp_idx
+#define MP_CODE_STATE_EXC_SP_IDX_SENTINEL ((uint16_t)-1)
+
+// To convert mp_code_state_t.exc_sp_idx to/from a pointer to mp_exc_stack_t
+#define MP_CODE_STATE_EXC_SP_IDX_FROM_PTR(exc_stack, exc_sp) ((exc_sp) + 1 - (exc_stack))
+#define MP_CODE_STATE_EXC_SP_IDX_TO_PTR(exc_stack, exc_sp_idx) ((exc_stack) + (exc_sp_idx) - 1)
+
typedef struct _mp_bytecode_prelude_t {
uint n_state;
uint n_exc_stack;
@@ -92,7 +99,7 @@ typedef struct _mp_code_state_t {
mp_obj_fun_bc_t *fun_bc;
const byte *ip;
mp_obj_t *sp;
- mp_exc_stack_t *exc_sp;
+ uint16_t exc_sp_idx;
mp_obj_dict_t *old_globals;
#if MICROPY_STACKLESS
struct _mp_code_state_t *prev;