diff options
author | Thomas Lively <7121787+tlively@users.noreply.github.com> | 2021-07-01 01:56:23 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-30 18:56:23 -0700 |
commit | ca27f40a2f1070a16ee7c0efc18ff35d342d8027 (patch) | |
tree | ab0f2b1b731737bc409db21f677b97be16f67c0f /src/tools/js-wrapper.h | |
parent | 10ef52d62468aec5762742930630e882dc5e5c0b (diff) | |
download | binaryen-ca27f40a2f1070a16ee7c0efc18ff35d342d8027.tar.gz binaryen-ca27f40a2f1070a16ee7c0efc18ff35d342d8027.tar.bz2 binaryen-ca27f40a2f1070a16ee7c0efc18ff35d342d8027.zip |
Preserve Function HeapTypes (#3952)
When using nominal types, func.ref of two functions with identical signatures
but different HeapTypes will yield different types. To preserve these semantics,
Functions need to track their HeapTypes, not just their Signatures.
This PR replaces the Signature field in Function with a HeapType field and adds
new utility methods to make it almost as simple to update and query the function
HeapType as it was to update and query the Function Signature.
Diffstat (limited to 'src/tools/js-wrapper.h')
-rw-r--r-- | src/tools/js-wrapper.h | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/tools/js-wrapper.h b/src/tools/js-wrapper.h index e6f553124..b93948e74 100644 --- a/src/tools/js-wrapper.h +++ b/src/tools/js-wrapper.h @@ -25,7 +25,7 @@ namespace wasm { -static std::string generateJSWrapper(Module& wasm) { +inline std::string generateJSWrapper(Module& wasm) { std::string ret; ret += "if (typeof console === 'undefined') {\n" " console = { log: print };\n" @@ -96,7 +96,7 @@ static std::string generateJSWrapper(Module& wasm) { ret += "try {\n"; ret += std::string(" console.log('[fuzz-exec] calling ") + exp->name.str + "');\n"; - if (func->sig.results != Type::none) { + if (func->getResults() != Type::none) { ret += std::string(" console.log('[fuzz-exec] note result: ") + exp->name.str + " => ' + literal("; } else { @@ -104,7 +104,7 @@ static std::string generateJSWrapper(Module& wasm) { } ret += std::string("instance.exports.") + exp->name.str + "("; bool first = true; - for (auto param : func->sig.params) { + for (auto param : func->getParams()) { // zeros in arguments TODO more? if (first) { first = false; @@ -121,8 +121,8 @@ static std::string generateJSWrapper(Module& wasm) { } } ret += ")"; - if (func->sig.results != Type::none) { - ret += ", '" + func->sig.results.toString() + "'))"; + if (func->getResults() != Type::none) { + ret += ", '" + func->getResults().toString() + "'))"; // TODO: getTempRet } ret += ";\n"; |