summaryrefslogtreecommitdiff
path: root/src/wasm.h
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2020-11-24 12:36:11 -0800
committerGitHub <noreply@github.com>2020-11-24 12:36:11 -0800
commit78ccc1976bac069ae65b2ec227e8c2c515a02801 (patch)
treeb875343fa47a62a44db4370811080dc963a91233 /src/wasm.h
parentcecff82aff317c3132f80a764dba163bcd852a78 (diff)
downloadbinaryen-78ccc1976bac069ae65b2ec227e8c2c515a02801.tar.gz
binaryen-78ccc1976bac069ae65b2ec227e8c2c515a02801.tar.bz2
binaryen-78ccc1976bac069ae65b2ec227e8c2c515a02801.zip
[TypedFunctionReferences] Implement call_ref (#3396)
Includes minimal support in various passes. Also includes actual optimization work in Directize, which was easy to add. Almost has fuzzer support, but the actual makeCallRef is just a stub so far. Includes s-parser support for parsing typed function references types.
Diffstat (limited to 'src/wasm.h')
-rw-r--r--src/wasm.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/wasm.h b/src/wasm.h
index e9fb4461b..6367fa345 100644
--- a/src/wasm.h
+++ b/src/wasm.h
@@ -588,6 +588,7 @@ public:
TupleExtractId,
I31NewId,
I31GetId,
+ CallRefId,
RefTestId,
RefCastId,
BrOnCastId,
@@ -1294,6 +1295,17 @@ public:
void finalize();
};
+class CallRef : public SpecificExpression<Expression::CallRefId> {
+public:
+ CallRef(MixedArena& allocator) : operands(allocator) {}
+ ExpressionList operands;
+ Expression* target;
+ bool isReturn = false;
+
+ void finalize();
+ void finalize(Type type_);
+};
+
class RefTest : public SpecificExpression<Expression::RefTestId> {
public:
RefTest(MixedArena& allocator) {}