diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/enzymatic.js | 25 | ||||
-rw-r--r-- | src/intertyper.js | 6 | ||||
-rw-r--r-- | src/parseTools.js | 2 |
3 files changed, 13 insertions, 20 deletions
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; } |