diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-11-27 10:28:03 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-11-27 10:28:03 -0800 |
commit | d4d0f6d9fbfca9c70e183a49a195dc13c0d9236e (patch) | |
tree | 7c3f48d588fb73b5735e95a7cfdef736b9ee8b03 | |
parent | 9f34b23ce4e6a76ae94741ab4f81094f407cb0da (diff) |
fix assignment to indexed global
-rw-r--r-- | src/jsifier.js | 2 | ||||
-rw-r--r-- | src/parseTools.js | 4 |
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)); |