Skip to content

Commit 97a7b39

Browse files
committed
Remove dependency on assert from SAFE_HEAP. NFC
As of emscripten-core#20592, `assert` is no longer defined in release builds in STRICT mode, but its still possible to use SAFE_HEAP in this configuration. Instead of complicating the definition of `assert` to match `preamble_minimal.js` this change instead removed the dependency of SAFE_HEAP on the assert function. This fixes the `core2s.test_module_wasm_memory` which is currently failing on the emscripten-releases tree.
1 parent 00eae74 commit 97a7b39

File tree

3 files changed

+7
-6
lines changed

3 files changed

+7
-6
lines changed

.circleci/config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -553,6 +553,7 @@ jobs:
553553
core2ss.test_pthread_dylink
554554
core2ss.test_pthread_thread_local_storage
555555
core2s.test_dylink_syslibs_missing_assertions
556+
core2s.test_module_wasm_memory
556557
wasm2js3.test_memorygrowth_2
557558
wasmfs.test_hello_world
558559
wasmfs.test_hello_world_standalone

src/preamble_minimal.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
#include "runtime_asan.js"
2424
#endif
2525

26-
#if ASSERTIONS || SAFE_HEAP
26+
#if ASSERTIONS
2727
/** @type {function(*, string=)} */
2828
function assert(condition, text) {
2929
if (!condition) throw text;

src/runtime_safe_heap.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ function getSafeHeapType(bytes, isFloat) {
1515
case 2: return 'i16';
1616
case 4: return isFloat ? 'float' : 'i32';
1717
case 8: return isFloat ? 'double' : 'i64';
18-
default: assert(0, `getSafeHeapType() invalid bytes=${bytes}`);
18+
default: abort(`getSafeHeapType() invalid bytes=${bytes}`);
1919
}
2020
}
2121

@@ -44,8 +44,8 @@ function SAFE_HEAP_STORE(dest, value, bytes, isFloat) {
4444
#endif
4545
var brk = _sbrk(0);
4646
if (dest + bytes > brk) abort(`segmentation fault, exceeded the top of the available dynamic heap when storing ${bytes} bytes to address ${dest}. DYNAMICTOP=${brk}`);
47-
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
48-
assert(brk <= wasmMemory.buffer.byteLength, `brk <= wasmMemory.buffer.byteLength (brk=${brk}, wasmMemory.buffer.byteLength=${wasmMemory.buffer.byteLength})`);
47+
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
48+
if (brk > wasmMemory.buffer.byteLength) abort(`brk <= wasmMemory.buffer.byteLength (brk=${brk}, wasmMemory.buffer.byteLength=${wasmMemory.buffer.byteLength})`);
4949
}
5050
setValue_safe(dest, value, getSafeHeapType(bytes, isFloat));
5151
return value;
@@ -72,8 +72,8 @@ function SAFE_HEAP_LOAD(dest, bytes, unsigned, isFloat) {
7272
#endif
7373
var brk = _sbrk(0);
7474
if (dest + bytes > brk) abort(`segmentation fault, exceeded the top of the available dynamic heap when loading ${bytes} bytes from address ${dest}. DYNAMICTOP=${brk}`);
75-
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
76-
assert(brk <= wasmMemory.buffer.byteLength, `brk <= wasmMemory.buffer.byteLength (brk=${brk}, wasmMemory.buffer.byteLength=${wasmMemory.buffer.byteLength})`);
75+
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
76+
if (brk > wasmMemory.buffer.byteLength) abort(`brk <= wasmMemory.buffer.byteLength (brk=${brk}, wasmMemory.buffer.byteLength=${wasmMemory.buffer.byteLength})`);
7777
}
7878
var type = getSafeHeapType(bytes, isFloat);
7979
var ret = getValue_safe(dest, type);

0 commit comments

Comments
 (0)