summaryrefslogtreecommitdiff
path: root/src/wasm-builder.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-08-03 12:12:24 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-09-07 09:54:53 -0700
commitf30d9f6cde023b29409f73aba68f472c06c3b11c (patch)
tree79f6744bdc406bb0b076fe0f4a1ec52ee5f575eb /src/wasm-builder.h
parent72616971b2a35cbc37ea974e47c870556ef8ef4d (diff)
downloadbinaryen-f30d9f6cde023b29409f73aba68f472c06c3b11c.tar.gz
binaryen-f30d9f6cde023b29409f73aba68f472c06c3b11c.tar.bz2
binaryen-f30d9f6cde023b29409f73aba68f472c06c3b11c.zip
loops no longer have an out label and other upstream loop updates
Diffstat (limited to 'src/wasm-builder.h')
-rw-r--r--src/wasm-builder.h20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/wasm-builder.h b/src/wasm-builder.h
index 3cba351a2..e68fd5ef2 100644
--- a/src/wasm-builder.h
+++ b/src/wasm-builder.h
@@ -82,9 +82,9 @@ public:
ret->finalize();
return ret;
}
- Loop* makeLoop(Name out, Name in, Expression* body) {
+ Loop* makeLoop(Name name, Expression* body) {
auto* ret = allocator.alloc<Loop>();
- ret->out = out; ret->in = in; ret->body = body;
+ ret->name = name; ret->body = body;
ret->finalize();
return ret;
}
@@ -265,7 +265,21 @@ public:
if (!block) block = makeBlock(any);
if (append) {
block->list.push_back(append);
- block->finalize();
+ block->finalize(); // TODO: move out of if
+ }
+ return block;
+ }
+
+ // ensure a node is a block, if it isn't already, and optionally append to the block
+ // this variant sets a name for the block, so it will not reuse a block already named
+ Block* blockifyWithName(Expression* any, Name name, Expression* append = nullptr) {
+ Block* block = nullptr;
+ if (any) block = any->dynCast<Block>();
+ if (!block || block->name.is()) block = makeBlock(any);
+ block->name = name;
+ if (append) {
+ block->list.push_back(append);
+ block->finalize(); // TODO: move out of if
}
return block;
}