summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-12-18 14:30:46 -0800
committerAlon Zakai <alonzakai@gmail.com>2015-12-18 15:06:01 -0800
commit884b9f8a688766e08907431cd6759bfaa89399dc (patch)
treefb75ab06ac3125ce7e8f2d4e0206bc321046a92b
parent2651a7c315cb5bf7343fe889585659074d5056c8 (diff)
downloadbinaryen-884b9f8a688766e08907431cd6759bfaa89399dc.tar.gz
binaryen-884b9f8a688766e08907431cd6759bfaa89399dc.tar.bz2
binaryen-884b9f8a688766e08907431cd6759bfaa89399dc.zip
remove Label, which was removed from the spec
-rw-r--r--src/pass.h1
-rw-r--r--src/passes/NameManager.cpp3
-rw-r--r--src/wasm-interpreter.h6
-rw-r--r--src/wasm-s-parser.h16
-rw-r--r--src/wasm.h59
-rw-r--r--src/wasm2asm.h6
6 files changed, 19 insertions, 72 deletions
diff --git a/src/pass.h b/src/pass.h
index de22e7daa..6af9e83e1 100644
--- a/src/pass.h
+++ b/src/pass.h
@@ -92,7 +92,6 @@ struct NameManager : public Pass {
// visitors
void visitBlock(Block* curr) override;
void visitLoop(Loop* curr) override;
- void visitLabel(Label* curr) override;
void visitBreak(Break* curr) override;
void visitSwitch(Switch* curr) override;
void visitCall(Call* curr) override;
diff --git a/src/passes/NameManager.cpp b/src/passes/NameManager.cpp
index 73a09262b..34ea6adac 100644
--- a/src/passes/NameManager.cpp
+++ b/src/passes/NameManager.cpp
@@ -24,9 +24,6 @@ void NameManager::visitLoop(Loop* curr) {
names.insert(curr->out);
names.insert(curr->in);
}
-void NameManager::visitLabel(Label* curr) {
- names.insert(curr->name);
-}
void NameManager::visitBreak(Break* curr) {
names.insert(curr->name);
}
diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h
index 83d974d47..4a04c6912 100644
--- a/src/wasm-interpreter.h
+++ b/src/wasm-interpreter.h
@@ -207,12 +207,6 @@ private:
return flow; // loop does not loop automatically, only continue achieves that
}
}
- Flow visitLabel(Label *curr) override {
- NOTE_ENTER("Label");
- Flow flow = visit(curr->body);
- flow.clearIf(curr->name);
- return flow;
- }
Flow visitBreak(Break *curr) override {
NOTE_ENTER("Break");
bool condition = true;
diff --git a/src/wasm-s-parser.h b/src/wasm-s-parser.h
index 7f1d9bf6c..deeaba155 100644
--- a/src/wasm-s-parser.h
+++ b/src/wasm-s-parser.h
@@ -555,7 +555,6 @@ public:
abort_on(str);
}
case 'l': {
- if (str[1] == 'a') return makeLabel(s);
if (str[1] == 'o') return makeLoop(s);
abort_on(str);
}
@@ -770,21 +769,6 @@ private:
return ret;
}
- Expression* makeLabel(Element& s) {
- auto ret = allocator.alloc<Label>();
- size_t i = 1;
- if (s[i]->isStr()) {
- ret->name = s[i]->str();
- i++;
- } else {
- ret->name = getPrefixedName("label");
- }
- labelStack.push_back(ret->name);
- ret->body = parseExpression(s[i]);
- labelStack.pop_back();
- return ret;
- }
-
Expression* makeMaybeBlock(Element& s, size_t i, size_t stopAt=-1) {
if (s.size() == i+1) return parseExpression(s[i]);
auto ret = allocator.alloc<Block>();
diff --git a/src/wasm.h b/src/wasm.h
index afc2cf88c..af3917744 100644
--- a/src/wasm.h
+++ b/src/wasm.h
@@ -260,26 +260,25 @@ class Expression {
public:
enum Id {
InvalidId = 0,
- BlockId = 1,
- IfId = 2,
- LoopId = 3,
- LabelId = 4,
- BreakId = 5,
- SwitchId =6 ,
- CallId = 7,
- CallImportId = 8,
- CallIndirectId = 9,
- GetLocalId = 10,
- SetLocalId = 11,
- LoadId = 12,
- StoreId = 13,
- ConstId = 14,
- UnaryId = 15,
- BinaryId = 16,
- SelectId = 17,
- HostId = 18,
- NopId = 19,
- UnreachableId = 20
+ BlockId,
+ IfId,
+ LoopId,
+ BreakId,
+ SwitchId,
+ CallId,
+ CallImportId,
+ CallIndirectId,
+ GetLocalId,
+ SetLocalId,
+ LoadId,
+ StoreId,
+ ConstId,
+ UnaryId,
+ BinaryId,
+ SelectId,
+ HostId,
+ NopId,
+ UnreachableId
};
Id _id;
@@ -390,21 +389,6 @@ public:
}
};
-class Label : public Expression {
-public:
- Label() : Expression(LabelId) {}
-
- Name name;
- Expression* body;
-
- std::ostream& doPrint(std::ostream &o, unsigned indent) {
- printOpening(o, "label ") << name;
- incIndent(o, indent);
- printFullLine(o, indent, body);
- return decIndent(o, indent);
- }
-};
-
class Break : public Expression {
public:
Break() : Expression(BreakId), condition(nullptr), value(nullptr) {}
@@ -1111,7 +1095,6 @@ struct WasmVisitor {
virtual ReturnType visitBlock(Block *curr) { abort(); }
virtual ReturnType visitIf(If *curr) { abort(); }
virtual ReturnType visitLoop(Loop *curr) { abort(); }
- virtual ReturnType visitLabel(Label *curr) { abort(); }
virtual ReturnType visitBreak(Break *curr) { abort(); }
virtual ReturnType visitSwitch(Switch *curr) { abort(); }
virtual ReturnType visitCall(Call *curr) { abort(); }
@@ -1143,7 +1126,6 @@ struct WasmVisitor {
case Expression::Id::BlockId: return visitBlock((Block*)curr);
case Expression::Id::IfId: return visitIf((If*)curr);
case Expression::Id::LoopId: return visitLoop((Loop*)curr);
- case Expression::Id::LabelId: return visitLabel((Label*)curr);
case Expression::Id::BreakId: return visitBreak((Break*)curr);
case Expression::Id::SwitchId: return visitSwitch((Switch*)curr);
case Expression::Id::CallId: return visitCall((Call*)curr);
@@ -1178,7 +1160,6 @@ std::ostream& Expression::print(std::ostream &o, unsigned indent) {
void visitBlock(Block *curr) override { curr->doPrint(o, indent); }
void visitIf(If *curr) override { curr->doPrint(o, indent); }
void visitLoop(Loop *curr) override { curr->doPrint(o, indent); }
- void visitLabel(Label *curr) override { curr->doPrint(o, indent); }
void visitBreak(Break *curr) override { curr->doPrint(o, indent); }
void visitSwitch(Switch *curr) override { curr->doPrint(o, indent); }
void visitCall(Call *curr) override { curr->doPrint(o, indent); }
@@ -1222,7 +1203,6 @@ struct WasmWalker : public WasmVisitor<void> {
void visitBlock(Block *curr) override {}
void visitIf(If *curr) override {}
void visitLoop(Loop *curr) override {}
- void visitLabel(Label *curr) override {}
void visitBreak(Break *curr) override {}
void visitSwitch(Switch *curr) override {}
void visitCall(Call *curr) override {}
@@ -1271,7 +1251,6 @@ struct WasmWalker : public WasmVisitor<void> {
void visitLoop(Loop *curr) override {
parent.walk(curr->body);
}
- void visitLabel(Label *curr) override {}
void visitBreak(Break *curr) override {
parent.walk(curr->condition);
parent.walk(curr->value);
diff --git a/src/wasm2asm.h b/src/wasm2asm.h
index 20e199516..b256a63c5 100644
--- a/src/wasm2asm.h
+++ b/src/wasm2asm.h
@@ -383,9 +383,6 @@ void Wasm2AsmBuilder::scanFunctionBody(Expression* curr) {
void visitLoop(Loop *curr) override {
parent->setStatement(curr);
}
- void visitLabel(Label *curr) override {
- parent->setStatement(curr);
- }
void visitBreak(Break *curr) override {
parent->setStatement(curr);
}
@@ -604,9 +601,6 @@ Ref Wasm2AsmBuilder::processFunctionBody(Expression* curr, IString result) {
}
return ret;
}
- Ref visitLabel(Label *curr) override {
- return ValueBuilder::makeLabel(fromName(curr->name), visit(curr->body, result));
- }
Ref visitBreak(Break *curr) override {
if (curr->condition) {
// we need an equivalent to an if here, so use that code