diff --git a/3rd/lua_bridge/src/lua_bridge.cpp b/3rd/lua_bridge/src/lua_bridge.cpp index 62f7affe..5a00aab3 100644 --- a/3rd/lua_bridge/src/lua_bridge.cpp +++ b/3rd/lua_bridge/src/lua_bridge.cpp @@ -321,10 +321,7 @@ PyVar lua_popx_to_python(VM* vm) { void initialize_lua_bridge(VM* vm, lua_State* newL){ PyObject* mod = vm->new_module("lua"); - - if(_L != nullptr){ - throw std::runtime_error("lua bridge already initialized"); - } + assert(_L == nullptr); // lua bridge already initialized _L = newL; vm->register_user_class(mod, "Table"); diff --git a/CMakeLists.txt b/CMakeLists.txt index 44360dbe..c0d719cf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) if(MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /utf-8 /Ox /jumptablerdata /GS-") + add_compile_options(/wd4267 /wd4244) else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions -frtti -O2") diff --git a/include/pocketpy/common/namedict.hpp b/include/pocketpy/common/namedict.hpp index a6c088c8..aaeacc7f 100644 --- a/include/pocketpy/common/namedict.hpp +++ b/include/pocketpy/common/namedict.hpp @@ -5,6 +5,8 @@ #include "pocketpy/config.h" +#include + namespace pkpy{ template diff --git a/include/pocketpy/interpreter/profiler.hpp b/include/pocketpy/interpreter/profiler.hpp index 74aa259d..2b1ead30 100644 --- a/include/pocketpy/interpreter/profiler.hpp +++ b/include/pocketpy/interpreter/profiler.hpp @@ -2,6 +2,8 @@ #include "pocketpy/interpreter/frame.hpp" +#include + namespace pkpy { struct _LineRecord{ diff --git a/include/pocketpy/interpreter/vm.hpp b/include/pocketpy/interpreter/vm.hpp index 961d1136..14b4fc02 100644 --- a/include/pocketpy/interpreter/vm.hpp +++ b/include/pocketpy/interpreter/vm.hpp @@ -9,6 +9,8 @@ #include "pocketpy/interpreter/frame.hpp" #include "pocketpy/interpreter/profiler.hpp" +#include + namespace pkpy{ /* Stack manipulation macros */ diff --git a/src/common/memorypool.cpp b/src/common/memorypool.cpp index 6bbfc8ef..361af38e 100644 --- a/src/common/memorypool.cpp +++ b/src/common/memorypool.cpp @@ -3,6 +3,7 @@ #include "pocketpy/config.h" #include +#include namespace pkpy{ diff --git a/src/compiler/compiler.cpp b/src/compiler/compiler.cpp index 83f35d4d..3eb38156 100644 --- a/src/compiler/compiler.cpp +++ b/src/compiler/compiler.cpp @@ -2,6 +2,8 @@ #include "pocketpy/common/version.hpp" #include "pocketpy/interpreter/vm.hpp" +#include + namespace pkpy{ PrattRule Compiler::rules[kTokenCount]; diff --git a/src/compiler/expr.cpp b/src/compiler/expr.cpp index 1bd3c8b1..2c9ae3fb 100644 --- a/src/compiler/expr.cpp +++ b/src/compiler/expr.cpp @@ -43,7 +43,7 @@ namespace pkpy{ // clear the expression stack and generate bytecode void CodeEmitContext::emit_expr(){ - if(s_expr.size() != 1) throw std::runtime_error("s_expr.size() != 1"); + assert(s_expr.size() == 1); Expr_ expr = s_expr.popx(); expr->emit_(this); } @@ -396,7 +396,7 @@ namespace pkpy{ int for_codei = ctx->emit_(OP_FOR_ITER, curr_iblock, BC_KEEPLINE); bool ok = vars->emit_store(ctx); // this error occurs in `vars` instead of this line, but...nevermind - if(!ok) throw std::runtime_error("SyntaxError"); + assert(ok); // this should raise a SyntaxError, but we just assert it ctx->try_merge_for_iter_store(for_codei); if(cond){ cond->emit_(ctx); diff --git a/src/compiler/lexer.cpp b/src/compiler/lexer.cpp index 9edde5ad..5cef480d 100644 --- a/src/compiler/lexer.cpp +++ b/src/compiler/lexer.cpp @@ -79,7 +79,7 @@ static bool is_unicode_Lo_char(uint32_t c) { char Lexer::eatchar() { char c = peekchar(); - if(c == '\n') throw std::runtime_error("eatchar() cannot consume a newline"); + assert(c != '\n'); // eatchar() cannot consume a newline curr_char++; return c; } diff --git a/src/interpreter/frame.cpp b/src/interpreter/frame.cpp index d8ae089c..8e22cf4a 100644 --- a/src/interpreter/frame.cpp +++ b/src/interpreter/frame.cpp @@ -1,6 +1,8 @@ #include "pocketpy/objects/stackmemory.hpp" #include "pocketpy/interpreter/frame.hpp" +#include + namespace pkpy{ PyVar* FastLocals::try_get_name(StrName name){ int index = co->varnames_inv.try_get(name); diff --git a/src/interpreter/vm.cpp b/src/interpreter/vm.cpp index 362f589d..a7c15a9b 100644 --- a/src/interpreter/vm.cpp +++ b/src/interpreter/vm.cpp @@ -2,6 +2,7 @@ #include #include +#include static const char* OP_NAMES[] = { #define OPCODE(name) #name, diff --git a/src/pocketpy_c.cpp b/src/pocketpy_c.cpp index 5c45c385..8f01f68a 100644 --- a/src/pocketpy_c.cpp +++ b/src/pocketpy_c.cpp @@ -38,9 +38,7 @@ static PyVar stack_item(VM* vm, int index){ } int size = end - begin; if(index < 0) index += size; - if(index < 0 || index >= size){ - throw std::runtime_error("stack_item() => index out of range"); - } + assert(index >= 0 && index < size); return begin[index]; }