summaryrefslogtreecommitdiff
path: root/src/emscripten-optimizer/simple_ast.h
diff options
context:
space:
mode:
authorAlon Zakai (kripken) <alonzakai@gmail.com>2017-01-31 10:43:19 -0800
committerAlon Zakai (kripken) <alonzakai@gmail.com>2017-01-31 10:43:19 -0800
commitabb48f7460b26e14076fd34ed1f7274ab3a949cc (patch)
treec7bc74948103411b80e8a20daf8125ee847e3429 /src/emscripten-optimizer/simple_ast.h
parent818fa1dc19b0edcaaf1a8aa78b94bf052420252d (diff)
downloadbinaryen-abb48f7460b26e14076fd34ed1f7274ab3a949cc.tar.gz
binaryen-abb48f7460b26e14076fd34ed1f7274ab3a949cc.tar.bz2
binaryen-abb48f7460b26e14076fd34ed1f7274ab3a949cc.zip
refactor asm.js ast to use a string node directly instead of [NAME, string]
Diffstat (limited to 'src/emscripten-optimizer/simple_ast.h')
-rw-r--r--src/emscripten-optimizer/simple_ast.h18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/emscripten-optimizer/simple_ast.h b/src/emscripten-optimizer/simple_ast.h
index bb757e260..e89ddb666 100644
--- a/src/emscripten-optimizer/simple_ast.h
+++ b/src/emscripten-optimizer/simple_ast.h
@@ -663,6 +663,10 @@ struct JSPrinter {
void print(Ref node) {
ensure();
+ if (node->isString()) {
+ printName(node);
+ return;
+ }
if (node->isNumber()) {
printNum(node);
return;
@@ -708,8 +712,7 @@ struct JSPrinter {
break;
}
case 'n': {
- if (type == NAME) printName(node);
- else if (type == NEW) printNew(node);
+ if (type == NEW) printNew(node);
else abort();
break;
}
@@ -842,7 +845,7 @@ struct JSPrinter {
}
void printName(Ref node) {
- emit(node[1]->getCString());
+ emit(node->getCString());
}
static char* numToString(double d, bool finalize=true) {
@@ -1357,8 +1360,7 @@ public:
}
static Ref makeName(IString name) {
- return &makeRawArray(2)->push_back(makeRawString(NAME))
- .push_back(makeRawString(name));
+ return makeRawString(name);
}
static void setBlockContent(Ref target, Ref block) {
@@ -1460,7 +1462,7 @@ public:
}
static Ref makeStatement(Ref contents) {
- if (contents->isNumber() || statable.has(contents[0]->getIString())) {
+ if (contents->isNumber() || contents->isString() || statable.has(contents[0]->getIString())) {
return &makeRawArray(2)->push_back(makeRawString(STAT))
.push_back(contents);
} else {
@@ -1636,8 +1638,8 @@ public:
}
static Ref makeDot(Ref obj, Ref key) {
- assert(key[0] == NAME);
- return makeDot(obj, key[1]->getIString());
+ assert(key->isString());
+ return makeDot(obj, key->getIString());
}
static Ref makeNew(Ref call) {