diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/analyzer.js | 4 | ||||
-rw-r--r-- | src/intertyper.js | 28 | ||||
-rw-r--r-- | src/jsifier.js | 22 | ||||
-rw-r--r-- | src/parseTools.js | 6 |
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); |