aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/jsifier.js10
-rw-r--r--src/parseTools.js12
2 files changed, 12 insertions, 10 deletions
diff --git a/src/jsifier.js b/src/jsifier.js
index 4af1223a..3f7698ef 100644
--- a/src/jsifier.js
+++ b/src/jsifier.js
@@ -528,7 +528,7 @@ function JSify(data, functionsOnly, givenFunctions, givenGlobalVariables) {
});
}
makeFuncLineActor('store', function(item) {
- var value = indexizeFunctions(finalizeLLVMParameter(item.value));
+ var value = finalizeLLVMParameter(item.value);
if (pointingLevels(item.pointerType) == 1) {
value = parseNumerical(value, removePointing(item.pointerType));
}
@@ -544,7 +544,7 @@ function JSify(data, functionsOnly, givenFunctions, givenGlobalVariables) {
if (item.pointer.intertype == 'value') {
return makeSetValue(item.ident, 0, value, item.valueType);
} else {
- return makeSetValue(0, indexizeFunctions(finalizeLLVMParameter(item.pointer)), value, item.valueType);
+ return makeSetValue(0, finalizeLLVMParameter(item.pointer), value, item.valueType);
}
break;
default:
@@ -644,7 +644,7 @@ function JSify(data, functionsOnly, givenFunctions, givenGlobalVariables) {
}
ret += 'return';
if (item.value) {
- ret += ' ' + indexizeFunctions(finalizeLLVMParameter(item.value));
+ ret += ' ' + finalizeLLVMParameter(item.value);
}
return ret + ';';
});
@@ -688,10 +688,10 @@ function JSify(data, functionsOnly, givenFunctions, givenGlobalVariables) {
var params = item.params;
function makeOne(i) {
if (i === params.length-1) {
- return indexizeFunctions(finalizeLLVMParameter(params[i].value));
+ return finalizeLLVMParameter(params[i].value);
}
return '__lastLabel__ == ' + getLabelId(params[i].label) + ' ? ' +
- indexizeFunctions(finalizeLLVMParameter(params[i].value)) + ' : (' + makeOne(i+1) + ')';
+ finalizeLLVMParameter(params[i].value) + ' : (' + makeOne(i+1) + ')';
}
return makeOne(0);
});
diff --git a/src/parseTools.js b/src/parseTools.js
index 39537ab2..530bf54b 100644
--- a/src/parseTools.js
+++ b/src/parseTools.js
@@ -1040,19 +1040,21 @@ function handleOverflow(text, bits) {
// From parseLLVMSegment
function finalizeLLVMParameter(param) {
+ var ret;
if (isNumber(param)) {
return param;
} else if (typeof param === 'string') {
- return toNiceIdentCarefully(param);
+ ret = toNiceIdentCarefully(param);
} else if (param.intertype in PARSABLE_LLVM_FUNCTIONS) {
- return finalizeLLVMFunctionCall(param);
+ ret = finalizeLLVMFunctionCall(param);
} else if (param.intertype == 'value') {
- return parseNumerical(param.ident);
+ ret = parseNumerical(param.ident);
} else if (param.intertype == 'structvalue') {
- return param.values.map(finalizeLLVMParameter);
+ ret = param.values.map(finalizeLLVMParameter);
} else {
throw 'invalid llvm parameter: ' + param.intertype;
}
+ return indexizeFunctions(ret);
}
function makeSignOp(value, type, op) {
@@ -1104,7 +1106,7 @@ function isSignedOp(op, variant) {
function processMathop(item) { with(item) {
for (var i = 1; i <= 4; i++) {
if (item['param'+i]) {
- item['ident'+i] = indexizeFunctions(finalizeLLVMParameter(item['param'+i]));
+ item['ident'+i] = finalizeLLVMParameter(item['param'+i]);
if (!isNumber(item['ident'+i])) {
item['ident'+i] = '(' + item['ident'+i] + ')'; // we may have nested expressions. So enforce the order of operations we want
}