blob: 8be0d43a379f9ac5a9d6b22be8f92fedeba0bd37 [file]
// WASM_ESM_INTEGRATION: the wasm<->JS boundary is expressed with native ES
// import/export syntax rather than the `wasmImports` object and
// `wasmExports['x']` member uses, and emitDCEGraph must build the same graph
// from it.
// JS functions implementing wasm imports.
function fd_write_impl() {
}
function unused_import_impl() {
}
// A JS function only reachable from a wasm import edge.
function helper() {
}
function fd_close_impl() {
helper();
}
// wasm exports received as ES imports. `memory` is imported twice (plain and
// aliased) and must map to a single export node.
import {
memory,
__indirect_function_table,
main as _main,
used_export as _used_export,
unused_export as _unused_export,
memory as wasmMemory,
} from './a.out.wasm';
// JS functions exported to the wasm module (the wasm imports).
export {
fd_write_impl as fd_write,
fd_close_impl as fd_close,
unused_import_impl as unused_import,
};
// Re-export of a wasm export to the JS entry point: a top-level use that should
// root the underlying `main` export, not be treated as a wasm import.
export { _main };
// MODULARIZE=instance runtime exports. These are plain JS bindings, not wasm
// import edges, and must be left untouched (bare `export {..}` form).
var HEAP32;
var baz = () => {};
export { HEAP32, baz };
// Top-level uses: root the memory export (via the alias) and one wasm export.
wasmMemory.buffer;
_used_export();