.
diff --git a/emscripten.py b/emscripten.py index baa836c..dd94f48 100644 --- a/emscripten.py +++ b/emscripten.py
@@ -119,12 +119,13 @@ all_exports = metadata['exports'] + list(metadata['namedGlobals'].keys()) settings.WASM_EXPORTS = [asmjs_mangle(x) for x in all_exports] - # start with the MVP features, and add any detected features. - settings.BINARYEN_FEATURES = ['--mvp-features'] + metadata['features'] - if settings.USE_PTHREADS: - assert '--enable-threads' in settings.BINARYEN_FEATURES - if settings.MEMORY64: - assert '--enable-memory64' in settings.BINARYEN_FEATURES + if 'features' in metadata: + # start with the MVP features, and add any detected features. + settings.BINARYEN_FEATURES = ['--mvp-features'] + metadata['features'] + if settings.USE_PTHREADS: + assert '--enable-threads' in settings.BINARYEN_FEATURES + if settings.MEMORY64: + assert '--enable-memory64' in settings.BINARYEN_FEATURES if settings.RELOCATABLE and settings.INITIAL_TABLE == -1: # When building relocatable output (e.g. MAIN_MODULE) the reported table @@ -385,6 +386,7 @@ imports = module.imports() exports = module.exports() globals_ = module.globals() + num_global_imports = len([i for i in imports if i.kind == webassembly.ExternType.GLOBAL]) metadata = { 'exports': [], @@ -399,9 +401,11 @@ for export in exports: if export.name == '__start_em_asm': - em_asm_start = globals_[export.index] + assert export.index > num_global_imports + em_asm_start = globals_[export.index - num_global_imports] elif export.name == '__stop_em_asm': - em_asm_stop = globals_[export.index] + assert export.index > num_global_imports + em_asm_stop = globals_[export.index - num_global_imports] elif export.kind in (webassembly.ExternType.FUNC, webassembly.ExternType.GLOBAL): metadata['exports'].append(export.name) @@ -428,7 +432,6 @@ metadata['globalImports'] = [i.field for i in imports if i.kind == webassembly.ExternType.GLOBAL] metadata['namedGlobals'] = {} - metadata['features'] = [] metadata['mainReadsParams'] = True tables = [i for i in imports if i.kind == webassembly.ExternType.TABLE] @@ -496,7 +499,6 @@ if settings.DEBUG_LEVEL >= 3: args.append('--dwarf') - print(modify_wasm) if modify_wasm or settings.GENERATE_SOURCE_MAP or memfile: stdout = building.run_binaryen_command('wasm-emscripten-finalize', infile=infile,
diff --git a/tests/test_core.py b/tests/test_core.py index 11a1d60..9ebbe04 100644 --- a/tests/test_core.py +++ b/tests/test_core.py
@@ -63,9 +63,11 @@ def also_with_wasm_bigint(f): def decorated(self): - self.set_setting('WASM_BIGINT', 0) - f(self) + print('without WASM_BIGINT') + self.clear_setting('WASM_BIGINT') + #f(self) if self.is_wasm(): + print('with WASM_BIGINT') self.set_setting('WASM_BIGINT') self.node_args.append('--experimental-wasm-bigint') self.js_engines = [config.NODE_JS]
diff --git a/tools/webassembly.py b/tools/webassembly.py index 850dea8..60fc4c7 100644 --- a/tools/webassembly.py +++ b/tools/webassembly.py
@@ -141,6 +141,7 @@ class OpCode(IntEnum): + GLOBAL_GET = 0x23 I32_CONST = 0x41 I64_CONST = 0x42 END = 0x0b