diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-09-21 12:26:52 -0500 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-09-23 14:33:24 -0700 |
commit | 4afa4bb91b53567561364df68d8b73d6333c1292 (patch) | |
tree | fc1ed753a47aadd80022a66e2102b0ba0a2fe65d | |
parent | 29865c4de6fa61206c7a29599b8ed9f66f78662d (diff) |
simplify function splitter
-rw-r--r-- | src/jsifier.js | 66 |
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); } |