diff --git a/src/ceval.h b/src/ceval.h index 0382984c..6ddb57b3 100644 --- a/src/ceval.h +++ b/src/ceval.h @@ -86,10 +86,9 @@ PyVar VM::run_frame(Frame* frame){ } continue; case OP_LOAD_EVAL_FN: frame->push(builtins->attr(m_eval)); continue; case OP_LIST_APPEND: { - pkpy::Args args(2); - args[1] = frame->pop_value(this); // obj - args[0] = frame->top_value_offset(this, -2); // list - fast_call(m_append, std::move(args)); + PyVar obj = frame->pop_value(this); + pkpy::List& list = PyList_AS_C(frame->top_1()); + list.push_back(std::move(obj)); } continue; case OP_BUILD_CLASS: { const Str& clsName = frame->co->names[byte.arg].first; diff --git a/src/frame.h b/src/frame.h index 601b80ea..b56c16bb 100644 --- a/src/frame.h +++ b/src/frame.h @@ -89,12 +89,6 @@ struct Frame { return _data[_data.size()-2]; } - inline PyVar top_value_offset(VM* vm, int n){ - PyVar value = _data[_data.size() + n]; - try_deref(vm, value); - return value; - } - template inline void push(T&& obj){ _data.push_back(std::forward(obj)); }