diff options
-rwxr-xr-x | emscripten.py | 2 | ||||
-rw-r--r-- | src/parseTools.js | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/emscripten.py b/emscripten.py index b9f27fe4..b4d7a61b 100755 --- a/emscripten.py +++ b/emscripten.py @@ -345,7 +345,7 @@ var i64Math_modulo = function(a, b, c, d, e) { i64Math.modulo(a, b, c, d, e) }; except: pass # If no named globals, only need externals - global_vars = map(lambda g: g['name'], filter(lambda g: settings['NAMED_GLOBALS'] or g['external'], forwarded_json['Variables']['globals'].values())) + global_vars = map(lambda g: g['name'], filter(lambda g: settings['NAMED_GLOBALS'] or g['external'] or g.get('unIndexable'), forwarded_json['Variables']['globals'].values())) global_funcs = ['_' + x for x in forwarded_json['Functions']['libraryFunctions'].keys()] asm_global_funcs = ''.join([' var ' + g + '=env.' + g + ';\n' for g in basic_funcs + global_funcs]) asm_global_vars = ''.join([' var ' + g + '=env.' + g + '|0;\n' for g in basic_vars + global_vars]) diff --git a/src/parseTools.js b/src/parseTools.js index 7b29d35e..a4a5cbac 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -399,7 +399,10 @@ var UNINDEXABLE_GLOBALS = set( function isIndexableGlobal(ident) { if (!(ident in Variables.globals)) return false; - if (ident in UNINDEXABLE_GLOBALS) return false; + if (ident in UNINDEXABLE_GLOBALS) { + Variables.globals[ident].unIndexable = true; + return false; + } var data = Variables.globals[ident]; // in asm.js, externals are just globals return !data.alias && (ASM_JS || !data.external); |