summaryrefslogtreecommitdiff
path: root/py/emitnx86.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2018-09-04 14:31:28 +1000
committerDamien George <damien.p.george@gmail.com>2018-09-04 14:31:28 +1000
commit4ae7111573f6866e027e2919e4d331c01108db23 (patch)
tree709ddd2a07cd2169539b7c4a83109b2868d5d321 /py/emitnx86.c
parent3cd2c281d7cf990b3afb78287a58cf4ee3f23ca5 (diff)
py/emitnative: Add support for return/break/continue in try and with.
This patch adds full support for unwinding jumps to the native emitter. This means that return/break/continue can be used in try-except, try-finally and with statements. For code that doesn't use unwinding jumps there is almost no overhead added to the generated code.
Diffstat (limited to 'py/emitnx86.c')
-rw-r--r--py/emitnx86.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/py/emitnx86.c b/py/emitnx86.c
index e94634d27..056c3f052 100644
--- a/py/emitnx86.c
+++ b/py/emitnx86.c
@@ -9,8 +9,10 @@
#define GENERIC_ASM_API (1)
#include "py/asmx86.h"
-// Word index of REG_LOCAL_1(=ebx) in nlr_buf_t
-#define NLR_BUF_IDX_LOCAL_1 (5)
+// Word indices of REG_LOCAL_x in nlr_buf_t
+#define NLR_BUF_IDX_LOCAL_1 (5) // ebx
+#define NLR_BUF_IDX_LOCAL_2 (7) // esi
+#define NLR_BUF_IDX_LOCAL_3 (6) // edi
// x86 needs a table to know how many args a given function has
STATIC byte mp_f_n_args[MP_F_NUMBER_OF] = {