diff options
Diffstat (limited to 'wasm2c/wasm-rt-impl.c')
-rw-r--r-- | wasm2c/wasm-rt-impl.c | 46 |
1 files changed, 9 insertions, 37 deletions
diff --git a/wasm2c/wasm-rt-impl.c b/wasm2c/wasm-rt-impl.c index 7c88499d..52a42e85 100644 --- a/wasm2c/wasm-rt-impl.c +++ b/wasm2c/wasm-rt-impl.c @@ -257,43 +257,15 @@ void wasm_rt_free_thread(void) { #endif } -#define DEFINE_TABLE_OPS(type) \ - void wasm_rt_allocate_##type##_table(wasm_rt_##type##_table_t* table, \ - uint32_t elements, \ - uint32_t max_elements) { \ - table->size = elements; \ - table->max_size = max_elements; \ - table->data = calloc(table->size, sizeof(wasm_rt_##type##_t)); \ - } \ - void wasm_rt_free_##type##_table(wasm_rt_##type##_table_t* table) { \ - free(table->data); \ - } \ - uint32_t wasm_rt_grow_##type##_table(wasm_rt_##type##_table_t* table, \ - uint32_t delta, \ - wasm_rt_##type##_t init) { \ - uint32_t old_elems = table->size; \ - uint64_t new_elems = (uint64_t)table->size + delta; \ - if (new_elems == 0) { \ - return 0; \ - } \ - if ((new_elems < old_elems) || (new_elems > table->max_size)) { \ - return (uint32_t)-1; \ - } \ - void* new_data = \ - realloc(table->data, new_elems * sizeof(wasm_rt_##type##_t)); \ - if (!new_data) { \ - return (uint32_t)-1; \ - } \ - table->data = new_data; \ - table->size = new_elems; \ - for (uint32_t i = old_elems; i < new_elems; i++) { \ - table->data[i] = init; \ - } \ - return old_elems; \ - } - -DEFINE_TABLE_OPS(funcref) -DEFINE_TABLE_OPS(externref) +// Include table operations for funcref +#define WASM_RT_TABLE_OPS_FUNCREF +#include "wasm-rt-impl-tableops.inc" +#undef WASM_RT_TABLE_OPS_FUNCREF + +// Include table operations for externref +#define WASM_RT_TABLE_OPS_EXTERNREF +#include "wasm-rt-impl-tableops.inc" +#undef WASM_RT_TABLE_OPS_EXTERNREF const char* wasm_rt_strerror(wasm_rt_trap_t trap) { switch (trap) { |