aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/analyzer.js12
-rw-r--r--src/enzymatic.js2
-rw-r--r--src/intertyper.js4
-rw-r--r--src/utility.js18
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);
+ }
}
}
}