use stackAlloc instead of allocate

This commit is contained in:
Lukas Lihotzki 2020-10-06 12:02:17 +02:00
parent 22f85d3f3d
commit 030e506c00

View file

@ -2,12 +2,20 @@ var malloc = Module['_malloc'];
var free = Module['_free'];
var OLM_ERROR;
function filled_stack(size, filler) {
var ptr = stackAlloc(size);
filler(new Uint8Array(Module['HEAPU8'].buffer, ptr, size));
return ptr;
}
/* allocate a number of bytes of storage on the stack.
*
* If size_or_array is a Number, allocates that number of zero-initialised bytes.
*/
function stack(size_or_array) {
return allocate(size_or_array, 'i8', Module['ALLOC_STACK']);
return (typeof size_or_array == 'number')
? filled_stack(size_or_array, function(x) { x.fill(0) })
: filled_stack(size_or_array.length, function(x) { x.set(size_or_array) });
}
function array_from_string(string) {
@ -15,10 +23,7 @@ function array_from_string(string) {
}
function random_stack(size) {
var ptr = stack(size);
var array = new Uint8Array(Module['HEAPU8'].buffer, ptr, size);
get_random_values(array);
return ptr;
return filled_stack(size, get_random_values);
}
function restore_stack(wrapped) {