aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralon@honor <none@none>2010-10-17 20:59:50 -0700
committeralon@honor <none@none>2010-10-17 20:59:50 -0700
commitd16c1a6c068b8a293cf63723324e792dea187992 (patch)
tree9dbeb6ab275af1d60147d4b6df2776c7e873d49c
parent4acb8fa3279136ab9cfc6279e0bf1372d6520d11 (diff)
misc minor fixes
-rwxr-xr-xemscripten.py4
-rw-r--r--src/enzymatic.js25
-rw-r--r--src/intertyper.js6
-rw-r--r--src/parseTools.js2
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;
}