diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 717cbbed21..f55e66eb1f 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -33,14 +33,14 @@ jobs: cmake .. make -j $(nproc) cd .. && rm -rf build - - name: Build iwasm [Classic interp] + - name: Build iwasm [classic interp] run: | cd product-mini/platforms/android mkdir build && cd build cmake .. -DWAMR_BUILD_FAST_INTERP=0 make -j $(nproc) cd .. && rm -rf build - - name: Build iwasm [Multi module] + - name: Build iwasm [multi module] run: | cd product-mini/platforms/android mkdir build && cd build @@ -89,3 +89,24 @@ jobs: cmake .. -DWAMR_BUILD_CUSTOM_NAME_SECTION=1 make -j $(nproc) cd .. && rm -rf build + - name: Build iwasm [disable hardware boundary check] + run: | + cd product-mini/platforms/android + mkdir build && cd build + cmake .. -DWAMR_DISABLE_HW_BOUND_CHECK=1 + make -j $(nproc) + cd .. && rm -rf build + - name: Build iwasm [reference types] + run: | + cd product-mini/platforms/android + mkdir build && cd build + cmake .. -DWAMR_BUILD_REF_TYPES=1 + make -j $(nproc) + cd .. && rm -rf build + - name: Build iwasm [128-bit SIMD] + run: | + cd product-mini/platforms/android + mkdir build && cd build + cmake .. -DWAMR_BUILD_SIMD=1 + make -j $(nproc) + cd .. && rm -rf build diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 6f5e5942bf..c73b3a8677 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -31,14 +31,14 @@ jobs: cmake .. make -j $(nproc) cd .. && rm -rf build - - name: Build iwasm [Classic interp] + - name: Build iwasm [classic interp] run: | cd product-mini/platforms/linux mkdir build && cd build cmake .. -DWAMR_BUILD_FAST_INTERP=0 make -j $(nproc) cd .. && rm -rf build - - name: Build iwasm [Multi module] + - name: Build iwasm [multi module] run: | cd product-mini/platforms/linux mkdir build && cd build @@ -87,6 +87,27 @@ jobs: cmake .. -DWAMR_BUILD_CUSTOM_NAME_SECTION=1 make -j $(nproc) cd .. && rm -rf build + - name: Build iwasm [disable hardware boundary check] + run: | + cd product-mini/platforms/linux + mkdir build && cd build + cmake .. -DWAMR_DISABLE_HW_BOUND_CHECK=1 + make -j $(nproc) + cd .. && rm -rf build + - name: Build iwasm [reference types] + run: | + cd product-mini/platforms/linux + mkdir build && cd build + cmake .. -DWAMR_BUILD_REF_TYPES=1 + make -j $(nproc) + cd .. && rm -rf build + - name: Build iwasm [128-bit SIMD] + run: | + cd product-mini/platforms/linux + mkdir build && cd build + cmake .. -DWAMR_BUILD_SIMD=1 + make -j $(nproc) + cd .. && rm -rf build - name: Cache LLVM libraries uses: actions/cache@v2 id: cache_llvm @@ -132,7 +153,10 @@ jobs: ./callback_chain ./global ./hello + ./hostref + ./memory ./reflect + ./table ./trap cd .. && rm -r build - name: Build Sample [wasm-c-api] [Jit] @@ -145,7 +169,10 @@ jobs: ./callback_chain ./global ./hello + ./hostref + ./memory ./reflect + ./table ./trap cd .. && rm -r build - name: Build Sample [wasm-c-api] [Aot] @@ -158,7 +185,10 @@ jobs: ./callback_chain ./global ./hello + ./hostref + ./memory ./reflect + ./table ./trap cd .. && rm -r build - name: Build Sample [basic] @@ -187,3 +217,10 @@ jobs: cmake .. make -j $(nproc) ./spawn_thread + - name: Build Sample [ref-types] + run: | + cd samples/ref-types + mkdir build && cd build + cmake .. + make -j $(nproc) + ./hello diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml index 6c8704b2be..7422d84fc0 100644 --- a/.github/workflows/mac.yml +++ b/.github/workflows/mac.yml @@ -26,63 +26,84 @@ jobs: cd product-mini/platforms/darwin mkdir build && cd build cmake .. - make + make -j $(nproc) cd .. && rm -rf build - - name: Build iwasm [Classic interp] + - name: Build iwasm [classic interp] run: | cd product-mini/platforms/darwin mkdir build && cd build cmake .. -DWAMR_BUILD_FAST_INTERP=0 - make + make -j $(nproc) cd .. && rm -rf build - - name: Build iwasm [Multi module] + - name: Build iwasm [multi module] run: | cd product-mini/platforms/darwin mkdir build && cd build cmake .. -DWAMR_BUILD_MULTI_MODULE=1 - make + make -j $(nproc) cd .. && rm -rf build - name: Build iwasm [lib-pthread] run: | cd product-mini/platforms/darwin mkdir build && cd build cmake .. -DWAMR_BUILD_LIB_PTHREAD=1 - make + make -j $(nproc) cd .. && rm -rf build - name: Build iwasm [aot only] run: | cd product-mini/platforms/darwin mkdir build && cd build cmake .. -DWAMR_BUILD_AOT=1 -DWAMR_BUILD_INTERP=0 - make + make -j $(nproc) cd .. && rm -rf build - name: Build iwasm [interp only] run: | cd product-mini/platforms/darwin mkdir build && cd build cmake .. -DWAMR_BUILD_AOT=0 - make + make -j $(nproc) cd .. && rm -rf build - name: Build iwasm [memory profiling] run: | cd product-mini/platforms/darwin mkdir build && cd build cmake .. -DWAMR_BUILD_MEMORY_PROFILING=1 - make + make -j $(nproc) cd .. && rm -rf build - name: Build iwasm [tail call] run: | cd product-mini/platforms/darwin mkdir build && cd build cmake .. -DWAMR_BUILD_TAIL_CALL=1 - make + make -j $(nproc) cd .. && rm -rf build - name: Build iwasm [custom name section] run: | cd product-mini/platforms/darwin mkdir build && cd build cmake .. -DWAMR_BUILD_CUSTOM_NAME_SECTION=1 - make + make -j $(nproc) + cd .. && rm -rf build + - name: Build iwasm [disable hardware boundary check] + run: | + cd product-mini/platforms/darwin + mkdir build && cd build + cmake .. -DWAMR_DISABLE_HW_BOUND_CHECK=1 + make -j $(nproc) + cd .. && rm -rf build + - name: Build iwasm [ref types] + run: | + cd product-mini/platforms/darwin + mkdir build && cd build + cmake .. -DWAMR_BUILD_REF_TYPES=1 + make -j $(nproc) + cd .. && rm -rf build + - name: Build iwasm [128-bit SIMD] + run: | + cd product-mini/platforms/darwin + mkdir build && cd build + cmake .. -DWAMR_BUILD_SIMD=1 + make -j $(nproc) cd .. && rm -rf build - name: download and install wabt run: | @@ -96,6 +117,12 @@ jobs: mkdir build && cd build cmake .. make - ./hello - ./global ./callback + ./callback_chain + ./global + ./hello + ./hostref + ./memory + ./reflect + ./table + ./trap diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 3ae374f902..b5c0eeaf7f 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -60,4 +60,25 @@ jobs: cmake .. -DWAMR_BUILD_CUSTOM_NAME_SECTION=1 cmake --build . --config Release cd .. && rm -force -r build + - name: Build iwasm [disable hardware boundary check] + run: | + cd product-mini/platforms/windows + mkdir build && cd build + cmake .. -DWAMR_DISABLE_HW_BOUND_CHECK=1 + cmake --build . --config Release + cd .. && rm -force -r build + - name: Build iwasm [reference types] + run: | + cd product-mini/platforms/windows + mkdir build && cd build + cmake .. -DWAMR_BUILD_REF_TYPES=1 + cmake --build . --config Release + cd .. && rm -force -r build + - name: Build iwasm [128-bit SIMD] + run: | + cd product-mini/platforms/windows + mkdir build && cd build + cmake .. -DWAMR_BUILD_SIMD=1 + cmake --build . --config Release + cd .. && rm -force -r build diff --git a/core/iwasm/common/wasm_c_api.c b/core/iwasm/common/wasm_c_api.c index aeab83e438..9eb457a6bd 100644 --- a/core/iwasm/common/wasm_c_api.c +++ b/core/iwasm/common/wasm_c_api.c @@ -130,8 +130,8 @@ failed: \ } \ \ if (data) { \ - unsigned int size_in_bytes = 0; \ - size_in_bytes = size * sizeof(wasm_##name##_t); \ + uint32 size_in_bytes = 0; \ + size_in_bytes = (uint32)(size * sizeof(wasm_##name##_t)); \ bh_memcpy_s(out->data, size_in_bytes, data, size_in_bytes); \ out->num_elems = size; \ } \ @@ -173,8 +173,8 @@ failed: \ } \ \ if (data) { \ - unsigned int size_in_bytes = 0; \ - size_in_bytes = size * sizeof(wasm_##name##_t *); \ + uint32 size_in_bytes = 0; \ + size_in_bytes = (uint32)(size * sizeof(wasm_##name##_t *)); \ bh_memcpy_s(out->data, size_in_bytes, data, size_in_bytes); \ out->num_elems = size; \ } \ @@ -434,12 +434,14 @@ wasm_store_delete(wasm_store_t *store) for (i = 0; i != store_count; ++i) { wasm_store_t *tmp; - if (!bh_vector_get((Vector *)singleton_engine->stores, i, &tmp)) { + if (!bh_vector_get((Vector *)singleton_engine->stores, + (uint32)i, &tmp)) { break; } if (tmp == store) { - bh_vector_remove((Vector *)singleton_engine->stores, i, NULL); + bh_vector_remove((Vector *)singleton_engine->stores, + (uint32)i, NULL); break; } } @@ -1509,9 +1511,9 @@ wasm_frame_new(wasm_instance_t *instance, } frame->instance = instance; - frame->module_offset = module_offset; + frame->module_offset = (uint32)module_offset; frame->func_index = func_index; - frame->func_offset = func_offset; + frame->func_offset = (uint32)func_offset; return frame; } @@ -1787,7 +1789,7 @@ wasm_foreign_new(wasm_store_t *store) foreign->store = store; foreign->kind = WASM_REF_foreign; - foreign->foreign_idx_rt = bh_vector_size(store->foreigns); + foreign->foreign_idx_rt = (uint32)bh_vector_size(store->foreigns); if (!(bh_vector_append(store->foreigns, &foreign))) { wasm_runtime_free(foreign); return NULL; @@ -1932,10 +1934,10 @@ wasm_module_validate(wasm_store_t *store, const wasm_byte_vec_t *binary) if (!store || !binary || binary->size > UINT32_MAX) { LOG_ERROR("%s failed", __FUNCTION__); - return NULL; + return false; } - if ((module_rt = wasm_runtime_load((uint8 *)binary->data, binary->size, + if ((module_rt = wasm_runtime_load((uint8 *)binary->data, (uint32)binary->size, error_buf, 128))) { wasm_runtime_unload(module_rt); return true; @@ -3415,7 +3417,7 @@ wasm_table_get(const wasm_table_t *table, wasm_table_size_t index) if (table->inst_comm_rt->module_type == Wasm_Module_AoT) { AOTModuleInstance *inst_aot = (AOTModuleInstance *)table->inst_comm_rt; AOTTableInstance *table_aot = - inst_aot->tables.ptr + table->table_idx_rt; + (AOTTableInstance*)inst_aot->tables.ptr + table->table_idx_rt; if (index >= table_aot->cur_size) { return NULL; } @@ -3478,7 +3480,7 @@ wasm_table_set(wasm_table_t *table, AOTModuleInstance *inst_aot = (AOTModuleInstance *)table->inst_comm_rt; AOTModule *module_aot = (AOTModule *)inst_aot->aot_module.ptr; AOTTableInstance *table_aot = - inst_aot->tables.ptr + table->table_idx_rt; + (AOTTableInstance *)inst_aot->tables.ptr + table->table_idx_rt; if (index >= table_aot->cur_size) { return false; diff --git a/core/iwasm/common/wasm_runtime_common.c b/core/iwasm/common/wasm_runtime_common.c index 70981c634c..ee5cd3ddfd 100644 --- a/core/iwasm/common/wasm_runtime_common.c +++ b/core/iwasm/common/wasm_runtime_common.c @@ -4110,7 +4110,7 @@ wasm_runtime_invoke_c_api_native(WASMModuleInstanceCommon *module_inst, char trap_message[128] = { 0 }; bh_memcpy_s( trap_message, 127, trap->message->data, - (trap->message->size < 127 ? trap->message->size : 127)); + (trap->message->size < 127 ? (uint32)trap->message->size : 127)); wasm_runtime_set_exception(module_inst, trap_message); } else { diff --git a/samples/wasm-c-api/CMakeLists.txt b/samples/wasm-c-api/CMakeLists.txt index f6b8d879ce..650dda2d1f 100644 --- a/samples/wasm-c-api/CMakeLists.txt +++ b/samples/wasm-c-api/CMakeLists.txt @@ -137,7 +137,7 @@ foreach(EX ${EXAMPLES}) # generate .aot file if(${WAMR_BUILD_AOT} EQUAL 1) add_custom_target(${EX}_AOT - COMMAND ${WAMRC} -o ${PROJECT_BINARY_DIR}/${EX}.aot + COMMAND ${WAMRC} --enable-ref-types -o ${PROJECT_BINARY_DIR}/${EX}.aot ${PROJECT_BINARY_DIR}/${EX}.wasm DEPENDS ${EX}_WASM BYPRODUCTS ${PROJECT_BINARY_DIR}/${EX}.aot diff --git a/samples/wasm-c-api/src/hostref.c b/samples/wasm-c-api/src/hostref.c index 61ecdabcf2..a2f6035e71 100644 --- a/samples/wasm-c-api/src/hostref.c +++ b/samples/wasm-c-api/src/hostref.c @@ -122,7 +122,11 @@ int main(int argc, const char* argv[]) { // Load binary. printf("Loading binary...\n"); +#if WASM_ENABLE_AOT != 0 && WASM_ENABLE_INTERP == 0 + FILE* file = fopen("hostref.aot", "rb"); +#else FILE* file = fopen("hostref.wasm", "rb"); +#endif if (!file) { printf("> Error loading module!\n"); return 1; diff --git a/samples/wasm-c-api/src/memory.c b/samples/wasm-c-api/src/memory.c index 5297f65524..e73577528c 100644 --- a/samples/wasm-c-api/src/memory.c +++ b/samples/wasm-c-api/src/memory.c @@ -95,7 +95,11 @@ int main(int argc, const char* argv[]) { // Load binary. printf("Loading binary...\n"); +#if WASM_ENABLE_AOT != 0 && WASM_ENABLE_INTERP == 0 + FILE* file = fopen("memory.aot", "rb"); +#else FILE* file = fopen("memory.wasm", "rb"); +#endif if (!file) { printf("> Error loading module!\n"); return 1; diff --git a/samples/wasm-c-api/src/table.c b/samples/wasm-c-api/src/table.c index b9b3a8f41a..a1bc59acfb 100644 --- a/samples/wasm-c-api/src/table.c +++ b/samples/wasm-c-api/src/table.c @@ -77,7 +77,11 @@ int main(int argc, const char* argv[]) { // Load binary. printf("Loading binary...\n"); +#if WASM_ENABLE_AOT != 0 && WASM_ENABLE_INTERP == 0 + FILE* file = fopen("table.aot", "rb"); +#else FILE* file = fopen("table.wasm", "rb"); +#endif if (!file) { printf("> Error loading module!\n"); return 1;