(module ;; Array types used in tests. (type $i8 (array (mut i8))) (type $i16 (array (mut i16))) (type $i32 (array (mut i32))) (type $anyref (array (mut anyref))) (type $funcref (array (mut funcref))) (type $externref (array (mut externref))) ;; Array values used in tests. Reset in between tests with the "reset" ;; function. (global $i8 (mut (ref null $i8)) (ref.null none)) (global $i16 (mut (ref null $i16)) (ref.null none)) (global $i32 (mut (ref null $i32)) (ref.null none)) (global $anyref (mut (ref null $anyref)) (ref.null none)) (global $funcref (mut (ref null $funcref)) (ref.null none)) (global $externref (mut (ref null $externref)) (ref.null none)) ;; GC objects with distinct identities used in anyref tests. (global $g1 (export "g1") (mut anyref) (array.new_fixed $i8)) (global $g2 (export "g2") (mut anyref) (array.new_fixed $i8)) (global $g3 (export "g3") (mut anyref) (array.new_fixed $i8)) (global $g4 (export "g4") (mut anyref) (array.new_fixed $i8)) (global $g5 (export "g5") (mut anyref) (array.new_fixed $i8)) ;; Functions with distinct return values used in funcref tests. (func $f1 (result i32) (i32.const 0)) (func $f2 (result i32) (i32.const 1)) (func $f3 (result i32) (i32.const 2)) (func $f4 (result i32) (i32.const 3)) (func $f5 (result i32) (i32.const 4)) ;; Passive element segment used in array.init_elem tests. (elem $elem anyref (array.new_fixed $i8) (array.new_fixed $i8) (array.new_fixed $i8) (array.new_fixed $i8) (array.new_fixed $i8)) (table $tab anyref 5 5) ;; Resets the array globals to known states. (func (export "reset") (global.set $i8 (array.new_fixed $i8 (i32.const 0) (i32.const 1) (i32.const 2) (i32.const 3) (i32.const 4))) (global.set $i16 (array.new_fixed $i16 (i32.const 0) (i32.const 1) (i32.const 2) (i32.const 3) (i32.const 4))) (global.set $i32 (array.new_fixed $i32 (i32.const 0) (i32.const 1) (i32.const 2) (i32.const 3) (i32.const 4))) (global.set $anyref (array.new_fixed $anyref (global.get $g1) (global.get $g2) (global.get $g3) (global.get $g4) (global.get $g5))) (global.set $funcref (array.new_fixed $funcref (ref.func $f1) (ref.func $f2) (ref.func $f3) (ref.func $f4) (ref.func $f5))) (global.set $externref (array.new_fixed $externref (extern.externalize (global.get $g1)) (extern.externalize (global.get $g2)) (extern.externalize (global.get $g3)) (extern.externalize (global.get $g4)) (extern.externalize (global.get $g5))))) ) ;; array.fill ;; basic i8 ;; basic i16 ;; basic i32 ;; basic anyref ;; basic funcref ;; basic externref ;; basic ref subtype ;; basic ref nullability subtype ;; zero size in bounds ;; zero size at bounds ;; zero size out of bounds traps ;; out of bounds index traps ;; out of bounds size traps ;; out of bounds index + size traps ;; null destination traps ;; immutable field invalid ;; ref supertype invalid ;; ref nullability supertype invalid ;; array.copy ;; basic i8 ;; basic i16 ;; basic i32 ;; basic anyref ;; basic funcref ;; basic externref ;; basic ref subtype ;; basic ref nullability subtype ;; same i8 no overlap ;; same i8 overlap src first ;; same i8 overlap dest first ;; same i8 overlap complete ;; same i32 no overlap ;; same i32 overlap src first ;; same i32 overlap dest first ;; same i32 overlap complete ;; same anyref no overlap ;; same anyref overloap ;; same anyref src first ;; same anyref dest first ;; same anyref overlap complete ;; zero size in bounds ;; zero size at dest bounds ;; zero size at src bounds ;; zero size out of dest bounds traps ;; zero size out of src bounds traps ;; out of bounds dest index traps ;; out of bounds src index traps ;; out of bounds dest size traps ;; out of bounds src index traps ;; out of bounds dest index + size traps ;; out of bounds src index + size traps ;; null dest traps ;; null src traps ;; immutable dest field invalid ;; immutable src field ok ;; ref supertype invalid ;; ref nullability supertype invalid ;; array.init_data ;; basic i8 ;; basic i16 ;; basic i32 ;; basic f32 ;; zero size in bounds ;; zero size at dest bounds ;; zero size at src bounds ;; zero size out of dest bounds traps ;; zero size out of src bounds traps ;; out of bounds dest index traps ;; out of bounds src index traps ;; out of bounds dest size traps ;; out of bounds src size traps ;; out of bounds src multiplied size traps ;; out of bounds dest index + size traps ;; out of bounds src index + size traps ;; out of bounds src index + multiplied size traps ;; null dest traps ;; segment dropped traps ;; immutable dest field invalid ;; ref supertype invalid ;; ref nullability supertype invalid ;; out of bounds segment index invalid ;; array.init_elem ;; basic anyref ;; basic funcref ;; basic externref ;; basic ref subtype ;; basic ref nullability subtype ;; zero size in bounds ;; zero size at dest bounds ;; zero size at src bounds ;; zero size out of dest bounds traps ;; zero size out of src bounds traps ;; out of bounds dest index traps ;; out of bounds src index traps ;; out of bounds dest size traps ;; out of bounds src size traps ;; out of bounds dest index + size traps ;; out of bounds src index + size traps ;; null dest traps ;; segment dropped traps ;; immutable dest field invalid ;; ref supertype invalid ;; ref nullability supertype invalid ;; out of bounds segment index invalid