File tree Expand file tree Collapse file tree 2 files changed +20
-0
lines changed Expand file tree Collapse file tree 2 files changed +20
-0
lines changed Original file line number Diff line number Diff line change @@ -197,6 +197,11 @@ void mp_globals_locals_set_from_nlr_jump_callback(void *ctx_in) {
197
197
mp_locals_set (ctx -> locals );
198
198
}
199
199
200
+ void mp_call_function_1_from_nlr_jump_callback (void * ctx_in ) {
201
+ nlr_jump_callback_node_call_function_1_t * ctx = ctx_in ;
202
+ ctx -> func (ctx -> arg );
203
+ }
204
+
200
205
mp_obj_t MICROPY_WRAP_MP_LOAD_NAME (mp_load_name )(qstr qst ) {
201
206
// logic: search locals, globals, builtins
202
207
DEBUG_OP_printf ("load name %s\n" , qstr_str (qst ));
Original file line number Diff line number Diff line change 29
29
#include "py/mpstate.h"
30
30
#include "py/pystack.h"
31
31
32
+ // For use with mp_call_function_1_from_nlr_jump_callback.
33
+ #define MP_DEFINE_NLR_JUMP_CALLBACK_FUNCTION_1 (ctx , f , a ) \
34
+ nlr_jump_callback_node_call_function_1_t ctx = { \
35
+ .func = (void (*)(void *))(f), \
36
+ .arg = (a), \
37
+ }
38
+
32
39
typedef enum {
33
40
MP_VM_RETURN_NORMAL ,
34
41
MP_VM_RETURN_YIELD ,
@@ -73,6 +80,13 @@ typedef struct _nlr_jump_callback_node_globals_locals_t {
73
80
mp_obj_dict_t * locals ;
74
81
} nlr_jump_callback_node_globals_locals_t ;
75
82
83
+ // For use with mp_call_function_1_from_nlr_jump_callback.
84
+ typedef struct _nlr_jump_callback_node_call_function_1_t {
85
+ nlr_jump_callback_node_t callback ;
86
+ void (* func )(void * );
87
+ void * arg ;
88
+ } nlr_jump_callback_node_call_function_1_t ;
89
+
76
90
// Tables mapping operator enums to qstrs, defined in objtype.c
77
91
extern const byte mp_unary_op_method_name [];
78
92
extern const byte mp_binary_op_method_name [];
@@ -121,6 +135,7 @@ static inline void mp_globals_set(mp_obj_dict_t *d) {
121
135
}
122
136
123
137
void mp_globals_locals_set_from_nlr_jump_callback (void * ctx_in );
138
+ void mp_call_function_1_from_nlr_jump_callback (void * ctx_in );
124
139
125
140
mp_obj_t mp_load_name (qstr qst );
126
141
mp_obj_t mp_load_global (qstr qst );
You can’t perform that action at this time.
0 commit comments