aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-09-21 12:26:52 -0500
committerAlon Zakai <alonzakai@gmail.com>2013-09-23 14:33:24 -0700
commit4afa4bb91b53567561364df68d8b73d6333c1292 (patch)
treefc1ed753a47aadd80022a66e2102b0ba0a2fe65d
parent29865c4de6fa61206c7a29599b8ed9f66f78662d (diff)
simplify function splitter
-rw-r--r--src/jsifier.js66
1 files changed, 32 insertions, 34 deletions
diff --git a/src/jsifier.js b/src/jsifier.js
index 554c03d9..8c6b0c8e 100644
--- a/src/jsifier.js
+++ b/src/jsifier.js
@@ -516,40 +516,38 @@ function JSify(data, functionsOnly, givenFunctions) {
// function splitter
function functionSplitter(item) {
- item.labels.forEach(function(label) {
- label.lines.forEach(function(line) {
- Framework.currItem = line;
- line.funcData = item; // TODO: remove all these, access it globally
- switch (line.intertype) {
- case 'value': line.JS = valueHandler(line); break;
- case 'noop': line.JS = noopHandler(line); break;
- case 'var': line.JS = varHandler(line); break;
- case 'store': line.JS = storeHandler(line); break;
- case 'deleted': line.JS = deletedHandler(line); break;
- case 'branch': line.JS = branchHandler(line); break;
- case 'switch': line.JS = switchHandler(line); break;
- case 'return': line.JS = returnHandler(line); break;
- case 'resume': line.JS = resumeHandler(line); break;
- case 'invoke': line.JS = invokeHandler(line); break;
- case 'atomic': line.JS = atomicHandler(line); break;
- case 'landingpad': line.JS = landingpadHandler(line); break;
- case 'load': line.JS = loadHandler(line); break;
- case 'extractvalue': line.JS = extractvalueHandler(line); break;
- case 'insertvalue': line.JS = insertvalueHandler(line); break;
- case 'indirectbr': line.JS = indirectbrHandler(line); break;
- case 'alloca': line.JS = allocaHandler(line); break;
- case 'va_arg': line.JS = va_argHandler(line); break;
- case 'mathop': line.JS = mathopHandler(line); break;
- case 'bitcast': line.JS = bitcastHandler(line); break;
- case 'getelementptr': line.JS = getelementptrHandler(line); break;
- case 'call': line.JS = callHandler(line); break;
- case 'unreachable': line.JS = unreachableHandler(line); break;
- default: throw 'what is this line? ' + dump(line);
- }
- assert(line.JS);
- if (line.assignTo) makeAssign(line);
- Framework.currItem = null;
- });
+ item.lines.forEach(function(line) {
+ Framework.currItem = line;
+ line.funcData = item; // TODO: remove all these, access it globally
+ switch (line.intertype) {
+ case 'value': line.JS = valueHandler(line); break;
+ case 'noop': line.JS = noopHandler(line); break;
+ case 'var': line.JS = varHandler(line); break;
+ case 'store': line.JS = storeHandler(line); break;
+ case 'deleted': line.JS = deletedHandler(line); break;
+ case 'branch': line.JS = branchHandler(line); break;
+ case 'switch': line.JS = switchHandler(line); break;
+ case 'return': line.JS = returnHandler(line); break;
+ case 'resume': line.JS = resumeHandler(line); break;
+ case 'invoke': line.JS = invokeHandler(line); break;
+ case 'atomic': line.JS = atomicHandler(line); break;
+ case 'landingpad': line.JS = landingpadHandler(line); break;
+ case 'load': line.JS = loadHandler(line); break;
+ case 'extractvalue': line.JS = extractvalueHandler(line); break;
+ case 'insertvalue': line.JS = insertvalueHandler(line); break;
+ case 'indirectbr': line.JS = indirectbrHandler(line); break;
+ case 'alloca': line.JS = allocaHandler(line); break;
+ case 'va_arg': line.JS = va_argHandler(line); break;
+ case 'mathop': line.JS = mathopHandler(line); break;
+ case 'bitcast': line.JS = bitcastHandler(line); break;
+ case 'getelementptr': line.JS = getelementptrHandler(line); break;
+ case 'call': line.JS = callHandler(line); break;
+ case 'unreachable': line.JS = unreachableHandler(line); break;
+ default: throw 'what is this line? ' + dump(line);
+ }
+ assert(line.JS);
+ if (line.assignTo) makeAssign(line);
+ Framework.currItem = null;
});
functionReconstructor(item);
}