This commit is contained in:
blueloveTH 2023-01-31 23:27:57 +08:00
parent 6791c0784a
commit 78922a11b1
3 changed files with 14 additions and 10 deletions

View File

@ -208,6 +208,11 @@ public:
return v; return v;
} }
inline void __pop(){
if(s_data.empty()) throw std::runtime_error("s_data.empty() is true");
s_data.pop_back();
}
inline void try_deref(VM*, PyVar&); inline void try_deref(VM*, PyVar&);
inline PyVar pop_value(VM* vm){ inline PyVar pop_value(VM* vm){

View File

@ -1,8 +1,6 @@
#ifdef OPCODE #ifdef OPCODE
OPCODE(NO_OP) OPCODE(NO_OP)
OPCODE(IMPORT_NAME)
OPCODE(PRINT_EXPR)
OPCODE(POP_TOP) OPCODE(POP_TOP)
OPCODE(DUP_TOP) OPCODE(DUP_TOP)
OPCODE(CALL) OPCODE(CALL)
@ -21,8 +19,13 @@ OPCODE(BUILD_LIST)
OPCODE(BUILD_MAP) OPCODE(BUILD_MAP)
OPCODE(BUILD_SET) OPCODE(BUILD_SET)
OPCODE(BUILD_SLICE) OPCODE(BUILD_SLICE)
OPCODE(BUILD_CLASS)
OPCODE(BUILD_SMART_TUPLE)
OPCODE(BUILD_STRING)
OPCODE(LIST_APPEND) OPCODE(LIST_APPEND)
OPCODE(IMPORT_NAME)
OPCODE(PRINT_EXPR)
OPCODE(GET_ITER) OPCODE(GET_ITER)
OPCODE(FOR_ITER) OPCODE(FOR_ITER)
@ -38,6 +41,8 @@ OPCODE(SAFE_JUMP_ABSOLUTE)
OPCODE(JUMP_IF_TRUE_OR_POP) OPCODE(JUMP_IF_TRUE_OR_POP)
OPCODE(JUMP_IF_FALSE_OR_POP) OPCODE(JUMP_IF_FALSE_OR_POP)
OPCODE(GOTO)
OPCODE(LOAD_CONST) OPCODE(LOAD_CONST)
OPCODE(LOAD_NONE) OPCODE(LOAD_NONE)
OPCODE(LOAD_TRUE) OPCODE(LOAD_TRUE)
@ -51,17 +56,11 @@ OPCODE(LOAD_NAME_REF)
OPCODE(ASSERT) OPCODE(ASSERT)
OPCODE(RAISE_ERROR) OPCODE(RAISE_ERROR)
OPCODE(BUILD_CLASS) OPCODE(BUILD_INDEX_REF)
OPCODE(BUILD_ATTR_REF) OPCODE(BUILD_ATTR_REF)
OPCODE(STORE_NAME) OPCODE(STORE_NAME)
OPCODE(STORE_FUNCTION) OPCODE(STORE_FUNCTION)
OPCODE(BUILD_INDEX_REF)
OPCODE(STORE_REF) OPCODE(STORE_REF)
OPCODE(DELETE_REF) OPCODE(DELETE_REF)
OPCODE(BUILD_SMART_TUPLE)
OPCODE(BUILD_STRING)
OPCODE(GOTO)
#endif #endif

View File

@ -130,7 +130,7 @@ protected:
if(expr == None) break; if(expr == None) break;
*_stdout << PyStr_AS_C(asRepr(expr)) << '\n'; *_stdout << PyStr_AS_C(asRepr(expr)) << '\n';
} break; } break;
case OP_POP_TOP: frame->pop(); break; case OP_POP_TOP: frame->__pop(); break;
case OP_BINARY_OP: case OP_BINARY_OP:
{ {
pkpy::ArgList args(2); pkpy::ArgList args(2);