diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-09-20 17:00:38 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-09-21 13:53:37 -0700 |
commit | e0b2af0827e98fb91f4ff90b57b7579da1608365 (patch) | |
tree | 93518f40604714a9f0df86952f2e395a18060042 /src/passes/OptimizeInstructions.cpp | |
parent | 64bfe1d84db6c0b9b63aa27bb2c2cb1d79f3f504 (diff) | |
download | binaryen-e0b2af0827e98fb91f4ff90b57b7579da1608365.tar.gz binaryen-e0b2af0827e98fb91f4ff90b57b7579da1608365.tar.bz2 binaryen-e0b2af0827e98fb91f4ff90b57b7579da1608365.zip |
refactor wasm.h to remove numericIndex hacks, and move indexing to the parsers
Diffstat (limited to 'src/passes/OptimizeInstructions.cpp')
-rw-r--r-- | src/passes/OptimizeInstructions.cpp | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/passes/OptimizeInstructions.cpp b/src/passes/OptimizeInstructions.cpp index 669a19b89..48639a341 100644 --- a/src/passes/OptimizeInstructions.cpp +++ b/src/passes/OptimizeInstructions.cpp @@ -55,15 +55,20 @@ struct PatternDatabase { input = strdup( #include "OptimizeInstructions.wast.processed" ); - SExpressionParser parser(input); - Element& root = *parser.root; - SExpressionWasmBuilder builder(wasm, *root[0]); - // parse module form - auto* func = wasm.getFunction("patterns"); - auto* body = func->body->cast<Block>(); - for (auto* item : body->list) { - auto* pair = item->cast<Block>(); - patternMap[pair->list[0]->_id].emplace_back(pair->list[0], pair->list[1]); + try { + SExpressionParser parser(input); + Element& root = *parser.root; + SExpressionWasmBuilder builder(wasm, *root[0]); + // parse module form + auto* func = wasm.getFunction("patterns"); + auto* body = func->body->cast<Block>(); + for (auto* item : body->list) { + auto* pair = item->cast<Block>(); + patternMap[pair->list[0]->_id].emplace_back(pair->list[0], pair->list[1]); + } + } catch (ParseException& p) { + p.dump(std::cerr); + Fatal() << "error in parsing wasm binary"; } } |