File tree Expand file tree Collapse file tree 2 files changed +14
-3
lines changed
Expand file tree Collapse file tree 2 files changed +14
-3
lines changed Original file line number Diff line number Diff line change 66
77const Generator = require ( "../Generator" ) ;
88const { RawSource } = require ( "webpack-sources" ) ;
9+ const WebAssemblyParser = require ( "./WebAssemblyParser" ) ;
910
1011const { editWithAST, addWithAST } = require ( "@webassemblyjs/wasm-edit" ) ;
1112const t = require ( "@webassemblyjs/ast" ) ;
@@ -243,7 +244,7 @@ const addInitFunction = ({
243244
244245class WebAssemblyGenerator extends Generator {
245246 generate ( module ) {
246- const ast = module . _ast ;
247+ const ast = WebAssemblyParser . getAst ( module ) ;
247248 const bin = module . originalSource ( ) . source ( ) ;
248249
249250 const importedGlobals = getImportedGlobals ( ast ) ;
Original file line number Diff line number Diff line change @@ -10,6 +10,8 @@ const { decode } = require("@webassemblyjs/wasm-parser");
1010const { Tapable } = require ( "tapable" ) ;
1111const WebAssemblyImportDependency = require ( "../dependencies/WebAssemblyImportDependency" ) ;
1212
13+ /** @typedef {import("../Module") } Module */
14+
1315/**
1416 * @param {t.ModuleImport } n the import
1517 * @returns {boolean } true, if a memory was imported
@@ -27,20 +29,30 @@ const decoderOpts = {
2729 ignoreDataSection : true
2830} ;
2931
32+ /** @type {WeakMap<Module, TODO> } */
33+ const astStore = new WeakMap ( ) ;
34+
3035class WebAssemblyParser extends Tapable {
3136 constructor ( options ) {
3237 super ( ) ;
3338 this . hooks = { } ;
3439 this . options = options ;
3540 }
3641
42+ static getAst ( module ) {
43+ return astStore . get ( module ) ;
44+ }
45+
3746 parse ( binary , state ) {
3847 // flag it as ESM
3948 state . module . buildMeta . exportsType = "namespace" ;
4049
4150 // parse it
4251 const ast = decode ( binary , decoderOpts ) ;
4352
53+ // cache it to be available for generators
54+ astStore . set ( state . module , ast ) ;
55+
4456 // extract imports and exports
4557 const exports = ( state . module . buildMeta . providedExports = [ ] ) ;
4658 t . traverse ( ast , {
@@ -70,8 +82,6 @@ class WebAssemblyParser extends Tapable {
7082 }
7183 } ) ;
7284
73- state . module . _ast = ast ;
74-
7585 return state ;
7686 }
7787}
You can’t perform that action at this time.
0 commit comments