From f5c3d0c8191ec7537d70c413bc84a9ec63272de1 Mon Sep 17 00:00:00 2001 From: dcode Date: Wed, 24 Feb 2021 10:35:07 +0100 Subject: [PATCH] Add TypedFunctionReferences feature to C and JS API --- src/binaryen-c.cpp | 3 +++ src/binaryen-c.h | 1 + src/js/binaryen.js-post.js | 1 + test/binaryen.js/kitchen-sink.js | 1 + test/binaryen.js/kitchen-sink.js.txt | 1 + test/example/c-api-kitchen-sink.c | 1 + test/example/c-api-kitchen-sink.txt | 1 + 7 files changed, 9 insertions(+) diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index 26a9c5801ac..019e8af62cc 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -246,6 +246,9 @@ BinaryenFeatures BinaryenFeatureGC(void) { BinaryenFeatures BinaryenFeatureMemory64(void) { return static_cast(FeatureSet::Memory64); } +BinaryenFeatures BinaryenFeatureTypedFunctionReferences(void) { + return static_cast(FeatureSet::TypedFunctionReferences); +} BinaryenFeatures BinaryenFeatureAll(void) { return static_cast(FeatureSet::All); } diff --git a/src/binaryen-c.h b/src/binaryen-c.h index 23bd5fdcc3e..beae7d662d6 100644 --- a/src/binaryen-c.h +++ b/src/binaryen-c.h @@ -159,6 +159,7 @@ BINARYEN_API BinaryenFeatures BinaryenFeatureReferenceTypes(void); BINARYEN_API BinaryenFeatures BinaryenFeatureMultivalue(void); BINARYEN_API BinaryenFeatures BinaryenFeatureGC(void); BINARYEN_API BinaryenFeatures BinaryenFeatureMemory64(void); +BINARYEN_API BinaryenFeatures BinaryenFeatureTypedFunctionReferences(void); BINARYEN_API BinaryenFeatures BinaryenFeatureAll(void); // Modules diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js index 7c53298ad80..239c09c22e6 100644 --- a/src/js/binaryen.js-post.js +++ b/src/js/binaryen.js-post.js @@ -141,6 +141,7 @@ function initializeConstants() { 'Multivalue', 'GC', 'Memory64', + 'TypedFunctionReferences', 'All' ].forEach(name => { Module['Features'][name] = Module['_BinaryenFeature' + name](); diff --git a/test/binaryen.js/kitchen-sink.js b/test/binaryen.js/kitchen-sink.js index 2a28cc5b24f..3aebe0e6180 100644 --- a/test/binaryen.js/kitchen-sink.js +++ b/test/binaryen.js/kitchen-sink.js @@ -114,6 +114,7 @@ function test_features() { console.log("Features.Multivalue: " + binaryen.Features.Multivalue); console.log("Features.GC: " + binaryen.Features.GC); console.log("Features.Memory64: " + binaryen.Features.Memory64); + console.log("Features.TypedFunctionReferences: " + binaryen.Features.TypedFunctionReferences); console.log("Features.All: " + binaryen.Features.All); } diff --git a/test/binaryen.js/kitchen-sink.js.txt b/test/binaryen.js/kitchen-sink.js.txt index 4b9de93ab63..aff1d1f2df5 100644 --- a/test/binaryen.js/kitchen-sink.js.txt +++ b/test/binaryen.js/kitchen-sink.js.txt @@ -41,6 +41,7 @@ Features.ReferenceTypes: 256 Features.Multivalue: 512 Features.GC: 1024 Features.Memory64: 2048 +Features.TypedFunctionReferences: 4096 Features.All: 8191 InvalidId: 0 BlockId: 1 diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c index 359203e8bf1..0f9c33f5dd3 100644 --- a/test/example/c-api-kitchen-sink.c +++ b/test/example/c-api-kitchen-sink.c @@ -261,6 +261,7 @@ void test_features() { printf("BinaryenFeatureMultivalue: %d\n", BinaryenFeatureMultivalue()); printf("BinaryenFeatureGC: %d\n", BinaryenFeatureGC()); printf("BinaryenFeatureMemory64: %d\n", BinaryenFeatureMemory64()); + printf("BinaryenFeatureTypedFunctionReferences: %d\n", BinaryenFeatureTypedFunctionReferences()); printf("BinaryenFeatureAll: %d\n", BinaryenFeatureAll()); } diff --git a/test/example/c-api-kitchen-sink.txt b/test/example/c-api-kitchen-sink.txt index c3226690eea..66b9ab50792 100644 --- a/test/example/c-api-kitchen-sink.txt +++ b/test/example/c-api-kitchen-sink.txt @@ -25,6 +25,7 @@ BinaryenFeatureReferenceTypes: 256 BinaryenFeatureMultivalue: 512 BinaryenFeatureGC: 1024 BinaryenFeatureMemory64: 2048 +BinaryenFeatureTypedFunctionReferences: 4096 BinaryenFeatureAll: 8191 (f32.neg (f32.const -33.61199951171875)