Skip to content

Commit

Permalink
forward unindexable globals to asm
Browse files Browse the repository at this point in the history
  • Loading branch information
kripken committed Dec 31, 2012
1 parent 387b4f7 commit 2f233e3
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 2 deletions.
2 changes: 1 addition & 1 deletion emscripten.py
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ def make_table(sig, raw):
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])
Expand Down
5 changes: 4 additions & 1 deletion src/parseTools.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 2f233e3

Please sign in to comment.