diff --git a/emscripten.py b/emscripten.py index 33a0ec408d1e2..b80b802c8221f 100644 --- a/emscripten.py +++ b/emscripten.py @@ -2225,10 +2225,11 @@ def emscript_wasm_backend(infile, outfile, memfile, compiler_engine, asm_consts, asm_const_funcs = create_asm_consts_wasm(forwarded_json, metadata) em_js_funcs = create_em_js(forwarded_json, metadata) + asm_const_pairs = ['%s: %s' % (key, value) for key, value in asm_consts] + asm_const_map = 'var ASM_CONSTS = {\n ' + ', \n '.join(asm_const_pairs) + '\n};\n' pre = pre.replace( '// === Body ===', - ('// === Body ===\n\nvar ASM_CONSTS = [' + - ',\n '.join(asm_consts) + '];\n' + + ('// === Body ===\n\n' + asm_const_map + asstr('\n'.join(asm_const_funcs)) + '\n'.join(em_js_funcs) + '\n')) pre = apply_table(pre) @@ -2342,7 +2343,7 @@ def debug_copy(src, dst): def create_asm_consts_wasm(forwarded_json, metadata): - asm_consts = [0] * len(metadata['asmConsts']) + asm_consts = {} all_sigs = [] for k, v in metadata['asmConsts'].items(): const, sigs, call_types = v @@ -2417,6 +2418,8 @@ def create_asm_consts_wasm(forwarded_json, metadata): var args = readAsmConstArgs(sigPtr, argbuf); return ASM_CONSTS[code].apply(null, args); }''' % (const_name, preamble)) + asm_consts = [(key, value) for key, value in asm_consts.items()] + asm_consts.sort() return asm_consts, asm_const_funcs diff --git a/tests/test_other.py b/tests/test_other.py index e625880b09fc7..2d6b3b09b9e08 100644 --- a/tests/test_other.py +++ b/tests/test_other.py @@ -8684,8 +8684,8 @@ def test_js_optimizer_parse_error(self): var ASM_CONSTS = [function() { var x = !<->5.; }]; ^ ''', ''' -var ASM_CONSTS = [function() {var x = !<->5.;}]; - ^ + 0: function() {var x = !<->5.;} + ^ '''), stderr) def test_EM_ASM_ES6(self):