aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/enzymatic.js2
-rw-r--r--src/parser.js13
-rw-r--r--src/utility.js18
3 files changed, 27 insertions, 6 deletions
diff --git a/src/enzymatic.js b/src/enzymatic.js
index 2ad8e165..6cd99bdf 100644
--- a/src/enzymatic.js
+++ b/src/enzymatic.js
@@ -28,7 +28,7 @@ Substrate.prototype = {
},
solve: function() {
- if (DEBUG) print("Solving...");
+ print("// Solving " + this._name + "...");
var startTime = Date.now();
var midTime = startTime;
diff --git a/src/parser.js b/src/parser.js
index 7f25d2e5..2d61b1b3 100644
--- a/src/parser.js
+++ b/src/parser.js
@@ -199,7 +199,8 @@ function parseParamTokens(params) {
var segment = params.slice(0, i);
//print(' seg ' + JSON.stringify(segment));
params = params.slice(i+1);
- if (segment[1].text === 'getelementptr' || segment[1].text === 'noalias') {
+ segment = cleanSegment(segment);
+ if (segment[1].text === 'getelementptr') {
ret.push(parseGetElementPtr(segment));
} else if (segment[1].text === 'bitcast') {
ret.push(parseBitcast(segment));
@@ -224,12 +225,18 @@ function parseParamTokens(params) {
return ret;
}
-function parseGetElementPtr(segment) {
- segment = segment.slice(0);
+function cleanSegment(segment) {
while (['noalias', 'sret', 'nocapture', 'nest', 'zeroext', 'signext'].indexOf(segment[1].text) != -1) {
segment.splice(1, 1);
}
+ return segment;
+}
+
+function parseGetElementPtr(segment) {
+ segment = segment.slice(0);
+ segment = cleanSegment(segment);
assertTrue(['inreg', 'byval'].indexOf(segment[1].text) == -1);
+ //dprint('// zz: ' + dump(segment) + '\n\n\n');
var ret = {
intertype: 'getelementptr',
type: segment[0],
diff --git a/src/utility.js b/src/utility.js
index 94a2132a..bcff0b65 100644
--- a/src/utility.js
+++ b/src/utility.js
@@ -1,7 +1,21 @@
function dump(item) {
+ function lineify(text) {
+ var ret = '';
+ while (text.length > 0) {
+ if (text.length < 80) {
+ ret += text;
+ return ret;
+ }
+ var subText = text.substring(60, 80);
+ var index = 61+Math.max(subText.indexOf(','), subText.indexOf(']'), subText.indexOf('}'), 21);
+ ret += text.substr(0,index) + '\n';
+ text = '// ' + text.substr(index);
+ }
+ }
+
try {
- return JSON.stringify(item).substr(0,200);
+ return lineify(JSON.stringify(item));
} catch(e) {
var ret = [];
for (var i in item) {
@@ -12,7 +26,7 @@ function dump(item) {
ret.push(i + ': [?]');
}
}
- return ret.join(', ').substr(0,200);
+ return lineify(ret.join(', '));
}
}