summaryrefslogtreecommitdiff
path: root/src/wasm.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-03-07 17:03:38 -0800
committerAlon Zakai <alonzakai@gmail.com>2016-03-07 18:27:29 -0800
commit284ae677cca8794a464f9bf702e3ec6aace6c65b (patch)
treebe323dc8b38ebe8cfe758c7df8ad2865f3f2bd7d /src/wasm.h
parentea3a9db4a071292d4e976ef36f4c197a9e8a5fea (diff)
downloadbinaryen-284ae677cca8794a464f9bf702e3ec6aace6c65b.tar.gz
binaryen-284ae677cca8794a464f9bf702e3ec6aace6c65b.tar.bz2
binaryen-284ae677cca8794a464f9bf702e3ec6aace6c65b.zip
br_table, no more cases
Diffstat (limited to 'src/wasm.h')
-rw-r--r--src/wasm.h22
1 files changed, 7 insertions, 15 deletions
diff --git a/src/wasm.h b/src/wasm.h
index ba9d7de3d..6cbe93e3b 100644
--- a/src/wasm.h
+++ b/src/wasm.h
@@ -842,20 +842,14 @@ public:
class Switch : public Expression {
public:
- Switch() : Expression(SwitchId) {}
-
- struct Case {
- Name name;
- Expression *body;
- Case() {}
- Case(Name name, Expression *body) : name(name), body(body) {}
- };
+ Switch() : Expression(SwitchId), condition(nullptr), value(nullptr) {
+ type = unreachable;
+ }
- Name name;
- Expression *value;
std::vector<Name> targets;
Name default_;
- std::vector<Case> cases;
+ Expression *condition;
+ Expression *value;
};
class CallBase : public Expression {
@@ -1288,10 +1282,8 @@ struct ChildWalker : public WasmWalkerBase<ChildWalker<ParentType>> {
parent.walk(curr->value);
}
void visitSwitch(Switch *curr) {
- parent.walk(curr->value);
- for (auto& case_ : curr->cases) {
- parent.walk(case_.body);
- }
+ parent.walk(curr->condition);
+ if (curr->value) parent.walk(curr->value);
}
void visitCall(Call *curr) {
ExpressionList& list = curr->operands;