aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/fixtures/spec_testsuites/core/memory.wast
diff options
context:
space:
mode:
Diffstat (limited to 'tests/fixtures/spec_testsuites/core/memory.wast')
-rw-r--r--tests/fixtures/spec_testsuites/core/memory.wast65
1 files changed, 45 insertions, 20 deletions
diff --git a/tests/fixtures/spec_testsuites/core/memory.wast b/tests/fixtures/spec_testsuites/core/memory.wast
index 497b69f..baebde3 100644
--- a/tests/fixtures/spec_testsuites/core/memory.wast
+++ b/tests/fixtures/spec_testsuites/core/memory.wast
@@ -136,44 +136,44 @@
;; Sign and zero extending memory loads
(func (export "i32_load8_s") (param $i i32) (result i32)
- (i32.store8 (i32.const 8) (local.get $i))
- (i32.load8_s (i32.const 8))
+ (i32.store8 (i32.const 8) (local.get $i))
+ (i32.load8_s (i32.const 8))
)
(func (export "i32_load8_u") (param $i i32) (result i32)
- (i32.store8 (i32.const 8) (local.get $i))
- (i32.load8_u (i32.const 8))
+ (i32.store8 (i32.const 8) (local.get $i))
+ (i32.load8_u (i32.const 8))
)
(func (export "i32_load16_s") (param $i i32) (result i32)
- (i32.store16 (i32.const 8) (local.get $i))
- (i32.load16_s (i32.const 8))
+ (i32.store16 (i32.const 8) (local.get $i))
+ (i32.load16_s (i32.const 8))
)
(func (export "i32_load16_u") (param $i i32) (result i32)
- (i32.store16 (i32.const 8) (local.get $i))
- (i32.load16_u (i32.const 8))
+ (i32.store16 (i32.const 8) (local.get $i))
+ (i32.load16_u (i32.const 8))
)
(func (export "i64_load8_s") (param $i i64) (result i64)
- (i64.store8 (i32.const 8) (local.get $i))
- (i64.load8_s (i32.const 8))
+ (i64.store8 (i32.const 8) (local.get $i))
+ (i64.load8_s (i32.const 8))
)
(func (export "i64_load8_u") (param $i i64) (result i64)
- (i64.store8 (i32.const 8) (local.get $i))
- (i64.load8_u (i32.const 8))
+ (i64.store8 (i32.const 8) (local.get $i))
+ (i64.load8_u (i32.const 8))
)
(func (export "i64_load16_s") (param $i i64) (result i64)
- (i64.store16 (i32.const 8) (local.get $i))
- (i64.load16_s (i32.const 8))
+ (i64.store16 (i32.const 8) (local.get $i))
+ (i64.load16_s (i32.const 8))
)
(func (export "i64_load16_u") (param $i i64) (result i64)
- (i64.store16 (i32.const 8) (local.get $i))
- (i64.load16_u (i32.const 8))
+ (i64.store16 (i32.const 8) (local.get $i))
+ (i64.load16_u (i32.const 8))
)
(func (export "i64_load32_s") (param $i i64) (result i64)
- (i64.store32 (i32.const 8) (local.get $i))
- (i64.load32_s (i32.const 8))
+ (i64.store32 (i32.const 8) (local.get $i))
+ (i64.load32_s (i32.const 8))
)
(func (export "i64_load32_u") (param $i i64) (result i64)
- (i64.store32 (i32.const 8) (local.get $i))
- (i64.load32_u (i32.const 8))
+ (i64.store32 (i32.const 8) (local.get $i))
+ (i64.load32_u (i32.const 8))
)
)
@@ -240,3 +240,28 @@
"(import \"\" \"\" (memory $foo 1))"
"(import \"\" \"\" (memory $foo 1))")
"duplicate memory")
+
+;; Test that exporting random globals does not change a memory's semantics.
+
+(module
+ (memory (export "memory") 1 1)
+
+ ;; These should not change the behavior of memory accesses.
+ (global (export "__data_end") i32 (i32.const 10000))
+ (global (export "__stack_top") i32 (i32.const 10000))
+ (global (export "__heap_base") i32 (i32.const 10000))
+
+ (func (export "load") (param i32) (result i32)
+ (i32.load8_u (local.get 0))
+ )
+)
+
+;; None of these memory accesses should trap.
+(assert_return (invoke "load" (i32.const 0)) (i32.const 0))
+(assert_return (invoke "load" (i32.const 10000)) (i32.const 0))
+(assert_return (invoke "load" (i32.const 20000)) (i32.const 0))
+(assert_return (invoke "load" (i32.const 30000)) (i32.const 0))
+(assert_return (invoke "load" (i32.const 40000)) (i32.const 0))
+(assert_return (invoke "load" (i32.const 50000)) (i32.const 0))
+(assert_return (invoke "load" (i32.const 60000)) (i32.const 0))
+(assert_return (invoke "load" (i32.const 65535)) (i32.const 0))