diff options
author | alon@honor <none@none> | 2010-10-17 20:59:50 -0700 |
---|---|---|
committer | alon@honor <none@none> | 2010-10-17 20:59:50 -0700 |
commit | d16c1a6c068b8a293cf63723324e792dea187992 (patch) | |
tree | 9dbeb6ab275af1d60147d4b6df2776c7e873d49c | |
parent | 4acb8fa3279136ab9cfc6279e0bf1372d6520d11 (diff) |
misc minor fixes
-rwxr-xr-x | emscripten.py | 4 | ||||
-rw-r--r-- | src/enzymatic.js | 25 | ||||
-rw-r--r-- | src/intertyper.js | 6 | ||||
-rw-r--r-- | src/parseTools.js | 2 |
4 files changed, 15 insertions, 22 deletions
diff --git a/emscripten.py b/emscripten.py index 6ab17de9..a0351ab7 100755 --- a/emscripten.py +++ b/emscripten.py @@ -13,7 +13,7 @@ def emscripten(filename, settings): data = open(filename, 'r').read() cwd = os.getcwd() os.chdir(os.path.dirname(COMPILER)) - subprocess.Popen([JS_ENGINE, COMPILER], stdin=subprocess.PIPE).communicate(settings+'\n'+data)[0] + subprocess.Popen(JS_ENGINE + [COMPILER], stdin=subprocess.PIPE).communicate(settings+'\n'+data)[0] os.chdir(cwd) if __name__ == '__main__': @@ -32,6 +32,6 @@ Emscripten usage: emscripten.py INFILE [PATH-TO-JS-ENGINE] [SETTINGS] ''' else: if len(sys.argv) >= 3: - JS_ENGINE = sys.argv[2] + JS_ENGINE = [sys.argv[2]] emscripten(sys.argv[1], sys.argv[3] if len(sys.argv) == 4 else "{}") diff --git a/src/enzymatic.js b/src/enzymatic.js index bb4458fe..5983f305 100644 --- a/src/enzymatic.js +++ b/src/enzymatic.js @@ -76,16 +76,10 @@ Substrate.prototype = { var inputs = zyme.items.slice(0); var outputs; var currResultCount = that.results.length; - try { - dprint('Processing using ' + zyme.name_ + ': ' + inputs.length); - zyme.items = []; // More may be added in process(); we'll get to them next time - outputs = zyme.process(inputs); - dprint('New results: ' + (outputs.length + that.results.length - currResultCount) + ' out of ' + (that.results.length + outputs.length)); - } catch (e) { - print("Exception, current selected are: " + inputs.map(dump).join('\n\n')); - print("Stack: " + dump(new Error().stack)); - throw e; - } + dprint('Processing using ' + zyme.name_ + ': ' + inputs.length); + zyme.items = []; // More may be added in process(); we'll get to them next time + outputs = zyme.process(inputs); + dprint('New results: ' + (outputs.length + that.results.length - currResultCount) + ' out of ' + (that.results.length + outputs.length)); hadProcessing = true; if (outputs) { @@ -124,14 +118,9 @@ Zyme.prototype = { var ret = []; for (var i = 0; i < items.length; i++) { var item = items[i]; - try { - var outputs = this.processItem(item); - if (outputs) { - ret = ret.concat(outputs); - } - } catch (e) { - print("Exception in process(), current item is: " + dump(item)); - throw e; + var outputs = this.processItem(item); + if (outputs) { + ret = ret.concat(outputs); } } return ret; diff --git a/src/intertyper.js b/src/intertyper.js index 86bf4a24..c0462738 100644 --- a/src/intertyper.js +++ b/src/intertyper.js @@ -178,7 +178,7 @@ function intertyper(data) { return 'Bitcast'; if (!item.intertype && item.indent === -1 && item.tokens && item.tokens.length >= 3 && item.tokens[0].text == 'getelementptr') return 'GEP'; - if (item.tokens && item.tokens.length >= 3 && item.tokens[0].text == 'call' && !item.intertype) + if (item.tokens && item.tokens.length >= 3 && (item.tokens[0].text == 'call' || item.tokens[1].text == 'call') && !item.intertype) return 'Call'; if (item.tokens && item.tokens.length >= 3 && item.tokens[0].text == 'invoke' && !item.intertype) return 'Invoke'; @@ -410,6 +410,10 @@ function intertyper(data) { substrate.addZyme('Call', { processItem: function(item) { item.intertype = 'call'; + if (['tail'].indexOf(item.tokens[0].text) != -1) { + item.tokens.splice(0, 1); + } + assertEq(item.tokens[0].text, 'call'); if (['signext', 'zeroext'].indexOf(item.tokens[1].text) != -1) { item.tokens.splice(1, 1); } diff --git a/src/parseTools.js b/src/parseTools.js index 3631fe24..3ee56ece 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -153,7 +153,7 @@ function compareTokens(a, b) { function getTokenIndexByText(tokens, text) { var i = 0; - while (tokens[i].text != ';') i++; + while (tokens[i] && tokens[i].text != text) i++; return i; } |