summaryrefslogtreecommitdiff
path: root/wasm2c/wasm-rt-impl.c
diff options
context:
space:
mode:
Diffstat (limited to 'wasm2c/wasm-rt-impl.c')
-rw-r--r--wasm2c/wasm-rt-impl.c176
1 files changed, 0 insertions, 176 deletions
diff --git a/wasm2c/wasm-rt-impl.c b/wasm2c/wasm-rt-impl.c
index 57bd74cf..7c88499d 100644
--- a/wasm2c/wasm-rt-impl.c
+++ b/wasm2c/wasm-rt-impl.c
@@ -36,8 +36,6 @@
#include <sys/mman.h>
#endif
-#define PAGE_SIZE 65536
-
#ifndef NDEBUG
#define DEBUG_PRINTF(...) fprintf(stderr, __VA_ARGS__);
#else
@@ -64,10 +62,6 @@ WASM_RT_THREAD_LOCAL wasm_rt_jmp_buf g_wasm_rt_jmp_buf;
extern void WASM_RT_TRAP_HANDLER(wasm_rt_trap_t code);
#endif
-#ifdef WASM_RT_GROW_FAILED_HANDLER
-extern void WASM_RT_GROW_FAILED_HANDLER();
-#endif
-
void wasm_rt_trap(wasm_rt_trap_t code) {
assert(code != WASM_RT_TRAP_NONE);
#if WASM_RT_STACK_DEPTH_COUNT
@@ -83,47 +77,6 @@ void wasm_rt_trap(wasm_rt_trap_t code) {
}
#ifdef _WIN32
-static void* os_mmap(size_t size) {
- void* ret = VirtualAlloc(NULL, size, MEM_RESERVE, PAGE_NOACCESS);
- return ret;
-}
-
-static int os_munmap(void* addr, size_t size) {
- // Windows can only unmap the whole mapping
- (void)size; /* unused */
- BOOL succeeded = VirtualFree(addr, 0, MEM_RELEASE);
- return succeeded ? 0 : -1;
-}
-
-static int os_mprotect(void* addr, size_t size) {
- if (size == 0) {
- return 0;
- }
- void* ret = VirtualAlloc(addr, size, MEM_COMMIT, PAGE_READWRITE);
- if (ret == addr) {
- return 0;
- }
- VirtualFree(addr, 0, MEM_RELEASE);
- return -1;
-}
-
-static void os_print_last_error(const char* msg) {
- DWORD errorMessageID = GetLastError();
- if (errorMessageID != 0) {
- LPSTR messageBuffer = 0;
- // The api creates the buffer that holds the message
- size_t size = FormatMessageA(
- FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPSTR)&messageBuffer, 0, NULL);
- (void)size;
- printf("%s. %s\n", msg, messageBuffer);
- LocalFree(messageBuffer);
- } else {
- printf("%s. No error code.\n", msg);
- }
-}
#if WASM_RT_INSTALL_SIGNAL_HANDLER
@@ -148,28 +101,6 @@ static void os_cleanup_signal_handler(void) {
#endif
#else
-#if WASM_RT_USE_MMAP
-static void* os_mmap(size_t size) {
- int map_prot = PROT_NONE;
- int map_flags = MAP_ANONYMOUS | MAP_PRIVATE;
- uint8_t* addr = mmap(NULL, size, map_prot, map_flags, -1, 0);
- if (addr == MAP_FAILED)
- return NULL;
- return addr;
-}
-
-static int os_munmap(void* addr, size_t size) {
- return munmap(addr, size);
-}
-
-static int os_mprotect(void* addr, size_t size) {
- return mprotect(addr, size, PROT_READ | PROT_WRITE);
-}
-
-static void os_print_last_error(const char* msg) {
- perror(msg);
-}
-#endif
#if WASM_RT_INSTALL_SIGNAL_HANDLER
static void os_signal_handler(int sig, siginfo_t* si, void* unused) {
@@ -326,113 +257,6 @@ void wasm_rt_free_thread(void) {
#endif
}
-#if WASM_RT_USE_MMAP
-
-static uint64_t get_allocation_size_for_mmap(wasm_rt_memory_t* memory) {
- assert(!memory->is64 &&
- "memory64 is not yet compatible with WASM_RT_USE_MMAP");
-#if WASM_RT_MEMCHECK_GUARD_PAGES
- /* Reserve 8GiB. */
- const uint64_t max_size = 0x200000000ul;
- return max_size;
-#else
- if (memory->max_pages != 0) {
- const uint64_t max_size = memory->max_pages * PAGE_SIZE;
- return max_size;
- }
-
- /* Reserve 4GiB. */
- const uint64_t max_size = 0x100000000ul;
- return max_size;
-#endif
-}
-
-#endif
-
-void wasm_rt_allocate_memory(wasm_rt_memory_t* memory,
- uint64_t initial_pages,
- uint64_t max_pages,
- bool is64) {
- uint64_t byte_length = initial_pages * PAGE_SIZE;
- memory->size = byte_length;
- memory->pages = initial_pages;
- memory->max_pages = max_pages;
- memory->is64 = is64;
-
-#if WASM_RT_USE_MMAP
- const uint64_t mmap_size = get_allocation_size_for_mmap(memory);
- void* addr = os_mmap(mmap_size);
- if (!addr) {
- os_print_last_error("os_mmap failed.");
- abort();
- }
- int ret = os_mprotect(addr, byte_length);
- if (ret != 0) {
- os_print_last_error("os_mprotect failed.");
- abort();
- }
- memory->data = addr;
-#else
- memory->data = calloc(byte_length, 1);
-#endif
-}
-
-static uint64_t grow_memory_impl(wasm_rt_memory_t* memory, uint64_t delta) {
- uint64_t old_pages = memory->pages;
- uint64_t new_pages = memory->pages + delta;
- if (new_pages == 0) {
- return 0;
- }
- if (new_pages < old_pages || new_pages > memory->max_pages) {
- return (uint64_t)-1;
- }
- uint64_t old_size = old_pages * PAGE_SIZE;
- uint64_t new_size = new_pages * PAGE_SIZE;
- uint64_t delta_size = delta * PAGE_SIZE;
-#if WASM_RT_USE_MMAP
- uint8_t* new_data = memory->data;
- int ret = os_mprotect(new_data + old_size, delta_size);
- if (ret != 0) {
- return (uint64_t)-1;
- }
-#else
- uint8_t* new_data = realloc(memory->data, new_size);
- if (new_data == NULL) {
- return (uint64_t)-1;
- }
-#if !WABT_BIG_ENDIAN
- memset(new_data + old_size, 0, delta_size);
-#endif
-#endif
-#if WABT_BIG_ENDIAN
- memmove(new_data + new_size - old_size, new_data, old_size);
- memset(new_data, 0, delta_size);
-#endif
- memory->pages = new_pages;
- memory->size = new_size;
- memory->data = new_data;
- return old_pages;
-}
-
-uint64_t wasm_rt_grow_memory(wasm_rt_memory_t* memory, uint64_t delta) {
- uint64_t ret = grow_memory_impl(memory, delta);
-#ifdef WASM_RT_GROW_FAILED_HANDLER
- if (ret == -1) {
- WASM_RT_GROW_FAILED_HANDLER();
- }
-#endif
- return ret;
-}
-
-void wasm_rt_free_memory(wasm_rt_memory_t* memory) {
-#if WASM_RT_USE_MMAP
- const uint64_t mmap_size = get_allocation_size_for_mmap(memory);
- os_munmap(memory->data, mmap_size); // ignore error
-#else
- free(memory->data);
-#endif
-}
-
#define DEFINE_TABLE_OPS(type) \
void wasm_rt_allocate_##type##_table(wasm_rt_##type##_table_t* table, \
uint32_t elements, \