From 24c25633152e9aa93aedf5def545793d78fe4260 Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Mon, 20 Feb 2023 10:47:41 +0800 Subject: [PATCH] refactor `LIST_APPEND` --- src/ceval.h | 7 +++---- src/frame.h | 6 ------ 2 files changed, 3 insertions(+), 10 deletions(-) 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)); }