Nick Fitzgerald
3 months ago
committed by
GitHub
3 changed files with 65 additions and 4 deletions
@ -0,0 +1,61 @@ |
|||
(module $tables_of_i31ref |
|||
(table $table 3 10 i31ref) |
|||
(elem (table $table) (i32.const 0) i31ref (item (ref.i31 (i32.const 999))) |
|||
(item (ref.i31 (i32.const 888))) |
|||
(item (ref.i31 (i32.const 777)))) |
|||
|
|||
(func (export "size") (result i32) |
|||
table.size $table |
|||
) |
|||
|
|||
(func (export "get") (param i32) (result i32) |
|||
(i31.get_u (table.get $table (local.get 0))) |
|||
) |
|||
|
|||
(func (export "grow") (param i32 i32) (result i32) |
|||
(table.grow $table (ref.i31 (local.get 1)) (local.get 0)) |
|||
) |
|||
|
|||
(func (export "fill") (param i32 i32 i32) |
|||
(table.fill $table (local.get 0) (ref.i31 (local.get 1)) (local.get 2)) |
|||
) |
|||
|
|||
(func (export "copy") (param i32 i32 i32) |
|||
(table.copy $table $table (local.get 0) (local.get 1) (local.get 2)) |
|||
) |
|||
|
|||
(elem $elem i31ref (item (ref.i31 (i32.const 123))) |
|||
(item (ref.i31 (i32.const 456))) |
|||
(item (ref.i31 (i32.const 789)))) |
|||
(func (export "init") (param i32 i32 i32) |
|||
(table.init $table $elem (local.get 0) (local.get 1) (local.get 2)) |
|||
) |
|||
) |
|||
|
|||
;; Initial state. |
|||
(assert_return (invoke "size") (i32.const 3)) |
|||
(assert_return (invoke "get" (i32.const 0)) (i32.const 999)) |
|||
(assert_return (invoke "get" (i32.const 1)) (i32.const 888)) |
|||
(assert_return (invoke "get" (i32.const 2)) (i32.const 777)) |
|||
|
|||
;; Grow from size 3 to size 5. |
|||
(assert_return (invoke "grow" (i32.const 2) (i32.const 333)) (i32.const 3)) |
|||
(assert_return (invoke "size") (i32.const 5)) |
|||
(assert_return (invoke "get" (i32.const 3)) (i32.const 333)) |
|||
(assert_return (invoke "get" (i32.const 4)) (i32.const 333)) |
|||
|
|||
;; Fill table[2..4] = 111. |
|||
(invoke "fill" (i32.const 2) (i32.const 111) (i32.const 2)) |
|||
(assert_return (invoke "get" (i32.const 2)) (i32.const 111)) |
|||
(assert_return (invoke "get" (i32.const 3)) (i32.const 111)) |
|||
|
|||
;; Copy from table[0..2] to table[3..5]. |
|||
(invoke "copy" (i32.const 3) (i32.const 0) (i32.const 2)) |
|||
(assert_return (invoke "get" (i32.const 3)) (i32.const 999)) |
|||
(assert_return (invoke "get" (i32.const 4)) (i32.const 888)) |
|||
|
|||
;; Initialize the passive element at table[1..4]. |
|||
(invoke "init" (i32.const 1) (i32.const 0) (i32.const 3)) |
|||
(assert_return (invoke "get" (i32.const 1)) (i32.const 123)) |
|||
(assert_return (invoke "get" (i32.const 2)) (i32.const 456)) |
|||
(assert_return (invoke "get" (i32.const 3)) (i32.const 789)) |
Loading…
Reference in new issue