Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -553,6 +553,7 @@ jobs:
core2ss.test_pthread_dylink
core2ss.test_pthread_thread_local_storage
core2s.test_dylink_syslibs_missing_assertions
core2s.test_module_wasm_memory
wasm2js3.test_memorygrowth_2
wasmfs.test_hello_world
wasmfs.test_hello_world_standalone
Expand Down
2 changes: 1 addition & 1 deletion src/preamble_minimal.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
#include "runtime_asan.js"
#endif

#if ASSERTIONS || SAFE_HEAP
#if ASSERTIONS
/** @type {function(*, string=)} */
function assert(condition, text) {
if (!condition) throw text;
Expand Down
10 changes: 5 additions & 5 deletions src/runtime_safe_heap.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ function getSafeHeapType(bytes, isFloat) {
case 2: return 'i16';
case 4: return isFloat ? 'float' : 'i32';
case 8: return isFloat ? 'double' : 'i64';
default: assert(0, `getSafeHeapType() invalid bytes=${bytes}`);
default: abort(`getSafeHeapType() invalid bytes=${bytes}`);
}
}

Expand Down Expand Up @@ -44,8 +44,8 @@ function SAFE_HEAP_STORE(dest, value, bytes, isFloat) {
#endif
var brk = _sbrk(0);
if (dest + bytes > brk) abort(`segmentation fault, exceeded the top of the available dynamic heap when storing ${bytes} bytes to address ${dest}. DYNAMICTOP=${brk}`);
assert(brk >= _emscripten_stack_get_base(), `brk >= _emscripten_stack_get_base() (brk=${brk}, _emscripten_stack_get_base()=${_emscripten_stack_get_base()})`); // sbrk-managed memory must be above the stack
assert(brk <= wasmMemory.buffer.byteLength, `brk <= wasmMemory.buffer.byteLength (brk=${brk}, wasmMemory.buffer.byteLength=${wasmMemory.buffer.byteLength})`);
if (brk < _emscripten_stack_get_base()) abort(`brk >= _emscripten_stack_get_base() (brk=${brk}, _emscripten_stack_get_base()=${_emscripten_stack_get_base()})`); // sbrk-managed memory must be above the stack
if (brk > wasmMemory.buffer.byteLength) abort(`brk <= wasmMemory.buffer.byteLength (brk=${brk}, wasmMemory.buffer.byteLength=${wasmMemory.buffer.byteLength})`);
}
setValue_safe(dest, value, getSafeHeapType(bytes, isFloat));
return value;
Expand All @@ -72,8 +72,8 @@ function SAFE_HEAP_LOAD(dest, bytes, unsigned, isFloat) {
#endif
var brk = _sbrk(0);
if (dest + bytes > brk) abort(`segmentation fault, exceeded the top of the available dynamic heap when loading ${bytes} bytes from address ${dest}. DYNAMICTOP=${brk}`);
assert(brk >= _emscripten_stack_get_base(), `brk >= _emscripten_stack_get_base() (brk=${brk}, _emscripten_stack_get_base()=${_emscripten_stack_get_base()})`); // sbrk-managed memory must be above the stack
assert(brk <= wasmMemory.buffer.byteLength, `brk <= wasmMemory.buffer.byteLength (brk=${brk}, wasmMemory.buffer.byteLength=${wasmMemory.buffer.byteLength})`);
if (brk < _emscripten_stack_get_base()) abort(`brk >= _emscripten_stack_get_base() (brk=${brk}, _emscripten_stack_get_base()=${_emscripten_stack_get_base()})`); // sbrk-managed memory must be above the stack
if (brk > wasmMemory.buffer.byteLength) abort(`brk <= wasmMemory.buffer.byteLength (brk=${brk}, wasmMemory.buffer.byteLength=${wasmMemory.buffer.byteLength})`);
}
var type = getSafeHeapType(bytes, isFloat);
var ret = getValue_safe(dest, type);
Expand Down