module.exports = globalScope => { var HEAP = new Uint8Array(0); var HEAP_OFFSET = 0; globalScope["allocate_memory"] = function allocate_memory(size) { if (!(size >>>= 0)) return 0; if (HEAP_OFFSET + size > HEAP.length) { var oldHeap = HEAP; HEAP = new Uint8Array(Math.max(65536, HEAP.length + size, HEAP.length * 2)); HEAP.set(oldHeap); } var ptr = HEAP_OFFSET; if ((HEAP_OFFSET += size) & 7) HEAP_OFFSET = (HEAP_OFFSET | 7) + 1; return ptr; }; globalScope["free_memory"] = function free_memory(ptr) { // TODO }; globalScope["move_memory"] = function move_memory(dest, src, size) { HEAP.copyWithin(dest, src, src + size); }; globalScope["store"] = function store(ptr, value, offset) { HEAP[ptr + (offset | 0)] = value; }; globalScope["load"] = function load(ptr, offset) { return HEAP[ptr + (offset | 0)]; }; };