summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-05-18 18:11:29 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-05-18 18:28:22 -0700
commit013644bd98de23f0e1c303dd72994956486b455a (patch)
tree354307cd811036b51324662e50e78e4f3681701f
parent9070ff54453bec5e90727cc586b4a702b54628d4 (diff)
downloadbinaryen-013644bd98de23f0e1c303dd72994956486b455a.tar.gz
binaryen-013644bd98de23f0e1c303dd72994956486b455a.tar.bz2
binaryen-013644bd98de23f0e1c303dd72994956486b455a.zip
finalize s2wasm blocks once at their end, not constantly
-rw-r--r--src/s2wasm.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/s2wasm.h b/src/s2wasm.h
index 79ba4c138..082cbed1a 100644
--- a/src/s2wasm.h
+++ b/src/s2wasm.h
@@ -529,7 +529,6 @@ class S2WasmBuilder {
last = last->cast<Loop>()->body;
}
last->cast<Block>()->list.push_back(curr);
- last->cast<Block>()->finalize();
};
bstack.push_back(func->body);
std::vector<Expression*> estack;
@@ -924,6 +923,7 @@ class S2WasmBuilder {
addToBlock(curr);
bstack.push_back(curr);
} else if (match("end_block")) {
+ bstack.back()->cast<Block>()->finalize();
bstack.pop_back();
} else if (match(".LBB")) {
s = strchr(s, '\n');
@@ -999,6 +999,7 @@ class S2WasmBuilder {
}
}
// finishing touches
+ bstack.back()->cast<Block>()->finalize();
bstack.pop_back(); // remove the base block for the function body
assert(bstack.empty());
assert(estack.empty());