aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-11-27 10:28:03 -0800
committerAlon Zakai <alonzakai@gmail.com>2012-11-27 10:28:03 -0800
commitd4d0f6d9fbfca9c70e183a49a195dc13c0d9236e (patch)
tree7c3f48d588fb73b5735e95a7cfdef736b9ee8b03
parent9f34b23ce4e6a76ae94741ab4f81094f407cb0da (diff)
fix assignment to indexed global
-rw-r--r--src/jsifier.js2
-rw-r--r--src/parseTools.js4
2 files changed, 3 insertions, 3 deletions
diff --git a/src/jsifier.js b/src/jsifier.js
index e218df05..aaf2d7d9 100644
--- a/src/jsifier.js
+++ b/src/jsifier.js
@@ -819,7 +819,7 @@ function JSify(data, functionsOnly, givenFunctions) {
break;
case VAR_EMULATED:
if (item.pointer.intertype == 'value') {
- return makeSetValue(item.ident, 0, value, item.valueType, 0, 0, item.align) + ';';
+ return makeSetValue(makeGlobalUse(item.ident), 0, value, item.valueType, 0, 0, item.align) + ';';
} else {
return makeSetValue(0, finalizeLLVMParameter(item.pointer), value, item.valueType, 0, 0, item.align) + ';';
}
diff --git a/src/parseTools.js b/src/parseTools.js
index 64fd0f91..4c91a20c 100644
--- a/src/parseTools.js
+++ b/src/parseTools.js
@@ -357,12 +357,12 @@ function hasVarArgs(params) {
}
function makeGlobalDef(ident) {
- if (!NAMED_GLOBALS && !Variables.globals[ident].alias) return '';
+ if (!NAMED_GLOBALS && ident in Variables.globals && !Variables.globals[ident].alias) return '';
return 'var ' + ident + ';'; // TODO: add option for namespacing or offsetting to allow reducing the number of globals
}
function makeGlobalUse(ident) {
- if (!NAMED_GLOBALS && !Variables.globals[ident].alias) {
+ if (!NAMED_GLOBALS && ident in Variables.globals && !Variables.globals[ident].alias) {
if (!(ident in Variables.indexedGlobals)) {
Variables.indexedGlobals[ident] = Variables.nextIndexedOffset;
Variables.nextIndexedOffset += Runtime.alignMemory(calcAllocatedSize(Variables.globals[ident].type));