From: Brendan Hansen Date: Fri, 16 Dec 2022 23:28:38 +0000 (-0600) Subject: trying to speed up interpretter even more X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=1e594eca6f4510ec593a29fa705c934b8d597fdb;p=onyx.git trying to speed up interpretter even more --- diff --git a/core/onyx/cbindgen.onyx b/core/onyx/cbindgen.onyx index d77857d0..2162896f 100644 --- a/core/onyx/cbindgen.onyx +++ b/core/onyx/cbindgen.onyx @@ -365,7 +365,6 @@ compile_c_file :: ( s_info := cast(^Type_Info_Struct) param_info; if s_info.members.count == 1 { return type_encoding(s_info.members[0].type); - return; } assert(false, "Passing structures between wasm and c is not yet supported."); diff --git a/interpreter/build.sh b/interpreter/build.sh index 62803e3a..c58d91f5 100755 --- a/interpreter/build.sh +++ b/interpreter/build.sh @@ -4,7 +4,7 @@ # FLAGS="-g3 -O2 -DOVM_DEBUG=1" # FLAGS="-g3 -DOVM_VERBOSE=1" -FLAGS="-Ofast" +FLAGS="-Ofast -fno-stack-protector" LIBS="-pthread" TARGET="../shared/lib/linux_$(uname -m)/lib/libovmwasm.so" C_FILES="src/wasm.c src/vm/*.c src/wasm/*.c src/debug/*.c" diff --git a/interpreter/src/vm/vm.c b/interpreter/src/vm/vm.c index b367d745..dab642a8 100644 --- a/interpreter/src/vm/vm.c +++ b/interpreter/src/vm/vm.c @@ -1028,18 +1028,14 @@ OVMI_INSTR_EXEC(ovmi_exec_return) { i32 extra_params = bh_arr_length(state->params) - func->param_count; \ ovm_assert(extra_params >= 0); \ ovm__func_setup_stack_frame(state, func, instr->r); \ + bh_arr_fastdeleten(state->params, func->param_count); \ if (func->kind == OVM_FUNC_INTERNAL) { \ - fori (i, 0, func->param_count) { \ - VAL(i) = state->params[i + extra_params]; \ - } \ - bh_arr_fastdeleten(state->params, func->param_count); \ -\ + memcpy(&VAL(0), &state->params[extra_params], func->param_count * sizeof(ovm_value_t)); \ state->pc = func->start_instr; \ } else { \ ovm_value_t result = {0}; \ ovm_external_func_t external_func = state->external_funcs[func->external_func_idx]; \ external_func.native_func(external_func.userdata, &state->params[extra_params], &result); \ - bh_arr_fastdeleten(state->params, func->param_count); \ \ ovm__func_teardown_stack_frame(state); \ \