diff options
author | Alon Zakai <azakai@google.com> | 2020-11-24 12:36:11 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-24 12:36:11 -0800 |
commit | 78ccc1976bac069ae65b2ec227e8c2c515a02801 (patch) | |
tree | b875343fa47a62a44db4370811080dc963a91233 /src/wasm.h | |
parent | cecff82aff317c3132f80a764dba163bcd852a78 (diff) | |
download | binaryen-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.h | 12 |
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) {} |