trying to speed up interpretter even more
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 16 Dec 2022 23:28:38 +0000 (17:28 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 16 Dec 2022 23:28:38 +0000 (17:28 -0600)
core/onyx/cbindgen.onyx
interpreter/build.sh
interpreter/src/vm/vm.c

index d77857d0103c306483e28d6677ac9e2be62a101b..2162896fbbac9afff5f654b9a90ed3083682f840 100644 (file)
@@ -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.");
index 62803e3ae49f2c137bc9540a09d15425c008370e..c58d91f53094ff7388c2423b63f182de8d9717c6 100755 (executable)
@@ -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"
index b367d7450d62f0e56509f7a5562a5cc66a818e2c..dab642a8f3d37d87a7eaf74c83470285f8257553 100644 (file)
@@ -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); \
 \