mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-02-07 07:25:12 +00:00
![Wenyong Huang](/assets/img/avatar_default.png)
Apply clang-format for core/iwasm/include, core/iwasm/common and core/iwasm/aot files. Update spec cases test script: - Checkout latest commit of https://github.com/WebAssembly/spec - Checkout main branch but not master of https://github.com/WebAssembly/threads - Update wabt to latest version And update source debugging document. Signed-off-by: Wenyong Huang <wenyong.huang@intel.com>
115 lines
4.5 KiB
C
115 lines
4.5 KiB
C
/*
|
|
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
|
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
*/
|
|
|
|
#include "../wasm_runtime_common.h"
|
|
#include "../wasm_exec_env.h"
|
|
|
|
void
|
|
invokeNative(void (*native_code)(), uint32 argv[], uint32 argc)
|
|
{
|
|
bh_assert(argc >= sizeof(WASMExecEnv *) / sizeof(uint32));
|
|
|
|
switch (argc) {
|
|
case 0:
|
|
native_code();
|
|
break;
|
|
case 1:
|
|
native_code(argv[0]);
|
|
break;
|
|
case 2:
|
|
native_code(argv[0], argv[1]);
|
|
break;
|
|
case 3:
|
|
native_code(argv[0], argv[1], argv[2]);
|
|
break;
|
|
case 4:
|
|
native_code(argv[0], argv[1], argv[2], argv[3]);
|
|
break;
|
|
case 5:
|
|
native_code(argv[0], argv[1], argv[2], argv[3], argv[4]);
|
|
break;
|
|
case 6:
|
|
native_code(argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
|
|
break;
|
|
case 7:
|
|
native_code(argv[0], argv[1], argv[2], argv[3], argv[4], argv[5],
|
|
argv[6]);
|
|
break;
|
|
case 8:
|
|
native_code(argv[0], argv[1], argv[2], argv[3], argv[4], argv[5],
|
|
argv[6], argv[7]);
|
|
break;
|
|
case 9:
|
|
native_code(argv[0], argv[1], argv[2], argv[3], argv[4], argv[5],
|
|
argv[6], argv[7], argv[8]);
|
|
break;
|
|
case 10:
|
|
native_code(argv[0], argv[1], argv[2], argv[3], argv[4], argv[5],
|
|
argv[6], argv[7], argv[8], argv[9]);
|
|
break;
|
|
case 11:
|
|
native_code(argv[0], argv[1], argv[2], argv[3], argv[4], argv[5],
|
|
argv[6], argv[7], argv[8], argv[9], argv[10]);
|
|
break;
|
|
case 12:
|
|
native_code(argv[0], argv[1], argv[2], argv[3], argv[4], argv[5],
|
|
argv[6], argv[7], argv[8], argv[9], argv[10], argv[11]);
|
|
break;
|
|
case 13:
|
|
native_code(argv[0], argv[1], argv[2], argv[3], argv[4], argv[5],
|
|
argv[6], argv[7], argv[8], argv[9], argv[10], argv[11],
|
|
argv[12]);
|
|
break;
|
|
case 14:
|
|
native_code(argv[0], argv[1], argv[2], argv[3], argv[4], argv[5],
|
|
argv[6], argv[7], argv[8], argv[9], argv[10], argv[11],
|
|
argv[12], argv[13]);
|
|
break;
|
|
case 15:
|
|
native_code(argv[0], argv[1], argv[2], argv[3], argv[4], argv[5],
|
|
argv[6], argv[7], argv[8], argv[9], argv[10], argv[11],
|
|
argv[12], argv[13], argv[14]);
|
|
break;
|
|
case 16:
|
|
native_code(argv[0], argv[1], argv[2], argv[3], argv[4], argv[5],
|
|
argv[6], argv[7], argv[8], argv[9], argv[10], argv[11],
|
|
argv[12], argv[13], argv[14], argv[15]);
|
|
break;
|
|
case 17:
|
|
native_code(argv[0], argv[1], argv[2], argv[3], argv[4], argv[5],
|
|
argv[6], argv[7], argv[8], argv[9], argv[10], argv[11],
|
|
argv[12], argv[13], argv[14], argv[15], argv[16]);
|
|
break;
|
|
case 18:
|
|
native_code(argv[0], argv[1], argv[2], argv[3], argv[4], argv[5],
|
|
argv[6], argv[7], argv[8], argv[9], argv[10], argv[11],
|
|
argv[12], argv[13], argv[14], argv[15], argv[16],
|
|
argv[17]);
|
|
break;
|
|
case 19:
|
|
native_code(argv[0], argv[1], argv[2], argv[3], argv[4], argv[5],
|
|
argv[6], argv[7], argv[8], argv[9], argv[10], argv[11],
|
|
argv[12], argv[13], argv[14], argv[15], argv[16],
|
|
argv[17], argv[18]);
|
|
break;
|
|
case 20:
|
|
native_code(argv[0], argv[1], argv[2], argv[3], argv[4], argv[5],
|
|
argv[6], argv[7], argv[8], argv[9], argv[10], argv[11],
|
|
argv[12], argv[13], argv[14], argv[15], argv[16],
|
|
argv[17], argv[18], argv[19]);
|
|
break;
|
|
default:
|
|
{
|
|
/* FIXME: If this happen, add more cases. */
|
|
WASMExecEnv *exec_env = *(WASMExecEnv **)argv;
|
|
WASMModuleInstanceCommon *module_inst = exec_env->module_inst;
|
|
wasm_runtime_set_exception(
|
|
module_inst,
|
|
"the argument number of native function exceeds maximum");
|
|
return;
|
|
}
|
|
}
|
|
}
|