diff options
Diffstat (limited to 'py/vm.c')
-rw-r--r-- | py/vm.c | 35 |
1 files changed, 20 insertions, 15 deletions
@@ -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); } |