diff options
-rw-r--r-- | src/analyzer.js | 12 | ||||
-rw-r--r-- | src/enzymatic.js | 2 | ||||
-rw-r--r-- | src/intertyper.js | 4 | ||||
-rw-r--r-- | src/utility.js | 18 |
4 files changed, 26 insertions, 10 deletions
diff --git a/src/analyzer.js b/src/analyzer.js index d1039e1c..ca0ada1c 100644 --- a/src/analyzer.js +++ b/src/analyzer.js @@ -84,7 +84,7 @@ function analyzer(data) { if (type.length == 1) return; if (data.types[type]) return; if (['internal', 'inbounds', 'void'].indexOf(type) != -1) return; - dprint('types', '// addType: ' + type); + //dprint('types', '// addType: ' + type); var check = new RegExp(/^\[(\d+)\ x\ (.*)\]$/g).exec(type); // 'blocks': [14 x %struct.X] etc. if (check) { @@ -119,10 +119,16 @@ function analyzer(data) { walkJSON(data, function(item) { if (!item) return; if (item.type) { - addType(!item.type ? item.type : item.type, data); + addType(item.type, data); } if (item.type2) { - addType(!item.type2.text ? item.type2 : item.type2.text, data); + addType(item.type2, data); + } + if (item.pointerType) { + addType(item.pointerType, data); + } + if (item.valueType) { + addType(item.valueType, data); } }); this.forwardItem(data, 'Typeanalyzer'); diff --git a/src/enzymatic.js b/src/enzymatic.js index d940030e..29e9e773 100644 --- a/src/enzymatic.js +++ b/src/enzymatic.js @@ -83,7 +83,7 @@ Substrate.prototype = { 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("Exception, current selected are: " + inputs.map(dump).join('\n\n')); print("Stack: " + new Error().stack); throw e; } diff --git a/src/intertyper.js b/src/intertyper.js index d5d41c3a..d012d38f 100644 --- a/src/intertyper.js +++ b/src/intertyper.js @@ -259,7 +259,7 @@ function intertyper(data) { } else { // variable var ident = item.tokens[0].text; - while (item.tokens[2].text in set('private', 'constant', 'appending', 'global', 'weak_odr', 'internal', 'linkonce')) + while (item.tokens[2].text in set('private', 'constant', 'appending', 'global', 'weak_odr', 'internal', 'linkonce', 'weak')) item.tokens.splice(2, 1); var ret = { __result__: true, @@ -389,7 +389,7 @@ function intertyper(data) { item.intertype = 'bitcast'; item.type = item.tokens[1].text; item.ident = item.tokens[2].text; - item.type2 = item.tokens[4]; + item.type2 = item.tokens[4].text; this.forwardItem(item, 'Reintegrator'); }, }); diff --git a/src/utility.js b/src/utility.js index 2cc2408c..0be6e598 100644 --- a/src/utility.js +++ b/src/utility.js @@ -95,10 +95,20 @@ function searchable() { } function walkJSON(item, func) { - func(item); - for (x in item) { - if (typeof item[x] === 'object') { - walkJSON(item[x], func); + if (item.length) { + for (var x = 0; x < item.length; x++) { + var y = item[x]; + if (y && typeof y === 'object') { + walkJSON(y, func); + } + } + } else { + func(item); + for (x in item) { + var y = item[x]; + if (y && typeof y === 'object') { + walkJSON(y, func); + } } } } |