summaryrefslogtreecommitdiffstatshomepage
path: root/py/vm.c
diff options
context:
space:
mode:
Diffstat (limited to 'py/vm.c')
-rw-r--r--py/vm.c35
1 files changed, 20 insertions, 15 deletions
diff --git a/py/vm.c b/py/vm.c
index 599a1d862e..69f350f9fd 100644
--- a/py/vm.c
+++ b/py/vm.c
@@ -243,7 +243,7 @@ dispatch_loop:
case MP_BC_LOAD_DEREF:
DECODE_UINT;
- PUSH(mp_get_cell(fastn[-unum]));
+ PUSH(mp_obj_cell_get(fastn[-unum]));
break;
case MP_BC_LOAD_NAME:
@@ -290,7 +290,7 @@ dispatch_loop:
case MP_BC_STORE_DEREF:
DECODE_UINT;
- mp_set_cell(fastn[-unum], POP());
+ mp_obj_cell_set(fastn[-unum], POP());
break;
case MP_BC_STORE_NAME:
@@ -580,49 +580,49 @@ unwind_jump:
case MP_BC_BUILD_TUPLE:
DECODE_UINT;
sp -= unum - 1;
- SET_TOP(mp_build_tuple(unum, sp));
+ SET_TOP(mp_obj_new_tuple(unum, sp));
break;
case MP_BC_BUILD_LIST:
DECODE_UINT;
sp -= unum - 1;
- SET_TOP(mp_build_list(unum, sp));
+ SET_TOP(mp_obj_new_list(unum, sp));
break;
case MP_BC_LIST_APPEND:
DECODE_UINT;
// I think it's guaranteed by the compiler that sp[unum] is a list
- mp_list_append(sp[-unum], sp[0]);
+ mp_obj_list_append(sp[-unum], sp[0]);
sp--;
break;
case MP_BC_BUILD_MAP:
DECODE_UINT;
- PUSH(mp_build_map(unum));
+ PUSH(mp_obj_new_dict(unum));
break;
case MP_BC_STORE_MAP:
sp -= 2;
- mp_store_map(sp[0], sp[2], sp[1]);
+ mp_obj_dict_store(sp[0], sp[2], sp[1]);
break;
case MP_BC_MAP_ADD:
DECODE_UINT;
// I think it's guaranteed by the compiler that sp[-unum - 1] is a map
- mp_store_map(sp[-unum - 1], sp[0], sp[-1]);
+ mp_obj_dict_store(sp[-unum - 1], sp[0], sp[-1]);
sp -= 2;
break;
case MP_BC_BUILD_SET:
DECODE_UINT;
sp -= unum - 1;
- SET_TOP(mp_build_set(unum, sp));
+ SET_TOP(mp_obj_new_set(unum, sp));
break;
case MP_BC_SET_ADD:
DECODE_UINT;
// I think it's guaranteed by the compiler that sp[-unum] is a set
- mp_store_set(sp[-unum], sp[0]);
+ mp_obj_set_store(sp[-unum], sp[0]);
sp--;
break;
@@ -648,23 +648,28 @@ unwind_jump:
case MP_BC_MAKE_FUNCTION:
DECODE_UINT;
- PUSH(mp_make_function_from_id(unum, false, MP_OBJ_NULL));
+ PUSH(mp_make_function_from_id(unum, false, MP_OBJ_NULL, MP_OBJ_NULL));
break;
case MP_BC_MAKE_FUNCTION_DEFARGS:
DECODE_UINT;
- SET_TOP(mp_make_function_from_id(unum, false, TOP()));
+ // Stack layout: def_dict def_tuple <- TOS
+ obj1 = POP();
+ SET_TOP(mp_make_function_from_id(unum, false, obj1, TOP()));
break;
case MP_BC_MAKE_CLOSURE:
DECODE_UINT;
- SET_TOP(mp_make_closure_from_id(unum, TOP(), MP_OBJ_NULL));
+ // Stack layout: closure_tuple <- TOS
+ SET_TOP(mp_make_closure_from_id(unum, TOP(), MP_OBJ_NULL, MP_OBJ_NULL));
break;
case MP_BC_MAKE_CLOSURE_DEFARGS:
DECODE_UINT;
+ // Stack layout: def_dict def_tuple closure_tuple <- TOS
obj1 = POP();
- SET_TOP(mp_make_closure_from_id(unum, obj1, TOP()));
+ obj2 = POP();
+ SET_TOP(mp_make_closure_from_id(unum, obj1, obj2, TOP()));
break;
case MP_BC_CALL_FUNCTION:
@@ -764,7 +769,7 @@ yield:
if (inject_exc != MP_OBJ_NULL) {
t_exc = inject_exc;
inject_exc = MP_OBJ_NULL;
- ret_kind = mp_resume(TOP(), mp_const_none, t_exc, &obj2);
+ ret_kind = mp_resume(TOP(), MP_OBJ_NULL, t_exc, &obj2);
} else {
ret_kind = mp_resume(TOP(), obj1, MP_OBJ_NULL, &obj2);
}