summaryrefslogtreecommitdiffstatshomepage
path: root/py/runtime0.h
diff options
context:
space:
mode:
Diffstat (limited to 'py/runtime0.h')
-rw-r--r--py/runtime0.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/py/runtime0.h b/py/runtime0.h
index 33fd80e64c..ca88fc13b1 100644
--- a/py/runtime0.h
+++ b/py/runtime0.h
@@ -1,3 +1,17 @@
+// taken from python source, Include/code.h
+#define MP_SCOPE_FLAG_OPTIMISED 0x01
+#define MP_SCOPE_FLAG_NEWLOCALS 0x02
+#define MP_SCOPE_FLAG_VARARGS 0x04
+#define MP_SCOPE_FLAG_VARKEYWORDS 0x08
+#define MP_SCOPE_FLAG_NESTED 0x10
+#define MP_SCOPE_FLAG_GENERATOR 0x20
+/* The MP_SCOPE_FLAG_NOFREE flag is set if there are no free or cell variables.
+ This information is redundant, but it allows a single flag test
+ to determine whether there is any extra work to be done when the
+ call frame is setup.
+*/
+#define MP_SCOPE_FLAG_NOFREE 0x40
+
typedef enum {
RT_UNARY_OP_BOOL, // __bool__
RT_UNARY_OP_LEN, // __len__
@@ -83,6 +97,6 @@ extern void *const rt_fun_table[RT_F_NUMBER_OF];
void rt_init(void);
void rt_deinit(void);
uint rt_get_unique_code_id(void);
-void rt_assign_byte_code(uint unique_code_id, byte *code, uint len, int n_args, int n_locals, int n_stack, bool is_generator);
+void rt_assign_byte_code(uint unique_code_id, byte *code, uint len, int n_args, int n_locals, int n_stack, uint scope_flags);
void rt_assign_native_code(uint unique_code_id, void *f, uint len, int n_args);
void rt_assign_inline_asm_code(uint unique_code_id, void *f, uint len, int n_args);