diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-12-31 14:48:33 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-12-31 14:48:33 -0800 |
commit | 2f233e3ca428099f520bf2b09e199d231887eb33 (patch) | |
tree | 77bc371a4fb45b5bbdf1a1240efb6a286ff499ef | |
parent | 387b4f7f37cd6280148f86670ce1b72a39eaf6ca (diff) |
forward unindexable globals to asm
-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); |