};
struct wasm_exporttype_t {
- wasm_name_t *name;
+ wasm_name_t name;
wasm_externtype_t *type;
int index;
};
ctx->module->data_entries = malloc(sizeof(struct wasm_data_t) * data_count);
fori (i, 0, (int) data_count) {
- char data_type = CONSUME_BYTE(ctx);
- assert(data_type == 0x00 || data_type == 0x01);
-
struct wasm_data_t data_entry;
data_entry.data = NULL;
data_entry.offset = 0;
data_entry.length = 0;
data_entry.passive = true;
+ char data_type = CONSUME_BYTE(ctx);
if (data_type == 0x00) {
assert(CONSUME_BYTE(ctx) == 0x41);
data_entry.offset = uleb128_to_uint(ctx->binary.data, &ctx->offset);
+ data_entry.passive = false;
assert(CONSUME_BYTE(ctx) == 0x0B);
}
wasm_memorytype_t *wasm_memorytype_new(const wasm_limits_t *limits) {
wasm_memorytype_t *memorytype = malloc(sizeof(*memorytype));
- memorytype->type.kind = WASM_EXTERN_TABLE;
+ memorytype->type.kind = WASM_EXTERN_MEMORY;
memorytype->type.memory.limits = *limits;
return memorytype;
wasm_exporttype_t *wasm_exporttype_new(wasm_name_t* name, wasm_externtype_t *ext) {
wasm_exporttype_t *exporttype = malloc(sizeof(*exporttype));
- exporttype->name = name;
+ exporttype->name = *name;
exporttype->type = ext;
return exporttype;
}
const wasm_name_t* wasm_exporttype_name(const wasm_exporttype_t* exporttype) {
- return exporttype->name;
+ return &exporttype->name;
}
const wasm_externtype_t* wasm_exporttype_type(const wasm_exporttype_t* exporttype) {
wasm_module_t *module = wasm_module_new(store, &wasm_bytes);
assert(module);
+
+ wasm_importtype_vec_t imports;
+ wasm_module_imports(module, &imports);
+
+ fori (i, 0, (int) imports.size) {
+ const wasm_name_t *module_name = wasm_importtype_module(imports.data[i]);
+ const wasm_name_t *import_name = wasm_importtype_name(imports.data[i]);
+ bh_printf("imports: %b.%b\n", module_name->data, module_name->size, import_name->data, import_name->size);
+ }
+
+
+ wasm_exporttype_vec_t exports;
+ wasm_module_exports(module, &exports);
+
+ fori (i, 0, (int) exports.size) {
+ const wasm_name_t *export_name = wasm_exporttype_name(exports.data[i]);
+ bh_printf("exports: %b %d\n", export_name->data, export_name->size, wasm_externtype_kind(wasm_exporttype_type(exports.data[i])));
+ }
}
z: (i32) -> i32 = g;
z(10);
-}
\ No newline at end of file
+
+ foo();
+}
+
+foo :: () -> void #foreign "test" "asdfasdf" ---