Eable post-MVP feature wasm-c-api (#315)

This commit is contained in:
lum1n0us
2020-07-23 16:54:13 +08:00
committed by GitHub
parent 32b2943369
commit 08d01b65c5
26 changed files with 4405 additions and 39 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,180 @@
/*
* Copyright (C) 2019 Intel Corporation. All rights reserved.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
#ifndef _WASM_C_API_INTERNAL_H
#define _WASM_C_API_INTERNAL_H
#include "wasm_c_api.h"
#include "wasm_runtime_common.h"
#ifndef own
#define own
#endif
/* Vectors */
/* we will malloc resource for the vector's data field */
/* we will release resource of data */
/* caller needs to take care resource for the vector itself */
#define DEFAULT_VECTOR_INIT_LENGTH (64)
WASM_DECLARE_VEC(store, *)
WASM_DECLARE_VEC(module, *)
WASM_DECLARE_VEC(instance, *)
/* Runtime Environment */
typedef enum runtime_mode_e {
INTERP_MODE = 0,
JIT_MODE,
AOT_MODE
} runtime_mode_e;
struct wasm_engine_t {
// support one store for now
wasm_store_vec_t *stores;
// Interpreter by deault
runtime_mode_e mode;
};
struct wasm_store_t {
wasm_module_vec_t *modules;
wasm_instance_vec_t *instances;
};
/* Type Representations */
struct wasm_valtype_t {
wasm_valkind_t kind;
};
struct wasm_functype_t {
uint32 extern_kind;
// gona to new and delete own
wasm_valtype_vec_t *params;
wasm_valtype_vec_t *results;
};
struct wasm_globaltype_t {
uint32 extern_kind;
// gona to new and delete own
wasm_valtype_t *val_type;
wasm_mutability_t mutability;
};
struct wasm_tabletype_t {
uint32 extern_kind;
// always be WASM_FUNCREF
wasm_valtype_t *type;
wasm_limits_t *limits;
};
struct wasm_memorytype_t {
uint32 extern_kind;
wasm_limits_t *limits;
};
struct wasm_externtype_t {
uint32 extern_kind;
uint8 data[1];
};
struct wasm_import_type_t {
uint32 extern_kind;
wasm_name_t *module_name;
wasm_name_t *name;
};
struct wasm_export_type_t {
uint32 extern_kind;
wasm_name_t *module_name;
wasm_name_t *name;
};
/* Runtime Objects */
struct wasm_ref_t {};
struct wasm_trap_t {
wasm_byte_vec_t *message;
};
struct wasm_func_t {
wasm_name_t *module_name;
wasm_name_t *name;
uint16 kind;
wasm_functype_t *func_type;
bool with_env;
union {
wasm_func_callback_t cb;
struct callback_ext {
void *env;
wasm_func_callback_with_env_t cb;
void (*finalizer)(void *);
} cb_env;
} u;
/*
* an index in both functions runtime instance lists
* of interpreter mode and aot mode
*/
uint16 func_idx_rt;
WASMModuleInstanceCommon *inst_comm_rt;
};
struct wasm_global_t {
wasm_name_t *module_name;
wasm_name_t *name;
uint16 kind;
wasm_globaltype_t *type;
wasm_val_t *init;
/*
* an index in both global runtime instance lists
* of interpreter mode and aot mode
*/
uint16 global_idx_rt;
WASMModuleInstanceCommon *inst_comm_rt;
};
struct wasm_memory_t {
wasm_name_t *module_name;
wasm_name_t *name;
uint16 kind;
wasm_memorytype_t *type;
/*
* an index in both memory runtime instance lists
* of interpreter mode and aot mode
*/
uint16 memory_idx_rt;
WASMModuleInstanceCommon *inst_comm_rt;
};
struct wasm_table_t {
wasm_name_t *module_name;
wasm_name_t *name;
uint16 kind;
wasm_tabletype_t *type;
/*
* an index in both table runtime instance lists
* of interpreter mode and aot mode
*/
uint16 table_idx_rt;
WASMModuleInstanceCommon *inst_comm_rt;
};
struct wasm_extern_t {
wasm_name_t *module_name;
wasm_name_t *name;
uint16 kind;
uint8 data[1];
};
struct wasm_instance_t {
wasm_extern_vec_t *imports;
wasm_extern_vec_t *exports;
WASMModuleInstanceCommon *inst_comm_rt;
};
#endif /* _WASM_C_API_INTERNAL_H */

View File

@ -67,14 +67,11 @@ typedef struct WASMRegisteredModule {
} WASMRegisteredModule;
#endif
#if WASM_ENABLE_SHARED_MEMORY != 0
typedef struct WASMMemoryInstanceCommon {
uint32 module_type;
uint8 memory_inst_data[1];
} WASMMemoryInstanceCommon;
#endif
typedef package_type_t PackageType;
typedef wasm_section_t WASMSection, AOTSection;

View File

@ -3,8 +3,6 @@
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
#if WASM_ENABLE_SHARED_MEMORY != 0
#include "bh_log.h"
#include "wasm_shared_memory.h"
@ -120,5 +118,3 @@ shared_memory_set_memory_inst(WASMModuleCommon *module,
(void)ret;
return node;
}
#endif /* end of WASM_ENABLE_SHARED_MEMORY */