diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/binaryen.js/exception-handling.js.txt | 8 | ||||
-rw-r--r-- | test/binaryen.js/kitchen-sink.js | 1 | ||||
-rw-r--r-- | test/binaryen.js/kitchen-sink.js.txt | 43 | ||||
-rw-r--r-- | test/example/c-api-kitchen-sink.c | 2 | ||||
-rw-r--r-- | test/example/c-api-kitchen-sink.txt | 1 | ||||
-rw-r--r-- | test/lit/table-operations.wast | 20 | ||||
-rw-r--r-- | test/spec/table_size.wast | 88 |
7 files changed, 138 insertions, 25 deletions
diff --git a/test/binaryen.js/exception-handling.js.txt b/test/binaryen.js/exception-handling.js.txt index 75ca8b5cb..09d8659a0 100644 --- a/test/binaryen.js/exception-handling.js.txt +++ b/test/binaryen.js/exception-handling.js.txt @@ -34,7 +34,7 @@ ) ) -getExpressionInfo(throw) = {"id":48,"type":1,"tag":"e"} -getExpressionInfo(rethrow) = {"id":49,"type":1,"target":"l0"} -getExpressionInfo(try_catch) = {"id":47,"type":1,"name":"l0","hasCatchAll":0,"delegateTarget":"","isDelegate":0} -getExpressionInfo(try_delegate) = {"id":47,"type":0,"name":"try_outer","hasCatchAll":1,"delegateTarget":"","isDelegate":0} +getExpressionInfo(throw) = {"id":49,"type":1,"tag":"e"} +getExpressionInfo(rethrow) = {"id":50,"type":1,"target":"l0"} +getExpressionInfo(try_catch) = {"id":48,"type":1,"name":"l0","hasCatchAll":0,"delegateTarget":"","isDelegate":0} +getExpressionInfo(try_delegate) = {"id":48,"type":0,"name":"try_outer","hasCatchAll":1,"delegateTarget":"","isDelegate":0} diff --git a/test/binaryen.js/kitchen-sink.js b/test/binaryen.js/kitchen-sink.js index f2da5d0a0..10d97cc0a 100644 --- a/test/binaryen.js/kitchen-sink.js +++ b/test/binaryen.js/kitchen-sink.js @@ -166,6 +166,7 @@ function test_ids() { console.log("RefEqId: " + binaryen.RefEqId); console.log("TableGetId: " + binaryen.TableGetId); console.log("TableSetId: " + binaryen.TableSetId); + console.log("TableSizeId: " + binaryen.TableSizeId); console.log("TryId: " + binaryen.TryId); console.log("ThrowId: " + binaryen.ThrowId); console.log("RethrowId: " + binaryen.RethrowId); diff --git a/test/binaryen.js/kitchen-sink.js.txt b/test/binaryen.js/kitchen-sink.js.txt index 54a18cd54..f54991f0b 100644 --- a/test/binaryen.js/kitchen-sink.js.txt +++ b/test/binaryen.js/kitchen-sink.js.txt @@ -90,27 +90,28 @@ RefFuncId: 43 RefEqId: 44 TableGetId: 45 TableSetId: 46 -TryId: 47 -ThrowId: 48 -RethrowId: 49 -TupleMakeId: 50 -TupleExtractId: 51 -I31NewId: 52 -I31GetId: 53 -CallRefId: 54 -RefTestId: 55 -RefCastId: 56 -BrOnId: 57 -RttCanonId: 58 -RttSubId: 59 -StructNewId: 60 -StructGetId: 61 -StructSetId: 62 -ArrayNewId: 63 -ArrayInitId: 64 -ArrayGetId: 65 -ArraySetId: 66 -ArrayLenId: 67 +TableSizeId: 47 +TryId: 48 +ThrowId: 49 +RethrowId: 50 +TupleMakeId: 51 +TupleExtractId: 52 +I31NewId: 53 +I31GetId: 54 +CallRefId: 55 +RefTestId: 56 +RefCastId: 57 +BrOnId: 58 +RttCanonId: 59 +RttSubId: 60 +StructNewId: 61 +StructGetId: 62 +StructSetId: 63 +ArrayNewId: 64 +ArrayInitId: 65 +ArrayGetId: 66 +ArraySetId: 67 +ArrayLenId: 68 getExpressionInfo={"id":15,"type":4,"op":6} (f32.neg (f32.const -33.61199951171875) diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c index 894fc1454..1e762579e 100644 --- a/test/example/c-api-kitchen-sink.c +++ b/test/example/c-api-kitchen-sink.c @@ -1026,6 +1026,8 @@ void test_core() { BinaryenExpressionPrint(funcrefExpr2); + BinaryenExpressionPrint(BinaryenTableSize(module, "0")); + // Memory. One per module const char* segments[] = {"hello, world", "I am passive"}; diff --git a/test/example/c-api-kitchen-sink.txt b/test/example/c-api-kitchen-sink.txt index c28e0536d..b1afb9954 100644 --- a/test/example/c-api-kitchen-sink.txt +++ b/test/example/c-api-kitchen-sink.txt @@ -38,6 +38,7 @@ BinaryenFeatureAll: 32767 (table.get $0 (i32.const 0) ) +(table.size $0) (module (type $i32_i64_f32_f64_=>_i32 (func (param i32 i64 f32 f64) (result i32))) (type $i32_=>_none (func (param i32))) diff --git a/test/lit/table-operations.wast b/test/lit/table-operations.wast index 555708c07..dece2143a 100644 --- a/test/lit/table-operations.wast +++ b/test/lit/table-operations.wast @@ -12,9 +12,13 @@ (module ;; CHECK-BINARY: (type $none_=>_none (func)) + ;; CHECK-BINARY: (type $none_=>_i32 (func (result i32))) + ;; CHECK-BINARY: (table $table-1 1 1 funcref) ;; CHECK-TEXT: (type $none_=>_none (func)) + ;; CHECK-TEXT: (type $none_=>_i32 (func (result i32))) + ;; CHECK-TEXT: (table $table-1 1 1 funcref) (table $table-1 funcref (elem $foo) @@ -113,9 +117,21 @@ ) ) ) + + ;; CHECK-BINARY: (func $get-table-size (result i32) + ;; CHECK-BINARY-NEXT: (table.size $table-1) + ;; CHECK-BINARY-NEXT: ) + ;; CHECK-TEXT: (func $get-table-size (result i32) + ;; CHECK-TEXT-NEXT: (table.size $table-1) + ;; CHECK-TEXT-NEXT: ) + (func $get-table-size (result i32) + (table.size $table-1) + ) ) ;; CHECK-NODEBUG: (type $none_=>_none (func)) +;; CHECK-NODEBUG: (type $none_=>_i32 (func (result i32))) + ;; CHECK-NODEBUG: (table $0 1 1 funcref) ;; CHECK-NODEBUG: (table $1 3 3 funcref) @@ -152,3 +168,7 @@ ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) + +;; CHECK-NODEBUG: (func $3 (result i32) +;; CHECK-NODEBUG-NEXT: (table.size $0) +;; CHECK-NODEBUG-NEXT: ) diff --git a/test/spec/table_size.wast b/test/spec/table_size.wast new file mode 100644 index 000000000..5732ca1a8 --- /dev/null +++ b/test/spec/table_size.wast @@ -0,0 +1,88 @@ +;; TODO: uncomment tests when table.grow is implemented + +(module + (table $t0 0 externref) + (table $t1 1 externref) + (table $t2 0 2 externref) + (table $t3 3 8 externref) + + (func (export "size-t0") (result i32) (table.size $t0)) + (func (export "size-t1") (result i32) (table.size $t1)) + (func (export "size-t2") (result i32) (table.size $t2)) + (func (export "size-t3") (result i32) (table.size $t3)) + + ;; (func (export "grow-t0") (param $sz i32) + ;; (drop (table.grow $t0 (ref.null extern) (local.get $sz))) + ;; ) + ;; (func (export "grow-t1") (param $sz i32) + ;; (drop (table.grow $t1 (ref.null extern) (local.get $sz))) + ;; ) + ;; (func (export "grow-t2") (param $sz i32) + ;; (drop (table.grow $t2 (ref.null extern) (local.get $sz))) + ;; ) + ;; (func (export "grow-t3") (param $sz i32) + ;; (drop (table.grow $t3 (ref.null extern) (local.get $sz))) + ;; ) +) + +(assert_return (invoke "size-t0") (i32.const 0)) +;; (assert_return (invoke "grow-t0" (i32.const 1))) +;; (assert_return (invoke "size-t0") (i32.const 1)) +;; (assert_return (invoke "grow-t0" (i32.const 4))) +;; (assert_return (invoke "size-t0") (i32.const 5)) +;; (assert_return (invoke "grow-t0" (i32.const 0))) +;; (assert_return (invoke "size-t0") (i32.const 5)) + +(assert_return (invoke "size-t1") (i32.const 1)) +;; (assert_return (invoke "grow-t1" (i32.const 1))) +;; (assert_return (invoke "size-t1") (i32.const 2)) +;; (assert_return (invoke "grow-t1" (i32.const 4))) +;; (assert_return (invoke "size-t1") (i32.const 6)) +;; (assert_return (invoke "grow-t1" (i32.const 0))) +;; (assert_return (invoke "size-t1") (i32.const 6)) + +(assert_return (invoke "size-t2") (i32.const 0)) +;; (assert_return (invoke "grow-t2" (i32.const 3))) +;; (assert_return (invoke "size-t2") (i32.const 0)) +;; (assert_return (invoke "grow-t2" (i32.const 1))) +;; (assert_return (invoke "size-t2") (i32.const 1)) +;; (assert_return (invoke "grow-t2" (i32.const 0))) +;; (assert_return (invoke "size-t2") (i32.const 1)) +;; (assert_return (invoke "grow-t2" (i32.const 4))) +;; (assert_return (invoke "size-t2") (i32.const 1)) +;; (assert_return (invoke "grow-t2" (i32.const 1))) +;; (assert_return (invoke "size-t2") (i32.const 2)) + +(assert_return (invoke "size-t3") (i32.const 3)) +;; (assert_return (invoke "grow-t3" (i32.const 1))) +;; (assert_return (invoke "size-t3") (i32.const 4)) +;; (assert_return (invoke "grow-t3" (i32.const 3))) +;; (assert_return (invoke "size-t3") (i32.const 7)) +;; (assert_return (invoke "grow-t3" (i32.const 0))) +;; (assert_return (invoke "size-t3") (i32.const 7)) +;; (assert_return (invoke "grow-t3" (i32.const 2))) +;; (assert_return (invoke "size-t3") (i32.const 7)) +;; (assert_return (invoke "grow-t3" (i32.const 1))) +;; (assert_return (invoke "size-t3") (i32.const 8)) + + +;; Type errors + +(assert_invalid + (module + (table $t 1 externref) + (func $type-result-i32-vs-empty + (table.size $t) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (table $t 1 externref) + (func $type-result-i32-vs-f32 (result f32) + (table.size $t) + ) + ) + "type mismatch" +) |