#include "./memory.h" #ifdef __wasm__ const intptr_t PAGE_SIZE = 65536; void* shed__runtime__memory_init(intptr_t alignment) { return (void*) (__builtin_wasm_memory_size(0) * PAGE_SIZE); } void* shed__runtime__memory_grow(intptr_t increment) { if (increment % PAGE_SIZE != 0) { increment += PAGE_SIZE - (increment % PAGE_SIZE); } return (void*) (__builtin_wasm_memory_grow(0, increment / PAGE_SIZE) * PAGE_SIZE); } #else #include void* shed__runtime__memory_init(intptr_t alignment) { void* ptr = sbrk(0); intptr_t remainder = (intptr_t) ptr % alignment; if (remainder != 0) { intptr_t increment = alignment - remainder; // TODO: check for -1 from sbrk sbrk(increment); // TODO: assert alignment is correct ptr += increment; } return ptr; } void* shed__runtime__memory_grow(intptr_t increment) { return sbrk(increment); } #endif