diff options
author | Alon Zakai <azakai@google.com> | 2020-11-18 09:52:08 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-18 09:52:08 -0800 |
commit | 3b5a67596be228d44471ecf66c934162c7b87882 (patch) | |
tree | 3dcb0f102d78bf8adae256abdd8f4d1ea68a86f2 /src/wasm/literal.cpp | |
parent | 091a50c764362511c4c338cb781ea278611613b0 (diff) | |
download | binaryen-3b5a67596be228d44471ecf66c934162c7b87882.tar.gz binaryen-3b5a67596be228d44471ecf66c934162c7b87882.tar.bz2 binaryen-3b5a67596be228d44471ecf66c934162c7b87882.zip |
[Types] Handle function types fully in more places (#3381)
Call isFunction to check for a general function type instead of just
a funcref, in places where we care about both, and some other minor
miscellaneous typing fixes in preparation for typed function references
(this will be tested fully at that time).
Change is mostly whitespace.
Diffstat (limited to 'src/wasm/literal.cpp')
-rw-r--r-- | src/wasm/literal.cpp | 105 |
1 files changed, 53 insertions, 52 deletions
diff --git a/src/wasm/literal.cpp b/src/wasm/literal.cpp index 6613bc1c7..c80bb44b8 100644 --- a/src/wasm/literal.cpp +++ b/src/wasm/literal.cpp @@ -422,58 +422,59 @@ void Literal::printVec128(std::ostream& o, const std::array<uint8_t, 16>& v) { std::ostream& operator<<(std::ostream& o, Literal literal) { prepareMinorColor(o); - TODO_SINGLE_COMPOUND(literal.type); - switch (literal.type.getBasic()) { - case Type::none: - o << "?"; - break; - case Type::i32: - o << literal.geti32(); - break; - case Type::i64: - o << literal.geti64(); - break; - case Type::f32: - literal.printFloat(o, literal.getf32()); - break; - case Type::f64: - literal.printDouble(o, literal.getf64()); - break; - case Type::v128: - o << "i32x4 "; - literal.printVec128(o, literal.getv128()); - break; - case Type::funcref: - if (literal.isNull()) { - o << "funcref(null)"; - } else { - o << "funcref(" << literal.getFunc() << ")"; - } - break; - case Type::externref: - assert(literal.isNull() && "unexpected non-null externref literal"); - o << "externref(null)"; - break; - case Type::exnref: - if (literal.isNull()) { - o << "exnref(null)"; - } else { - o << "exnref(" << literal.getExceptionPackage() << ")"; - } - break; - case Type::anyref: - assert(literal.isNull() && "unexpected non-null anyref literal"); - o << "anyref(null)"; - break; - case Type::eqref: - assert(literal.isNull() && "unexpected non-null eqref literal"); - o << "eqref(null)"; - break; - case Type::i31ref: - o << "i31ref(" << literal.geti31() << ")"; - break; - case Type::unreachable: - WASM_UNREACHABLE("invalid type"); + if (literal.type.isFunction()) { + if (literal.isNull()) { + o << "funcref(null)"; + } else { + o << "funcref(" << literal.getFunc() << ")"; + } + } else { + TODO_SINGLE_COMPOUND(literal.type); + switch (literal.type.getBasic()) { + case Type::none: + o << "?"; + break; + case Type::i32: + o << literal.geti32(); + break; + case Type::i64: + o << literal.geti64(); + break; + case Type::f32: + literal.printFloat(o, literal.getf32()); + break; + case Type::f64: + literal.printDouble(o, literal.getf64()); + break; + case Type::v128: + o << "i32x4 "; + literal.printVec128(o, literal.getv128()); + break; + case Type::externref: + assert(literal.isNull() && "unexpected non-null externref literal"); + o << "externref(null)"; + break; + case Type::exnref: + if (literal.isNull()) { + o << "exnref(null)"; + } else { + o << "exnref(" << literal.getExceptionPackage() << ")"; + } + break; + case Type::anyref: + assert(literal.isNull() && "unexpected non-null anyref literal"); + o << "anyref(null)"; + break; + case Type::eqref: + assert(literal.isNull() && "unexpected non-null eqref literal"); + o << "eqref(null)"; + break; + case Type::i31ref: + o << "i31ref(" << literal.geti31() << ")"; + break; + default: + WASM_UNREACHABLE("invalid type"); + } } restoreNormalColor(o); return o; |