Skip to content

Commit 2f233e3

Browse files
committed
forward unindexable globals to asm
1 parent 387b4f7 commit 2f233e3

2 files changed

Lines changed: 5 additions & 2 deletions

File tree

emscripten.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ def make_table(sig, raw):
345345
except:
346346
pass
347347
# If no named globals, only need externals
348-
global_vars = map(lambda g: g['name'], filter(lambda g: settings['NAMED_GLOBALS'] or g['external'], forwarded_json['Variables']['globals'].values()))
348+
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()))
349349
global_funcs = ['_' + x for x in forwarded_json['Functions']['libraryFunctions'].keys()]
350350
asm_global_funcs = ''.join([' var ' + g + '=env.' + g + ';\n' for g in basic_funcs + global_funcs])
351351
asm_global_vars = ''.join([' var ' + g + '=env.' + g + '|0;\n' for g in basic_vars + global_vars])

src/parseTools.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,10 @@ var UNINDEXABLE_GLOBALS = set(
399399

400400
function isIndexableGlobal(ident) {
401401
if (!(ident in Variables.globals)) return false;
402-
if (ident in UNINDEXABLE_GLOBALS) return false;
402+
if (ident in UNINDEXABLE_GLOBALS) {
403+
Variables.globals[ident].unIndexable = true;
404+
return false;
405+
}
403406
var data = Variables.globals[ident];
404407
// in asm.js, externals are just globals
405408
return !data.alias && (ASM_JS || !data.external);

0 commit comments

Comments
 (0)