aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/analyzer.js4
-rw-r--r--src/intertyper.js28
-rw-r--r--src/jsifier.js22
-rw-r--r--src/parseTools.js6
4 files changed, 30 insertions, 30 deletions
diff --git a/src/analyzer.js b/src/analyzer.js
index 92aa0a8a..44e62ad2 100644
--- a/src/analyzer.js
+++ b/src/analyzer.js
@@ -119,7 +119,7 @@ function analyzer(data) {
walkJSON(data, function(item) {
if (!item) return;
if (item.type) {
- addType(!item.type.text ? item.type : item.type.text, data);
+ addType(!item.type ? item.type : item.type, data);
}
if (item.type2) {
addType(!item.type2.text ? item.type2 : item.type2.text, data);
@@ -213,7 +213,7 @@ function analyzer(data) {
if (item && item.intertype == 'assign' && ['alloca', 'load', 'call', 'bitcast', 'mathop', 'getelementptr', 'fastgetelementptrload'].indexOf(item.value.intertype) != -1) {
func.variables[item.ident] = {
ident: item.ident,
- type: item.value.type.text,
+ type: item.value.type,
origin: item.value.intertype,
uses: parseInt(item.value.tokens.slice(-1)[0].item[0].tokens[0].text.split('=')[1]),
};
diff --git a/src/intertyper.js b/src/intertyper.js
index 88099202..f05018e3 100644
--- a/src/intertyper.js
+++ b/src/intertyper.js
@@ -262,7 +262,7 @@ function intertyper(data) {
__result__: true,
intertype: 'globalVariable',
ident: ident,
- type: item.tokens[2],
+ type: item.tokens[2].text,
lineNum: item.lineNum,
};
if (ident == '@llvm.global_ctors') {
@@ -345,8 +345,8 @@ function intertyper(data) {
substrate.addZyme('Load', {
processItem: function(item) {
if (item.tokens[0].text == 'volatile') item.tokens.shift(0);
- item.pointerType = item.tokens[1];
- item.type = { text: removePointing(item.pointerType.text) };
+ item.pointerType = item.tokens[1].text;
+ item.type = removePointing(item.pointerType);
if (item.tokens[2].text == 'getelementptr') {
var last = getTokenIndexByText(item.tokens, ';');
var data = parseLLVMFunctionCall(item.tokens.slice(1, last));
@@ -359,7 +359,7 @@ function intertyper(data) {
item.intertype = 'load';
if (item.tokens[2].text == 'bitcast') {
item.pointer = item.tokens[3].item[0].tokens[1];
- item.originalType = item.tokens[3].item[0].tokens[0];
+ item.originalType = item.tokens[3].item[0].tokens[0].text;
} else {
item.pointer = item.tokens[2];
}
@@ -383,7 +383,7 @@ function intertyper(data) {
substrate.addZyme('Bitcast', {
processItem: function(item) {
item.intertype = 'bitcast';
- item.type = item.tokens[1];
+ item.type = item.tokens[1].text;
item.ident = item.tokens[2].text;
item.type2 = item.tokens[4];
this.forwardItem(item, 'Reintegrator');
@@ -413,7 +413,7 @@ function intertyper(data) {
if (['signext', 'zeroext'].indexOf(item.tokens[1].text) != -1) {
item.tokens.splice(1, 1);
}
- item.type = item.tokens[1];
+ item.type = item.tokens[1].text;
item.functionType = '';
while (['@', '%'].indexOf(item.tokens[2].text[0]) == -1) {
item.functionType += item.tokens[2].text;
@@ -444,7 +444,7 @@ function intertyper(data) {
substrate.addZyme('Invoke', {
processItem: function(item) {
item.intertype = 'invoke';
- item.type = item.tokens[1];
+ item.type = item.tokens[1].text;
item.functionType = '';
while (['@', '%'].indexOf(item.tokens[2].text[0]) == -1) {
item.functionType += item.tokens[2].text;
@@ -468,9 +468,9 @@ function intertyper(data) {
substrate.addZyme('Alloca', {
processItem: function(item) {
item.intertype = 'alloca';
- item.allocatedType = item.tokens[1];
- item.type = { text: addPointing(item.tokens[1].text) }; // type of pointer we will get
- item.type2 = { text: item.tokens[1].text }; // value we will create, and get a pointer to
+ item.allocatedType = item.tokens[1].text;
+ item.type = addPointing(item.tokens[1].text); // type of pointer we will get
+ item.type2 = item.tokens[1].text; // value we will create, and get a pointer to
this.forwardItem(item, 'Reintegrator');
},
});
@@ -478,7 +478,7 @@ function intertyper(data) {
substrate.addZyme('Phi', {
processItem: function(item) {
item.intertype = 'phi';
- item.type = { text: item.tokens[1].text }
+ item.type = item.tokens[1].text
item.label1 = item.tokens[2].item[0].tokens[2].text;
item.value1 = item.tokens[2].item[0].tokens[0].text;
item.label2 = item.tokens[4].item[0].tokens[2].text;
@@ -503,7 +503,7 @@ function intertyper(data) {
item['param'+i] = parseLLVMSegment(segments[i-1]);
}
}
- item.type = { text: item.param1.type }; // TODO: unobject this
+ item.type = item.param1.type;
this.forwardItem(item, 'Reintegrator');
},
});
@@ -515,13 +515,13 @@ function intertyper(data) {
var ret = {
__result__: true,
intertype: 'store',
- valueType: item.tokens[1],
+ valueType: item.tokens[1].text,
value: parseLLVMSegment(segments[0]), // TODO: Make everything use this method, with finalizeLLVMParameter too
pointer: parseLLVMSegment(segments[1]),
lineNum: item.lineNum,
};
ret.ident = ret.pointer.ident;
- ret.pointerType = { text: ret.pointer.type }; // TODO: unobject this
+ ret.pointerType = ret.pointer.type;
return [ret];
},
});
diff --git a/src/jsifier.js b/src/jsifier.js
index 9baf247d..f32e60c8 100644
--- a/src/jsifier.js
+++ b/src/jsifier.js
@@ -162,11 +162,11 @@ function JSify(data) {
item.JS = '\n__globalConstructor__ = function() {\n' +
item.ctors.map(function(ctor) { return ' ' + toNiceIdent(ctor) + '();' }).join('\n') +
'\n}\n';
- } else if (item.type.text == 'external') {
+ } else if (item.type == 'external') {
item.JS = 'var ' + item.ident + ' = ' + '0; /* external value? */';
} else {
// GETTER - lazy loading, fixes issues with ordering.
- item.JS = 'this.__defineGetter__("' + item.ident + '", function() { delete ' + item.ident + '; ' + item.ident + ' = ' + parseConst(item.value, item.type.text) + '; return ' + item.ident + ' });';
+ item.JS = 'this.__defineGetter__("' + item.ident + '", function() { delete ' + item.ident + '; ' + item.ident + ' = ' + parseConst(item.value, item.type) + '; return ' + item.ident + ' });';
}
item.__result__ = true;
return [item];
@@ -383,7 +383,7 @@ function JSify(data) {
// 'var', since this is SSA - first assignment is the only assignment, and where it is defined
item.JS = (item.overrideSSA ? '' : 'var ') + toNiceIdent(item.ident);
- var type = item.value.type.text;
+ var type = item.value.type;
var value = parseNumerical(item.value.JS);
//print("zz var: " + item.JS);
var impl = getVarData(item.funcData, item.ident);
@@ -420,8 +420,8 @@ function JSify(data) {
}
makeFuncLineZyme('store', function(item) {
var value = finalizeLLVMParameter(item.value);
- if (pointingLevels(item.pointerType.text) == 1) {
- value = parseNumerical(value, removePointing(item.pointerType.text));
+ if (pointingLevels(item.pointerType) == 1) {
+ value = parseNumerical(value, removePointing(item.pointerType));
}
var impl = VAR_EMULATED;
if (item.pointer.intertype == 'value') {
@@ -556,8 +556,8 @@ function JSify(data) {
});
makeFuncLineZyme('alloca', function(item) {
dprint('alloca', dump(item));
- if (pointingLevels(item.allocatedType.text) == 0 && isStructType(item.allocatedType.text)) {
- return RuntimeGenerator.stackAlloc(makeEmptyStruct(item.allocatedType.text).length);
+ if (pointingLevels(item.allocatedType) == 0 && isStructType(item.allocatedType)) {
+ return RuntimeGenerator.stackAlloc(makeEmptyStruct(item.allocatedType).length);
} else {
return RuntimeGenerator.stackAlloc(1);
}
@@ -584,8 +584,8 @@ function JSify(data) {
}
if (GUARD_SIGNS) {
if (op[0] == 'u' || (variant && variant[0] == 'u')) {
- ident1 = makeUnSign(ident1, type.text);
- ident2 = makeUnSign(ident2, type.text);
+ ident1 = makeUnSign(ident1, type);
+ ident2 = makeUnSign(ident2, type);
}
}
switch (op) {
@@ -630,7 +630,7 @@ function JSify(data) {
case 'zext': case 'fpext': case 'trunc': case 'sext': case 'fptrunc': return ident1;
case 'select': return '(' + ident1 + ' ? ' + ident2 + ' : ' + ident3 + ')';
case 'ptrtoint': {
- if (type.text != 'i8*') print('// XXX Warning: Risky ptrtoint operation on line ' + lineNum);
+ if (type != 'i8*') print('// XXX Warning: Risky ptrtoint operation on line ' + lineNum);
return ident1;
}
case 'inttoptr': {
@@ -683,7 +683,7 @@ function JSify(data) {
function getGetElementPtrIndexes(item) {
var ident = item.ident;
- var type = item.params[0].type.text; // param 0 == type
+ var type = item.params[0].type; // param 0 == type
// struct pointer, struct*, and getting a ptr to an element in that struct. Param 1 is which struct, then we have items in that
// struct, and possibly further substructures, all embedded
// can also be to 'blocks': [8 x i32]*, not just structs
diff --git a/src/parseTools.js b/src/parseTools.js
index e08f3d41..c4dae65e 100644
--- a/src/parseTools.js
+++ b/src/parseTools.js
@@ -244,7 +244,7 @@ function parseParamTokens(params) {
// no name... the name is implied to be %{the index}
ret.push({
intertype: 'value',
- type: segment[0],
+ type: segment[0].text,
value: null,
ident: '_' + absIndex,
});
@@ -261,7 +261,7 @@ function parseParamTokens(params) {
}
ret.push({
intertype: 'value',
- type: segment[0],
+ type: segment[0].text,
value: segment[1],
ident: parseNumerical(segment[1].text),
});
@@ -319,7 +319,7 @@ function parseLLVMFunctionCall(segment) {
assert(segment[1].text in PARSABLE_LLVM_FUNCTIONS);
var ret = {
intertype: segment[1].text,
- type: segment[0],
+ type: segment[0].text,
params: parseParamTokens(segment[2].item[0].tokens),
};
ret.ident = toNiceIdent(ret.params[0].ident);