diff --git a/tests/compiler/assert.optimized.wast b/tests/compiler/assert.optimized.wast index 69d82329..453abe27 100644 --- a/tests/compiler/assert.optimized.wast +++ b/tests/compiler/assert.optimized.wast @@ -1,7 +1,6 @@ (module (type $v (func)) (memory $0 1) - (data (i32.const 8) "\0c\00\00\00m\00u\00s\00t\00 \00b\00e\00 \00t\00r\00u\00e") (export "memory" (memory $0)) (start $start) (func $start (; 0 ;) (type $v) diff --git a/tests/compiler/assert.wast b/tests/compiler/assert.wast index c243f5a0..87a71261 100644 --- a/tests/compiler/assert.wast +++ b/tests/compiler/assert.wast @@ -1,8 +1,7 @@ (module (type $v (func)) - (global $HEAP_BASE i32 (i32.const 36)) + (global $HEAP_BASE i32 (i32.const 4)) (memory $0 1) - (data (i32.const 8) "\0c\00\00\00m\00u\00s\00t\00 \00b\00e\00 \00t\00r\00u\00e\00") (export "memory" (memory $0)) (start $start) (func $start (; 0 ;) (type $v) diff --git a/tests/compiler/std/abort.optimized.wast b/tests/compiler/std/abort.optimized.wast new file mode 100644 index 00000000..40879b89 --- /dev/null +++ b/tests/compiler/std/abort.optimized.wast @@ -0,0 +1,20 @@ +(module + (type $v (func)) + (global $std/abort/abortCalled (mut i32) (i32.const 0)) + (memory $0 1) + (data (i32.const 8) "\n\00\00\00t\00h\00i\00s\00 \00i\00s\00 \00o\00k") + (data (i32.const 32) "\0c\00\00\00s\00t\00d\00/\00a\00b\00o\00r\00t\00.\00t\00s") + (export "memory" (memory $0)) + (start $start) + (func $start (; 0 ;) (type $v) + (set_global $std/abort/abortCalled + (i32.const 1) + ) + (if + (i32.eqz + (get_global $std/abort/abortCalled) + ) + (unreachable) + ) + ) +) diff --git a/tests/compiler/std/abort.wast b/tests/compiler/std/abort.wast new file mode 100644 index 00000000..91e78cab --- /dev/null +++ b/tests/compiler/std/abort.wast @@ -0,0 +1,156 @@ +(module + (type $iiiiv (func (param i32 i32 i32 i32))) + (type $v (func)) + (global $std/abort/abortCalled (mut i32) (i32.const 0)) + (global $HEAP_BASE i32 (i32.const 60)) + (memory $0 1) + (data (i32.const 8) "\n\00\00\00t\00h\00i\00s\00 \00i\00s\00 \00o\00k\00") + (data (i32.const 32) "\0c\00\00\00s\00t\00d\00/\00a\00b\00o\00r\00t\00.\00t\00s\00") + (export "memory" (memory $0)) + (start $start) + (func $std/abort/abort (; 0 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (set_global $std/abort/abortCalled + (i32.const 1) + ) + ) + (func $start (; 1 ;) (type $v) + (if + (i32.eqz + (i32.const 0) + ) + (call $std/abort/abort + (i32.const 8) + (i32.const 32) + (i32.const 8) + (i32.const 2) + ) + ) + (if + (i32.eqz + (get_global $std/abort/abortCalled) + ) + (unreachable) + ) + ) +) +(; +[program.elements] + GLOBAL: NaN + GLOBAL: Infinity + FUNCTION_PROTOTYPE: isNaN + FUNCTION_PROTOTYPE: isFinite + FUNCTION_PROTOTYPE: clz + FUNCTION_PROTOTYPE: ctz + FUNCTION_PROTOTYPE: popcnt + FUNCTION_PROTOTYPE: rotl + FUNCTION_PROTOTYPE: rotr + FUNCTION_PROTOTYPE: abs + FUNCTION_PROTOTYPE: max + FUNCTION_PROTOTYPE: min + FUNCTION_PROTOTYPE: ceil + FUNCTION_PROTOTYPE: floor + FUNCTION_PROTOTYPE: copysign + FUNCTION_PROTOTYPE: nearest + FUNCTION_PROTOTYPE: reinterpret + FUNCTION_PROTOTYPE: sqrt + FUNCTION_PROTOTYPE: trunc + FUNCTION_PROTOTYPE: load + FUNCTION_PROTOTYPE: store + FUNCTION_PROTOTYPE: sizeof + FUNCTION_PROTOTYPE: select + FUNCTION_PROTOTYPE: unreachable + FUNCTION_PROTOTYPE: current_memory + FUNCTION_PROTOTYPE: grow_memory + FUNCTION_PROTOTYPE: changetype + FUNCTION_PROTOTYPE: assert + FUNCTION_PROTOTYPE: i8 + FUNCTION_PROTOTYPE: i16 + FUNCTION_PROTOTYPE: i32 + FUNCTION_PROTOTYPE: i64 + FUNCTION_PROTOTYPE: u8 + FUNCTION_PROTOTYPE: u16 + FUNCTION_PROTOTYPE: u32 + FUNCTION_PROTOTYPE: u64 + FUNCTION_PROTOTYPE: bool + FUNCTION_PROTOTYPE: f32 + FUNCTION_PROTOTYPE: f64 + FUNCTION_PROTOTYPE: isize + FUNCTION_PROTOTYPE: usize + GLOBAL: HEAP_BASE + CLASS_PROTOTYPE: std:array/Array + PROPERTY: std:array/Array#length + CLASS_PROTOTYPE: Array + CLASS_PROTOTYPE: std:array/CArray + CLASS_PROTOTYPE: CArray + CLASS_PROTOTYPE: std:error/Error + CLASS_PROTOTYPE: Error + CLASS_PROTOTYPE: std:error/RangeError + CLASS_PROTOTYPE: RangeError + GLOBAL: std:heap/ALIGN_LOG2 + GLOBAL: std:heap/ALIGN_SIZE + GLOBAL: std:heap/ALIGN_MASK + GLOBAL: std:heap/HEAP_OFFSET + FUNCTION_PROTOTYPE: std:heap/allocate_memory + FUNCTION_PROTOTYPE: allocate_memory + FUNCTION_PROTOTYPE: std:heap/free_memory + FUNCTION_PROTOTYPE: free_memory + FUNCTION_PROTOTYPE: std:heap/copy_memory + FUNCTION_PROTOTYPE: std:heap/move_memory + FUNCTION_PROTOTYPE: move_memory + FUNCTION_PROTOTYPE: std:heap/set_memory + FUNCTION_PROTOTYPE: set_memory + FUNCTION_PROTOTYPE: std:heap/compare_memory + FUNCTION_PROTOTYPE: compare_memory + CLASS_PROTOTYPE: std:map/Map + CLASS_PROTOTYPE: Map + CLASS_PROTOTYPE: std:regexp/RegExp + CLASS_PROTOTYPE: RegExp + CLASS_PROTOTYPE: std:set/Set + PROPERTY: std:set/Set#size + CLASS_PROTOTYPE: Set + GLOBAL: std:string/EMPTY + GLOBAL: std:string/HEAD + FUNCTION_PROTOTYPE: std:string/allocate + CLASS_PROTOTYPE: std:string/String + CLASS_PROTOTYPE: String + FUNCTION_PROTOTYPE: std:string/isWhiteSpaceOrLineTerminator + FUNCTION_PROTOTYPE: std:string/parseInt + FUNCTION_PROTOTYPE: parseInt + FUNCTION_PROTOTYPE: std:string/parseFloat + FUNCTION_PROTOTYPE: parseFloat + GLOBAL: std/abort/abortCalled + FUNCTION_PROTOTYPE: std/abort/abort + FUNCTION_PROTOTYPE: abort +[program.exports] + CLASS_PROTOTYPE: std:array/Array + CLASS_PROTOTYPE: Array + CLASS_PROTOTYPE: std:array/CArray + CLASS_PROTOTYPE: CArray + CLASS_PROTOTYPE: std:error/Error + CLASS_PROTOTYPE: Error + CLASS_PROTOTYPE: std:error/RangeError + CLASS_PROTOTYPE: RangeError + FUNCTION_PROTOTYPE: allocate_memory + FUNCTION_PROTOTYPE: std:heap/allocate_memory + FUNCTION_PROTOTYPE: free_memory + FUNCTION_PROTOTYPE: std:heap/free_memory + FUNCTION_PROTOTYPE: move_memory + FUNCTION_PROTOTYPE: std:heap/move_memory + FUNCTION_PROTOTYPE: set_memory + FUNCTION_PROTOTYPE: std:heap/set_memory + FUNCTION_PROTOTYPE: compare_memory + FUNCTION_PROTOTYPE: std:heap/compare_memory + CLASS_PROTOTYPE: std:map/Map + CLASS_PROTOTYPE: Map + CLASS_PROTOTYPE: std:regexp/RegExp + CLASS_PROTOTYPE: RegExp + CLASS_PROTOTYPE: std:set/Set + CLASS_PROTOTYPE: Set + CLASS_PROTOTYPE: std:string/String + CLASS_PROTOTYPE: String + FUNCTION_PROTOTYPE: parseInt + FUNCTION_PROTOTYPE: std:string/parseInt + FUNCTION_PROTOTYPE: parseFloat + FUNCTION_PROTOTYPE: std:string/parseFloat + FUNCTION_PROTOTYPE: abort +;) diff --git a/tests/compiler/std/array.wast b/tests/compiler/std/array.wast index 4b56aa53..7a6d5b19 100644 --- a/tests/compiler/std/array.wast +++ b/tests/compiler/std/array.wast @@ -4068,6 +4068,7 @@ PROPERTY: std:set/Set#size CLASS_PROTOTYPE: Set GLOBAL: std:string/EMPTY + GLOBAL: std:string/HEAD FUNCTION_PROTOTYPE: std:string/allocate CLASS_PROTOTYPE: std:string/String CLASS_PROTOTYPE: String diff --git a/tests/compiler/std/carray.wast b/tests/compiler/std/carray.wast index c80de815..3ed9c169 100644 --- a/tests/compiler/std/carray.wast +++ b/tests/compiler/std/carray.wast @@ -281,6 +281,7 @@ PROPERTY: std:set/Set#size CLASS_PROTOTYPE: Set GLOBAL: std:string/EMPTY + GLOBAL: std:string/HEAD FUNCTION_PROTOTYPE: std:string/allocate CLASS_PROTOTYPE: std:string/String CLASS_PROTOTYPE: String diff --git a/tests/compiler/std/heap.wast b/tests/compiler/std/heap.wast index cec95cd4..ce31b032 100644 --- a/tests/compiler/std/heap.wast +++ b/tests/compiler/std/heap.wast @@ -2864,6 +2864,7 @@ PROPERTY: std:set/Set#size CLASS_PROTOTYPE: Set GLOBAL: std:string/EMPTY + GLOBAL: std:string/HEAD FUNCTION_PROTOTYPE: std:string/allocate CLASS_PROTOTYPE: std:string/String CLASS_PROTOTYPE: String diff --git a/tests/compiler/std/set.wast b/tests/compiler/std/set.wast index 3492397f..210467ab 100644 --- a/tests/compiler/std/set.wast +++ b/tests/compiler/std/set.wast @@ -2757,6 +2757,7 @@ PROPERTY: std:set/Set#size CLASS_PROTOTYPE: Set GLOBAL: std:string/EMPTY + GLOBAL: std:string/HEAD FUNCTION_PROTOTYPE: std:string/allocate CLASS_PROTOTYPE: std:string/String CLASS_PROTOTYPE: String diff --git a/tests/compiler/std/string.wast b/tests/compiler/std/string.wast index f43aa838..f672f60b 100644 --- a/tests/compiler/std/string.wast +++ b/tests/compiler/std/string.wast @@ -4,6 +4,7 @@ (type $iiii (func (param i32 i32 i32) (result i32))) (type $v (func)) (global $std/string/str (mut i32) (i32.const 8)) + (global $std:string/HEAD i32 (i32.const 4)) (global $HEAP_BASE i32 (i32.const 102)) (memory $0 1) (data (i32.const 8) "\10\00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") @@ -602,6 +603,7 @@ PROPERTY: std:set/Set#size CLASS_PROTOTYPE: Set GLOBAL: std:string/EMPTY + GLOBAL: std:string/HEAD FUNCTION_PROTOTYPE: std:string/allocate CLASS_PROTOTYPE: std:string/String CLASS_PROTOTYPE: String