From 85b5ee33e2686282428dd1a3afef3f74614349c2 Mon Sep 17 00:00:00 2001 From: Sven SAULEAU Date: Wed, 9 May 2018 17:40:02 +0200 Subject: [PATCH 1/9] chore: bump webassemblyjs 1.4.0 --- package.json | 6 +- yarn.lock | 178 +++++++++++++++++++++++++-------------------------- 2 files changed, 92 insertions(+), 92 deletions(-) diff --git a/package.json b/package.json index 6b54e031949..7abecaced4c 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,9 @@ "description": "Packs CommonJs/AMD modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.", "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.3.2", - "@webassemblyjs/wasm-edit": "1.3.2", - "@webassemblyjs/wasm-parser": "1.3.2", + "@webassemblyjs/ast": "1.4.0", + "@webassemblyjs/wasm-edit": "1.4.0", + "@webassemblyjs/wasm-parser": "1.4.0", "acorn": "^5.0.0", "acorn-dynamic-import": "^3.0.0", "ajv": "^6.1.0", diff --git a/yarn.lock b/yarn.lock index 011342076f5..a735bc74eab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18,115 +18,115 @@ version "1.0.2" resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.2.tgz#e13182e1b69871a422d7863e11a4a6f5b814a4bd" -"@webassemblyjs/ast@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.3.2.tgz#3312d6f81aaaa1fe74d2e1a42264899fe802828e" +"@webassemblyjs/ast@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.4.0.tgz#7c633ad9ddbb9001ce2088e729b7000587f04ad5" dependencies: - "@webassemblyjs/helper-wasm-bytecode" "1.3.2" - "@webassemblyjs/wast-parser" "1.3.2" - webassemblyjs "1.3.2" + "@webassemblyjs/helper-wasm-bytecode" "1.4.0" + "@webassemblyjs/wast-parser" "1.4.0" + webassemblyjs "1.4.0" -"@webassemblyjs/floating-point-hex-parser@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.3.2.tgz#a749e630e6b78fab70dbeac5710038fba241548d" +"@webassemblyjs/floating-point-hex-parser@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.0.tgz#1d573e193fc459b42b60626fb6d3d5a1ad988a66" -"@webassemblyjs/helper-buffer@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.3.2.tgz#c5c36f8f158145403beb9e9f7ccf70fb6dc003fa" +"@webassemblyjs/helper-buffer@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.0.tgz#c3571685a2d71ecb0afba85556bd9a3cec3eb689" -"@webassemblyjs/helper-code-frame@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.3.2.tgz#a54b59bf586f91368c8675d20750a05df95c8f3a" +"@webassemblyjs/helper-code-frame@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.0.tgz#c88b5932e312dcac1b01bd5130417820199ad161" dependencies: - "@webassemblyjs/wast-printer" "1.3.2" + "@webassemblyjs/wast-printer" "1.4.0" -"@webassemblyjs/helper-fsm@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.3.2.tgz#05e31f4ca23634a8232b4295889b38df9360bb5b" +"@webassemblyjs/helper-fsm@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.0.tgz#a9a31678fd04c8bfc6124e4e68cefd07971d2421" -"@webassemblyjs/helper-wasm-bytecode@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.3.2.tgz#487c2f0165f1b25dde622bd5fe832307cadc4e45" +"@webassemblyjs/helper-wasm-bytecode@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.0.tgz#bcc4ed104d87f7d62a2ff193f5192222fa5b42ba" -"@webassemblyjs/helper-wasm-section@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.3.2.tgz#b05ad3b21e2d94847242813ea2df6931413ddd70" +"@webassemblyjs/helper-wasm-section@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.0.tgz#9a46e637924312efd193a3012899e0aa4ef486aa" dependencies: - "@webassemblyjs/ast" "1.3.2" - "@webassemblyjs/helper-buffer" "1.3.2" - "@webassemblyjs/helper-wasm-bytecode" "1.3.2" - "@webassemblyjs/wasm-gen" "1.3.2" + "@webassemblyjs/ast" "1.4.0" + "@webassemblyjs/helper-buffer" "1.4.0" + "@webassemblyjs/helper-wasm-bytecode" "1.4.0" + "@webassemblyjs/wasm-gen" "1.4.0" -"@webassemblyjs/leb128@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.3.2.tgz#f0b0d7e3b711e17a8140e3475ac26292ac6f4245" +"@webassemblyjs/leb128@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.4.0.tgz#de3ab2a73df41a0b6f07ee1faffe51680f2a0cfa" dependencies: leb "^0.3.0" -"@webassemblyjs/validation@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/validation/-/validation-1.3.2.tgz#1a05dd9d7d7414d7a36d39649abf0981cead68f2" +"@webassemblyjs/validation@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/validation/-/validation-1.4.0.tgz#d09b6acb0397089a1eaaf26b7f66d522f89d224e" dependencies: - "@webassemblyjs/ast" "1.3.2" + "@webassemblyjs/ast" "1.4.0" -"@webassemblyjs/wasm-edit@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.3.2.tgz#eaf8df33b4003f88426a34cd4981c60127db0a0d" - dependencies: - "@webassemblyjs/ast" "1.3.2" - "@webassemblyjs/helper-buffer" "1.3.2" - "@webassemblyjs/helper-wasm-bytecode" "1.3.2" - "@webassemblyjs/helper-wasm-section" "1.3.2" - "@webassemblyjs/wasm-gen" "1.3.2" - "@webassemblyjs/wasm-opt" "1.3.2" - "@webassemblyjs/wasm-parser" "1.3.2" - "@webassemblyjs/wast-printer" "1.3.2" +"@webassemblyjs/wasm-edit@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.0.tgz#96703293b470bd79fb33304fd940f4c905ece2d2" + dependencies: + "@webassemblyjs/ast" "1.4.0" + "@webassemblyjs/helper-buffer" "1.4.0" + "@webassemblyjs/helper-wasm-bytecode" "1.4.0" + "@webassemblyjs/helper-wasm-section" "1.4.0" + "@webassemblyjs/wasm-gen" "1.4.0" + "@webassemblyjs/wasm-opt" "1.4.0" + "@webassemblyjs/wasm-parser" "1.4.0" + "@webassemblyjs/wast-printer" "1.4.0" debug "^3.1.0" -"@webassemblyjs/wasm-gen@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.3.2.tgz#1f7baef9dc6c162b290639ea60f4cec9a971701d" +"@webassemblyjs/wasm-gen@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.0.tgz#85824fb95c84ac3ed85313b8c81d5af3053c3bba" dependencies: - "@webassemblyjs/ast" "1.3.2" - "@webassemblyjs/helper-wasm-bytecode" "1.3.2" - "@webassemblyjs/leb128" "1.3.2" + "@webassemblyjs/ast" "1.4.0" + "@webassemblyjs/helper-wasm-bytecode" "1.4.0" + "@webassemblyjs/leb128" "1.4.0" -"@webassemblyjs/wasm-opt@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.3.2.tgz#3f72c0c59422fdc7511d77e97e5ec462dafe378f" +"@webassemblyjs/wasm-opt@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.0.tgz#b7304cae781616a4987bab2e1804c98d7e29cc1b" dependencies: - "@webassemblyjs/ast" "1.3.2" - "@webassemblyjs/helper-buffer" "1.3.2" - "@webassemblyjs/wasm-gen" "1.3.2" - "@webassemblyjs/wasm-parser" "1.3.2" + "@webassemblyjs/ast" "1.4.0" + "@webassemblyjs/helper-buffer" "1.4.0" + "@webassemblyjs/wasm-gen" "1.4.0" + "@webassemblyjs/wasm-parser" "1.4.0" -"@webassemblyjs/wasm-parser@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.3.2.tgz#351d368f4a0407afd8ac4454235bdeb2fb8a0913" +"@webassemblyjs/wasm-parser@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.0.tgz#cf98ef396ad5553196a614c11a4b2ecfd13f1e82" dependencies: - "@webassemblyjs/ast" "1.3.2" - "@webassemblyjs/helper-wasm-bytecode" "1.3.2" - "@webassemblyjs/leb128" "1.3.2" - "@webassemblyjs/wasm-parser" "1.3.2" - webassemblyjs "1.3.2" + "@webassemblyjs/ast" "1.4.0" + "@webassemblyjs/helper-wasm-bytecode" "1.4.0" + "@webassemblyjs/leb128" "1.4.0" + "@webassemblyjs/wasm-parser" "1.4.0" + webassemblyjs "1.4.0" -"@webassemblyjs/wast-parser@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.3.2.tgz#5b78bfaace0b13d38be36719931a8b22fd563a22" +"@webassemblyjs/wast-parser@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.4.0.tgz#9402dfcd67edd455785f29575ad4c9266e5c14ae" dependencies: - "@webassemblyjs/ast" "1.3.2" - "@webassemblyjs/floating-point-hex-parser" "1.3.2" - "@webassemblyjs/helper-code-frame" "1.3.2" - "@webassemblyjs/helper-fsm" "1.3.2" + "@webassemblyjs/ast" "1.4.0" + "@webassemblyjs/floating-point-hex-parser" "1.4.0" + "@webassemblyjs/helper-code-frame" "1.4.0" + "@webassemblyjs/helper-fsm" "1.4.0" long "^3.2.0" - webassemblyjs "1.3.2" + webassemblyjs "1.4.0" -"@webassemblyjs/wast-printer@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.3.2.tgz#6f3392bb9582bf7537e77704e7a2a84176305d20" +"@webassemblyjs/wast-printer@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.4.0.tgz#7223a32cde1fee681e9160ae50b1c3d8d4b50f09" dependencies: - "@webassemblyjs/ast" "1.3.2" - "@webassemblyjs/wast-parser" "1.3.2" + "@webassemblyjs/ast" "1.4.0" + "@webassemblyjs/wast-parser" "1.4.0" long "^3.2.0" abab@^1.0.4: @@ -6101,14 +6101,14 @@ watchpack@^1.5.0: graceful-fs "^4.1.2" neo-async "^2.5.0" -webassemblyjs@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/webassemblyjs/-/webassemblyjs-1.3.2.tgz#bba52db7b56fa0cc7882cb1176e8099ab4dd3e3c" +webassemblyjs@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/webassemblyjs/-/webassemblyjs-1.4.0.tgz#19473db20153c558fe0b95f143bd344df39fa83a" dependencies: - "@webassemblyjs/ast" "1.3.2" - "@webassemblyjs/validation" "1.3.2" - "@webassemblyjs/wasm-parser" "1.3.2" - "@webassemblyjs/wast-parser" "1.3.2" + "@webassemblyjs/ast" "1.4.0" + "@webassemblyjs/validation" "1.4.0" + "@webassemblyjs/wasm-parser" "1.4.0" + "@webassemblyjs/wast-parser" "1.4.0" long "^3.2.0" webidl-conversions@^4.0.1, webidl-conversions@^4.0.2: From d491fdc786238f8814ffec7919ca81326271088e Mon Sep 17 00:00:00 2001 From: Sven SAULEAU Date: Wed, 9 May 2018 17:40:38 +0200 Subject: [PATCH 2/9] feat: uses new APIs --- declarations.d.ts | 15 ++++++++++--- lib/wasm/WebAssemblyGenerator.js | 37 ++++++++++++++++++++------------ lib/wasm/WebAssemblyParser.js | 8 +++---- 3 files changed, 39 insertions(+), 21 deletions(-) diff --git a/declarations.d.ts b/declarations.d.ts index 398a8973e49..d73b4d8305a 100644 --- a/declarations.d.ts +++ b/declarations.d.ts @@ -33,19 +33,28 @@ declare module "chrome-trace-event" { declare module "@webassemblyjs/ast" { export function traverse( ast: any, - visitor: { [name: string]: (context: { node: Node }) => void } + visitor: { + ModuleImport?: (p: NodePath) => void; + ModuleExport?: (p: NodePath) => void; + Start?: (p: NodePath) => void; + } ); - export class Node { - index: number; + export class NodePath { + node: T; } + export class Node {} export class Identifier extends Node { value: string; } + export class Start extends Node { + index: Identifier; + } export class ModuleImport extends Node { module: string; descr: { type: string; valtype: string; + id: string; }; name: string; } diff --git a/lib/wasm/WebAssemblyGenerator.js b/lib/wasm/WebAssemblyGenerator.js index 852174799fb..928d90aca1b 100644 --- a/lib/wasm/WebAssemblyGenerator.js +++ b/lib/wasm/WebAssemblyGenerator.js @@ -7,7 +7,7 @@ const Generator = require("../Generator"); const { RawSource } = require("webpack-sources"); -const { edit, add } = require("@webassemblyjs/wasm-edit"); +const { editWithAST, addWithAST } = require("@webassemblyjs/wasm-edit"); const { decode } = require("@webassemblyjs/wasm-parser"); const t = require("@webassemblyjs/ast"); @@ -18,9 +18,19 @@ function compose(...fns) { } // Utility functions -const isGlobalImport = moduleImport => moduleImport.descr.type === "GlobalType"; -const isFuncImport = moduleImport => - moduleImport.descr.type === "FuncImportDescr"; + +/** + * @param {t.ModuleImport} n the import + * @returns {boolean} true, if a global was imported + */ +const isGlobalImport = n => n.descr.type === "GlobalType"; + +/** + * @param {t.ModuleImport} n the import + * @returns {boolean} true, if a func was imported + */ +const isFuncImport = n => n.descr.type === "FuncImportDescr"; + const initFuncId = t.identifier("__webpack_init__"); // TODO replace with @callback @@ -35,7 +45,7 @@ const initFuncId = t.identifier("__webpack_init__"); * @returns {ArrayBufferTransform} transform */ const removeStartFunc = state => bin => { - return edit(bin, { + return editWithAST(state.ast, bin, { Start(path) { path.remove(); } @@ -149,7 +159,7 @@ function getNextFuncIndex(ast, countImportedFunc) { const rewriteImportedGlobals = state => bin => { const newGlobals = []; - bin = edit(bin, { + bin = editWithAST(state.ast, bin, { ModuleImport(path) { if (isGlobalImport(path.node) === true) { const globalType = path.node.descr; @@ -168,7 +178,7 @@ const rewriteImportedGlobals = state => bin => { }); // Add global declaration instructions - return add(bin, newGlobals); + return addWithAST(state.ast, bin, newGlobals); }; /** @@ -177,17 +187,17 @@ const rewriteImportedGlobals = state => bin => { * The init function fills the globals given input arguments. * * @param {Object} state transformation state + * @param {Object} state.ast - Module's ast * @param {t.IndexLiteral} state.startAtFuncIndex index of the start function * @param {t.ModuleImport[]} state.importedGlobals list of imported globals - * @param {TODO} state.funcSectionMetadata ?? * @param {t.IndexLiteral} state.nextFuncIndex index of the next function * @param {t.IndexLiteral} state.nextTypeIndex index of the next type * @returns {ArrayBufferTransform} transform */ const addInitFunction = ({ + ast, startAtFuncIndex, importedGlobals, - funcSectionMetadata, nextFuncIndex, nextTypeIndex }) => bin => { @@ -229,7 +239,7 @@ const addInitFunction = ({ // Export section const moduleExport = t.moduleExport(initFuncId.value, "Func", nextFuncIndex); - return add(bin, [func, moduleExport, funcindex, functype]); + return addWithAST(ast, bin, [func, moduleExport, funcindex, functype]); }; class WebAssemblyGenerator extends Generator { @@ -244,20 +254,19 @@ class WebAssemblyGenerator extends Generator { }); const importedGlobals = getImportedGlobals(ast); - const funcSectionMetadata = t.getSectionMetadata(ast, "func"); const countImportedFunc = getCountImportedFunc(ast); const startAtFuncIndex = getStartFuncIndex(ast); const nextFuncIndex = getNextFuncIndex(ast, countImportedFunc); const nextTypeIndex = getNextTypeIndex(ast); const transform = compose( - removeStartFunc({}), + removeStartFunc({ ast }), - rewriteImportedGlobals({}), + rewriteImportedGlobals({ ast }), addInitFunction({ + ast, importedGlobals, - funcSectionMetadata, startAtFuncIndex, nextFuncIndex, nextTypeIndex diff --git a/lib/wasm/WebAssemblyParser.js b/lib/wasm/WebAssemblyParser.js index cbb6167e05a..e0c01ad475b 100644 --- a/lib/wasm/WebAssemblyParser.js +++ b/lib/wasm/WebAssemblyParser.js @@ -11,16 +11,16 @@ const { Tapable } = require("tapable"); const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency"); /** - * @param {t.ModuleImport} moduleImport the import + * @param {t.ModuleImport} n the import * @returns {boolean} true, if a memory was imported */ -const isMemoryImport = moduleImport => moduleImport.descr.type === "Memory"; +const isMemoryImport = n => n.descr.type === "Memory"; /** - * @param {t.ModuleImport} moduleImport the import + * @param {t.ModuleImport} n the import * @returns {boolean} true, if a table was imported */ -const isTableImport = moduleImport => moduleImport.descr.type === "Table"; +const isTableImport = n => n.descr.type === "Table"; const decoderOpts = { ignoreCodeSection: true, From d72f7c6b1caa7f43949229e101c90d5baa4ee452 Mon Sep 17 00:00:00 2001 From: Sven SAULEAU Date: Wed, 9 May 2018 17:47:05 +0200 Subject: [PATCH 3/9] feat: store wasm ast on the module --- lib/wasm/WebAssemblyGenerator.js | 9 +-------- lib/wasm/WebAssemblyParser.js | 2 ++ 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/lib/wasm/WebAssemblyGenerator.js b/lib/wasm/WebAssemblyGenerator.js index 928d90aca1b..21e5c4d222f 100644 --- a/lib/wasm/WebAssemblyGenerator.js +++ b/lib/wasm/WebAssemblyGenerator.js @@ -8,7 +8,6 @@ const Generator = require("../Generator"); const { RawSource } = require("webpack-sources"); const { editWithAST, addWithAST } = require("@webassemblyjs/wasm-edit"); -const { decode } = require("@webassemblyjs/wasm-parser"); const t = require("@webassemblyjs/ast"); function compose(...fns) { @@ -244,15 +243,9 @@ const addInitFunction = ({ class WebAssemblyGenerator extends Generator { generate(module) { + const ast = module._ast; const bin = module.originalSource().source(); - // FIXME(sven): this module is parsed twice, we could preserve the AST - // from wasm/WebAssemblyParser.js - const ast = decode(bin, { - ignoreDataSection: true, - ignoreCodeSection: true - }); - const importedGlobals = getImportedGlobals(ast); const countImportedFunc = getCountImportedFunc(ast); const startAtFuncIndex = getStartFuncIndex(ast); diff --git a/lib/wasm/WebAssemblyParser.js b/lib/wasm/WebAssemblyParser.js index e0c01ad475b..6b5580d1cdc 100644 --- a/lib/wasm/WebAssemblyParser.js +++ b/lib/wasm/WebAssemblyParser.js @@ -73,6 +73,8 @@ class WebAssemblyParser extends Tapable { } }); + state.module._ast = ast; + return state; } } From 8bdc8ad6468c7911f8cbed5aa2c15fd3c1c4bf60 Mon Sep 17 00:00:00 2001 From: Sven SAULEAU Date: Wed, 9 May 2018 17:53:25 +0200 Subject: [PATCH 4/9] refactor: remove type cast --- lib/wasm/WebAssemblyParser.js | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/lib/wasm/WebAssemblyParser.js b/lib/wasm/WebAssemblyParser.js index 6b5580d1cdc..a79ffc40008 100644 --- a/lib/wasm/WebAssemblyParser.js +++ b/lib/wasm/WebAssemblyParser.js @@ -45,27 +45,24 @@ class WebAssemblyParser extends Tapable { const exports = (state.module.buildMeta.providedExports = []); t.traverse(ast, { ModuleExport({ node }) { - const moduleExport = /** @type {t.ModuleExport} */ (node); - exports.push(moduleExport.name); + exports.push(node.name); }, ModuleImport({ node }) { - const moduleImport = /** @type {t.ModuleImport} */ (node); - let onlyDirectImport = false; - if (isMemoryImport(moduleImport) === true) { + if (isMemoryImport(node) === true) { onlyDirectImport = true; } - if (isTableImport(moduleImport) === true) { + if (isTableImport(node) === true) { onlyDirectImport = true; } const dep = new WebAssemblyImportDependency( - moduleImport.module, - moduleImport.name, - moduleImport.descr, + node.module, + node.name, + node.descr, onlyDirectImport ); From 85ef6343894ed968d557229228f009f2fcc93484 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Thu, 10 May 2018 20:19:30 +0200 Subject: [PATCH 5/9] remove _ast variable, add WeakMap --- lib/wasm/WebAssemblyGenerator.js | 3 ++- lib/wasm/WebAssemblyParser.js | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/wasm/WebAssemblyGenerator.js b/lib/wasm/WebAssemblyGenerator.js index 21e5c4d222f..d4fb1255a6d 100644 --- a/lib/wasm/WebAssemblyGenerator.js +++ b/lib/wasm/WebAssemblyGenerator.js @@ -6,6 +6,7 @@ const Generator = require("../Generator"); const { RawSource } = require("webpack-sources"); +const WebAssemblyParser = require("./WebAssemblyParser"); const { editWithAST, addWithAST } = require("@webassemblyjs/wasm-edit"); const t = require("@webassemblyjs/ast"); @@ -243,7 +244,7 @@ const addInitFunction = ({ class WebAssemblyGenerator extends Generator { generate(module) { - const ast = module._ast; + const ast = WebAssemblyParser.getAst(module); const bin = module.originalSource().source(); const importedGlobals = getImportedGlobals(ast); diff --git a/lib/wasm/WebAssemblyParser.js b/lib/wasm/WebAssemblyParser.js index a79ffc40008..0cfd037257f 100644 --- a/lib/wasm/WebAssemblyParser.js +++ b/lib/wasm/WebAssemblyParser.js @@ -10,6 +10,8 @@ const { decode } = require("@webassemblyjs/wasm-parser"); const { Tapable } = require("tapable"); const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency"); +/** @typedef {import("../Module")} Module */ + /** * @param {t.ModuleImport} n the import * @returns {boolean} true, if a memory was imported @@ -27,6 +29,9 @@ const decoderOpts = { ignoreDataSection: true }; +/** @type {WeakMap} */ +const astStore = new WeakMap(); + class WebAssemblyParser extends Tapable { constructor(options) { super(); @@ -34,6 +39,10 @@ class WebAssemblyParser extends Tapable { this.options = options; } + static getAst(module) { + return astStore.get(module); + } + parse(binary, state) { // flag it as ESM state.module.buildMeta.exportsType = "namespace"; @@ -41,6 +50,9 @@ class WebAssemblyParser extends Tapable { // parse it const ast = decode(binary, decoderOpts); + // cache it to be available for generators + astStore.set(state.module, ast); + // extract imports and exports const exports = (state.module.buildMeta.providedExports = []); t.traverse(ast, { @@ -70,8 +82,6 @@ class WebAssemblyParser extends Tapable { } }); - state.module._ast = ast; - return state; } } From 91b648074090a30d079612d8c062f52ead92c774 Mon Sep 17 00:00:00 2001 From: Sven SAULEAU Date: Thu, 10 May 2018 22:04:18 +0200 Subject: [PATCH 6/9] chore: bump webassemblyjs --- package.json | 6 +- yarn.lock | 280 ++++++++++++++++++++++++++++++++++----------------- 2 files changed, 191 insertions(+), 95 deletions(-) diff --git a/package.json b/package.json index 7abecaced4c..07a33b0f465 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,9 @@ "description": "Packs CommonJs/AMD modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.", "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.4.0", - "@webassemblyjs/wasm-edit": "1.4.0", - "@webassemblyjs/wasm-parser": "1.4.0", + "@webassemblyjs/ast": "1.4.1", + "@webassemblyjs/wasm-edit": "1.4.1", + "@webassemblyjs/wasm-parser": "1.4.1", "acorn": "^5.0.0", "acorn-dynamic-import": "^3.0.0", "ajv": "^6.1.0", diff --git a/yarn.lock b/yarn.lock index a735bc74eab..d5e28b23112 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,12 @@ # yarn lockfile v1 +"@babel/code-frame@7.0.0-beta.46", "@babel/code-frame@^7.0.0-beta.36": + version "7.0.0-beta.46" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.46.tgz#e0d002100805daab1461c0fcb32a07e304f3a4f4" + dependencies: + "@babel/highlight" "7.0.0-beta.46" + "@babel/code-frame@^7.0.0-beta.35": version "7.0.0-beta.38" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.38.tgz#c0af5930617e55e050336838e3a3670983b0b2b2" @@ -10,6 +16,41 @@ esutils "^2.0.2" js-tokens "^3.0.0" +"@babel/generator@^7.0.0-beta.40": + version "7.0.0-beta.46" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.46.tgz#6f57159bcc28bf8c3ed6b549789355cebfa3faa7" + dependencies: + "@babel/types" "7.0.0-beta.46" + jsesc "^2.5.1" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/highlight@7.0.0-beta.46": + version "7.0.0-beta.46" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.46.tgz#c553c51e65f572bdedd6eff66fc0bb563016645e" + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + +"@babel/template@^7.0.0-beta.40": + version "7.0.0-beta.46" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.46.tgz#8b23982411d5b5dbfa479437bfe414adb1411bb9" + dependencies: + "@babel/code-frame" "7.0.0-beta.46" + "@babel/types" "7.0.0-beta.46" + babylon "7.0.0-beta.46" + lodash "^4.2.0" + +"@babel/types@7.0.0-beta.46", "@babel/types@^7.0.0-beta.40": + version "7.0.0-beta.46" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.46.tgz#eb84399a699af9fcb244440cce78e1acbeb40e0c" + dependencies: + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^2.0.0" + "@types/node@^9.6.4": version "9.6.6" resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.6.tgz#439b91f9caf3983cad2eef1e11f6bedcbf9431d2" @@ -18,115 +59,144 @@ version "1.0.2" resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.2.tgz#e13182e1b69871a422d7863e11a4a6f5b814a4bd" -"@webassemblyjs/ast@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.4.0.tgz#7c633ad9ddbb9001ce2088e729b7000587f04ad5" +"@webassemblyjs/ast@1.0.0-y.7": + version "1.0.0-y.7" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.0.0-y.7.tgz#081dd61dd50030d4008aac9baf0ef5ff0cc2cab9" dependencies: - "@webassemblyjs/helper-wasm-bytecode" "1.4.0" - "@webassemblyjs/wast-parser" "1.4.0" - webassemblyjs "1.4.0" + "@webassemblyjs/wast-parser" "1.0.0-y.7" + webassembly-floating-point-hex-parser "0.1.2" + webassemblyjs "1.0.0-y.7" -"@webassemblyjs/floating-point-hex-parser@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.0.tgz#1d573e193fc459b42b60626fb6d3d5a1ad988a66" +"@webassemblyjs/ast@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.4.1.tgz#8d44bd45cb3e39c33ea0000ca7c54df4b622f0c8" + dependencies: + "@webassemblyjs/helper-wasm-bytecode" "1.4.1" + "@webassemblyjs/wast-parser" "1.4.1" + debug "^3.1.0" + webassemblyjs "1.4.1" -"@webassemblyjs/helper-buffer@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.0.tgz#c3571685a2d71ecb0afba85556bd9a3cec3eb689" +"@webassemblyjs/floating-point-hex-parser@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.1.tgz#f6aca087e185097472007961e8b8bd58e042f084" -"@webassemblyjs/helper-code-frame@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.0.tgz#c88b5932e312dcac1b01bd5130417820199ad161" +"@webassemblyjs/helper-buffer@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.1.tgz#f0c89990845f97a2e919516c1e66ceef930ae113" + +"@webassemblyjs/helper-code-frame@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.1.tgz#744fedcb8dcc61ef79a599699cb46fdaa8045d68" dependencies: - "@webassemblyjs/wast-printer" "1.4.0" + "@webassemblyjs/wast-printer" "1.4.1" -"@webassemblyjs/helper-fsm@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.0.tgz#a9a31678fd04c8bfc6124e4e68cefd07971d2421" +"@webassemblyjs/helper-fsm@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.1.tgz#b365a3afda50f472163b59c1f61bb83f60ff60b8" -"@webassemblyjs/helper-wasm-bytecode@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.0.tgz#bcc4ed104d87f7d62a2ff193f5192222fa5b42ba" +"@webassemblyjs/helper-wasm-bytecode@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.1.tgz#ef060e989f9ac8c913270f9c80298ef39a0819c1" -"@webassemblyjs/helper-wasm-section@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.0.tgz#9a46e637924312efd193a3012899e0aa4ef486aa" +"@webassemblyjs/helper-wasm-section@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.1.tgz#a76753d812c56c692ee8e8b412772e388fe22f63" dependencies: - "@webassemblyjs/ast" "1.4.0" - "@webassemblyjs/helper-buffer" "1.4.0" - "@webassemblyjs/helper-wasm-bytecode" "1.4.0" - "@webassemblyjs/wasm-gen" "1.4.0" + "@webassemblyjs/ast" "1.4.1" + "@webassemblyjs/helper-buffer" "1.4.1" + "@webassemblyjs/helper-wasm-bytecode" "1.4.1" + "@webassemblyjs/wasm-gen" "1.4.1" -"@webassemblyjs/leb128@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.4.0.tgz#de3ab2a73df41a0b6f07ee1faffe51680f2a0cfa" +"@webassemblyjs/leb128@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.4.1.tgz#c96f0f65a7b833fb19972b80bceda0d5c0a7ab9c" dependencies: leb "^0.3.0" -"@webassemblyjs/validation@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/validation/-/validation-1.4.0.tgz#d09b6acb0397089a1eaaf26b7f66d522f89d224e" +"@webassemblyjs/validation@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/validation/-/validation-1.4.1.tgz#aaabe07eee5183e5e7e6263f92108c5e68b32019" dependencies: - "@webassemblyjs/ast" "1.4.0" + "@webassemblyjs/ast" "1.4.1" -"@webassemblyjs/wasm-edit@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.0.tgz#96703293b470bd79fb33304fd940f4c905ece2d2" - dependencies: - "@webassemblyjs/ast" "1.4.0" - "@webassemblyjs/helper-buffer" "1.4.0" - "@webassemblyjs/helper-wasm-bytecode" "1.4.0" - "@webassemblyjs/helper-wasm-section" "1.4.0" - "@webassemblyjs/wasm-gen" "1.4.0" - "@webassemblyjs/wasm-opt" "1.4.0" - "@webassemblyjs/wasm-parser" "1.4.0" - "@webassemblyjs/wast-printer" "1.4.0" +"@webassemblyjs/wasm-edit@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.1.tgz#76bc68470a64c5c36309146548b566c5cb3ce2ec" + dependencies: + "@webassemblyjs/ast" "1.4.1" + "@webassemblyjs/helper-buffer" "1.4.1" + "@webassemblyjs/helper-wasm-bytecode" "1.4.1" + "@webassemblyjs/helper-wasm-section" "1.4.1" + "@webassemblyjs/wasm-gen" "1.4.1" + "@webassemblyjs/wasm-opt" "1.4.1" + "@webassemblyjs/wasm-parser" "1.4.1" + "@webassemblyjs/wast-printer" "1.4.1" debug "^3.1.0" -"@webassemblyjs/wasm-gen@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.0.tgz#85824fb95c84ac3ed85313b8c81d5af3053c3bba" +"@webassemblyjs/wasm-gen@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.1.tgz#774e5ed7d21a52cb1241a862d3fc73ceaa857ff0" dependencies: - "@webassemblyjs/ast" "1.4.0" - "@webassemblyjs/helper-wasm-bytecode" "1.4.0" - "@webassemblyjs/leb128" "1.4.0" + "@babel/generator" "^7.0.0-beta.40" + "@babel/template" "^7.0.0-beta.40" + "@babel/types" "^7.0.0-beta.40" + "@webassemblyjs/wasm-parser" "1.0.0-y.7" + commander "^2.14.1" -"@webassemblyjs/wasm-opt@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.0.tgz#b7304cae781616a4987bab2e1804c98d7e29cc1b" +"@webassemblyjs/wasm-opt@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.1.tgz#e5a30ec5bbfb4fe94e83bf616d3a99182ba76655" dependencies: - "@webassemblyjs/ast" "1.4.0" - "@webassemblyjs/helper-buffer" "1.4.0" - "@webassemblyjs/wasm-gen" "1.4.0" - "@webassemblyjs/wasm-parser" "1.4.0" + "@webassemblyjs/ast" "1.4.1" + "@webassemblyjs/helper-buffer" "1.4.1" + "@webassemblyjs/wasm-gen" "1.4.1" + "@webassemblyjs/wasm-parser" "1.4.1" -"@webassemblyjs/wasm-parser@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.0.tgz#cf98ef396ad5553196a614c11a4b2ecfd13f1e82" +"@webassemblyjs/wasm-parser@1.0.0-y.7": + version "1.0.0-y.7" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.0.0-y.7.tgz#aafd74a65330d1b39f195717d987e1cfd9e648ba" dependencies: - "@webassemblyjs/ast" "1.4.0" - "@webassemblyjs/helper-wasm-bytecode" "1.4.0" - "@webassemblyjs/leb128" "1.4.0" - "@webassemblyjs/wasm-parser" "1.4.0" - webassemblyjs "1.4.0" + "@webassemblyjs/ast" "1.0.0-y.7" + "@webassemblyjs/wasm-parser" "1.0.0-y.7" + webassemblyjs "1.0.0-y.7" -"@webassemblyjs/wast-parser@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.4.0.tgz#9402dfcd67edd455785f29575ad4c9266e5c14ae" +"@webassemblyjs/wasm-parser@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.1.tgz#363d326187d495024eacd63f8720576dded5b4c4" dependencies: - "@webassemblyjs/ast" "1.4.0" - "@webassemblyjs/floating-point-hex-parser" "1.4.0" - "@webassemblyjs/helper-code-frame" "1.4.0" - "@webassemblyjs/helper-fsm" "1.4.0" + "@webassemblyjs/ast" "1.4.1" + "@webassemblyjs/helper-wasm-bytecode" "1.4.1" + "@webassemblyjs/leb128" "1.4.1" + "@webassemblyjs/wasm-parser" "1.4.1" + webassemblyjs "1.4.1" + +"@webassemblyjs/wast-parser@1.0.0-y.7": + version "1.0.0-y.7" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.0.0-y.7.tgz#7a2965048b8478a3595a6c9e2054776277f8c3be" + dependencies: + "@babel/code-frame" "^7.0.0-beta.36" + "@webassemblyjs/ast" "1.0.0-y.7" long "^3.2.0" - webassemblyjs "1.4.0" + webassembly-floating-point-hex-parser "0.1.2" + webassemblyjs "1.0.0-y.7" -"@webassemblyjs/wast-printer@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.4.0.tgz#7223a32cde1fee681e9160ae50b1c3d8d4b50f09" +"@webassemblyjs/wast-parser@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.4.1.tgz#e2a56084b6062daa78eb3784ad6d3532f3c5ebd9" dependencies: - "@webassemblyjs/ast" "1.4.0" - "@webassemblyjs/wast-parser" "1.4.0" + "@webassemblyjs/ast" "1.4.1" + "@webassemblyjs/floating-point-hex-parser" "1.4.1" + "@webassemblyjs/helper-code-frame" "1.4.1" + "@webassemblyjs/helper-fsm" "1.4.1" + long "^3.2.0" + webassemblyjs "1.4.1" + +"@webassemblyjs/wast-printer@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.4.1.tgz#d9288e777aa40dadaca9896c9e92aa535ae4212b" + dependencies: + "@webassemblyjs/ast" "1.4.1" + "@webassemblyjs/wast-parser" "1.4.1" long "^3.2.0" abab@^1.0.4: @@ -594,6 +664,10 @@ babel-types@^6.18.0, babel-types@^6.26.0: lodash "^4.17.4" to-fast-properties "^1.0.3" +babylon@7.0.0-beta.46: + version "7.0.0-beta.46" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.46.tgz#b6ddaba81bbb130313932757ff9c195d527088b6" + babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" @@ -1127,7 +1201,7 @@ commander@2.8.x: dependencies: graceful-readlink ">= 1.0.0" -commander@^2.9.0, commander@^2.x: +commander@^2.14.1, commander@^2.9.0, commander@^2.x: version "2.15.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" @@ -3469,6 +3543,10 @@ jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" +jsesc@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" @@ -3659,7 +3737,7 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@^4.13.1, lodash@^4.17.4, lodash@^4.3.0: +lodash@^4.13.1, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -5439,7 +5517,7 @@ source-map@0.4.x, source-map@^0.4.4: dependencies: amdefine ">=0.0.4" -source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6: +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -5780,6 +5858,10 @@ to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -6101,14 +6183,28 @@ watchpack@^1.5.0: graceful-fs "^4.1.2" neo-async "^2.5.0" -webassemblyjs@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/webassemblyjs/-/webassemblyjs-1.4.0.tgz#19473db20153c558fe0b95f143bd344df39fa83a" +webassembly-floating-point-hex-parser@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/webassembly-floating-point-hex-parser/-/webassembly-floating-point-hex-parser-0.1.2.tgz#85bb01f54e68690c2645ea0cfad26c1110fdf988" + +webassemblyjs@1.0.0-y.7: + version "1.0.0-y.7" + resolved "https://registry.yarnpkg.com/webassemblyjs/-/webassemblyjs-1.0.0-y.7.tgz#142ca4d6b37f81531fdf39c49ec6c79c927b7836" + dependencies: + "@webassemblyjs/ast" "1.0.0-y.7" + "@webassemblyjs/wasm-parser" "1.0.0-y.7" + "@webassemblyjs/wast-parser" "1.0.0-y.7" + long "^3.2.0" + webassembly-floating-point-hex-parser "0.1.2" + +webassemblyjs@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/webassemblyjs/-/webassemblyjs-1.4.1.tgz#fdf1eaab969b5ed274a85ebed21418521382a71c" dependencies: - "@webassemblyjs/ast" "1.4.0" - "@webassemblyjs/validation" "1.4.0" - "@webassemblyjs/wasm-parser" "1.4.0" - "@webassemblyjs/wast-parser" "1.4.0" + "@webassemblyjs/ast" "1.4.1" + "@webassemblyjs/validation" "1.4.1" + "@webassemblyjs/wasm-parser" "1.4.1" + "@webassemblyjs/wast-parser" "1.4.1" long "^3.2.0" webidl-conversions@^4.0.1, webidl-conversions@^4.0.2: From 912a1a66cc0775366074b9a7de61869d1c38b382 Mon Sep 17 00:00:00 2001 From: Sven SAULEAU Date: Thu, 10 May 2018 22:15:24 +0200 Subject: [PATCH 7/9] chore: update lock --- yarn.lock | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index 93b77cf746c..af187894761 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16,6 +16,41 @@ esutils "^2.0.2" js-tokens "^3.0.0" +"@babel/generator@^7.0.0-beta.40": + version "7.0.0-beta.46" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.46.tgz#6f57159bcc28bf8c3ed6b549789355cebfa3faa7" + dependencies: + "@babel/types" "7.0.0-beta.46" + jsesc "^2.5.1" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/highlight@7.0.0-beta.46": + version "7.0.0-beta.46" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.46.tgz#c553c51e65f572bdedd6eff66fc0bb563016645e" + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + +"@babel/template@^7.0.0-beta.40": + version "7.0.0-beta.46" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.46.tgz#8b23982411d5b5dbfa479437bfe414adb1411bb9" + dependencies: + "@babel/code-frame" "7.0.0-beta.46" + "@babel/types" "7.0.0-beta.46" + babylon "7.0.0-beta.46" + lodash "^4.2.0" + +"@babel/types@7.0.0-beta.46", "@babel/types@^7.0.0-beta.40": + version "7.0.0-beta.46" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.46.tgz#eb84399a699af9fcb244440cce78e1acbeb40e0c" + dependencies: + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^2.0.0" + "@types/babel-types@*", "@types/babel-types@^7.0.0": version "7.0.2" resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.2.tgz#63dc3e5e7f6367e1819d2bba5213783cd926c5d5" @@ -5646,7 +5681,7 @@ source-map@0.4.x, source-map@^0.4.4: dependencies: amdefine ">=0.0.4" -source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6: +source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" From 38456ead4da744a96b5bdf348dea4cc98b53c227 Mon Sep 17 00:00:00 2001 From: Sven SAULEAU Date: Fri, 11 May 2018 16:16:01 +0200 Subject: [PATCH 8/9] chore: bump webassemblyjs --- package.json | 6 +- yarn.lock | 293 +++++++++++++++++---------------------------------- 2 files changed, 102 insertions(+), 197 deletions(-) diff --git a/package.json b/package.json index bd2e21abb3d..7ef53b57944 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,9 @@ "description": "Packs CommonJs/AMD modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.", "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.4.1", - "@webassemblyjs/wasm-edit": "1.4.1", - "@webassemblyjs/wasm-parser": "1.4.1", + "@webassemblyjs/ast": "1.4.2", + "@webassemblyjs/wasm-edit": "1.4.2", + "@webassemblyjs/wasm-parser": "1.4.2", "acorn": "^5.0.0", "acorn-dynamic-import": "^3.0.0", "ajv": "^6.1.0", diff --git a/yarn.lock b/yarn.lock index af187894761..16d0b6b7603 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,12 +2,6 @@ # yarn lockfile v1 -"@babel/code-frame@7.0.0-beta.46", "@babel/code-frame@^7.0.0-beta.36": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.46.tgz#e0d002100805daab1461c0fcb32a07e304f3a4f4" - dependencies: - "@babel/highlight" "7.0.0-beta.46" - "@babel/code-frame@^7.0.0-beta.35": version "7.0.0-beta.38" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.38.tgz#c0af5930617e55e050336838e3a3670983b0b2b2" @@ -16,41 +10,6 @@ esutils "^2.0.2" js-tokens "^3.0.0" -"@babel/generator@^7.0.0-beta.40": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.46.tgz#6f57159bcc28bf8c3ed6b549789355cebfa3faa7" - dependencies: - "@babel/types" "7.0.0-beta.46" - jsesc "^2.5.1" - lodash "^4.2.0" - source-map "^0.5.0" - trim-right "^1.0.1" - -"@babel/highlight@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.46.tgz#c553c51e65f572bdedd6eff66fc0bb563016645e" - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - -"@babel/template@^7.0.0-beta.40": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.46.tgz#8b23982411d5b5dbfa479437bfe414adb1411bb9" - dependencies: - "@babel/code-frame" "7.0.0-beta.46" - "@babel/types" "7.0.0-beta.46" - babylon "7.0.0-beta.46" - lodash "^4.2.0" - -"@babel/types@7.0.0-beta.46", "@babel/types@^7.0.0-beta.40": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.46.tgz#eb84399a699af9fcb244440cce78e1acbeb40e0c" - dependencies: - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^2.0.0" - "@types/babel-types@*", "@types/babel-types@^7.0.0": version "7.0.2" resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.2.tgz#63dc3e5e7f6367e1819d2bba5213783cd926c5d5" @@ -69,144 +28,116 @@ version "1.0.2" resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.2.tgz#e13182e1b69871a422d7863e11a4a6f5b814a4bd" -"@webassemblyjs/ast@1.0.0-y.7": - version "1.0.0-y.7" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.0.0-y.7.tgz#081dd61dd50030d4008aac9baf0ef5ff0cc2cab9" - dependencies: - "@webassemblyjs/wast-parser" "1.0.0-y.7" - webassembly-floating-point-hex-parser "0.1.2" - webassemblyjs "1.0.0-y.7" - -"@webassemblyjs/ast@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.4.1.tgz#8d44bd45cb3e39c33ea0000ca7c54df4b622f0c8" +"@webassemblyjs/ast@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.4.2.tgz#ab715aa1fec9dd23c025204dba39690c119418ea" dependencies: - "@webassemblyjs/helper-wasm-bytecode" "1.4.1" - "@webassemblyjs/wast-parser" "1.4.1" + "@webassemblyjs/helper-wasm-bytecode" "1.4.2" + "@webassemblyjs/wast-parser" "1.4.2" debug "^3.1.0" - webassemblyjs "1.4.1" + webassemblyjs "1.4.2" -"@webassemblyjs/floating-point-hex-parser@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.1.tgz#f6aca087e185097472007961e8b8bd58e042f084" +"@webassemblyjs/floating-point-hex-parser@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.2.tgz#9296fb64caa37bf98c8064aa329680e3e2bfacc7" -"@webassemblyjs/helper-buffer@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.1.tgz#f0c89990845f97a2e919516c1e66ceef930ae113" +"@webassemblyjs/helper-buffer@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.2.tgz#3cacecd5a6bfcb67932ed8219f81f92d8b2dafbb" -"@webassemblyjs/helper-code-frame@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.1.tgz#744fedcb8dcc61ef79a599699cb46fdaa8045d68" +"@webassemblyjs/helper-code-frame@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.2.tgz#20526637c3849f12b08f8661248477eef9642329" dependencies: - "@webassemblyjs/wast-printer" "1.4.1" + "@webassemblyjs/wast-printer" "1.4.2" -"@webassemblyjs/helper-fsm@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.1.tgz#b365a3afda50f472163b59c1f61bb83f60ff60b8" +"@webassemblyjs/helper-fsm@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.2.tgz#e41050282994b5be077b95b65b66ecd5a92c5e88" -"@webassemblyjs/helper-wasm-bytecode@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.1.tgz#ef060e989f9ac8c913270f9c80298ef39a0819c1" +"@webassemblyjs/helper-wasm-bytecode@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.2.tgz#b48c289c7921056aa12d71e78a17070ffe90c49c" -"@webassemblyjs/helper-wasm-section@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.1.tgz#a76753d812c56c692ee8e8b412772e388fe22f63" +"@webassemblyjs/helper-wasm-section@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.2.tgz#520e02c0cc3e5e9b5f44f58abc04ba5eda6e5476" dependencies: - "@webassemblyjs/ast" "1.4.1" - "@webassemblyjs/helper-buffer" "1.4.1" - "@webassemblyjs/helper-wasm-bytecode" "1.4.1" - "@webassemblyjs/wasm-gen" "1.4.1" + "@webassemblyjs/ast" "1.4.2" + "@webassemblyjs/helper-buffer" "1.4.2" + "@webassemblyjs/helper-wasm-bytecode" "1.4.2" + "@webassemblyjs/wasm-gen" "1.4.2" -"@webassemblyjs/leb128@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.4.1.tgz#c96f0f65a7b833fb19972b80bceda0d5c0a7ab9c" +"@webassemblyjs/leb128@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.4.2.tgz#d13f368abdcefc54428f55a265a993de610f8893" dependencies: leb "^0.3.0" -"@webassemblyjs/validation@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/validation/-/validation-1.4.1.tgz#aaabe07eee5183e5e7e6263f92108c5e68b32019" - dependencies: - "@webassemblyjs/ast" "1.4.1" - -"@webassemblyjs/wasm-edit@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.1.tgz#76bc68470a64c5c36309146548b566c5cb3ce2ec" - dependencies: - "@webassemblyjs/ast" "1.4.1" - "@webassemblyjs/helper-buffer" "1.4.1" - "@webassemblyjs/helper-wasm-bytecode" "1.4.1" - "@webassemblyjs/helper-wasm-section" "1.4.1" - "@webassemblyjs/wasm-gen" "1.4.1" - "@webassemblyjs/wasm-opt" "1.4.1" - "@webassemblyjs/wasm-parser" "1.4.1" - "@webassemblyjs/wast-printer" "1.4.1" - debug "^3.1.0" - -"@webassemblyjs/wasm-gen@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.1.tgz#774e5ed7d21a52cb1241a862d3fc73ceaa857ff0" - dependencies: - "@babel/generator" "^7.0.0-beta.40" - "@babel/template" "^7.0.0-beta.40" - "@babel/types" "^7.0.0-beta.40" - "@webassemblyjs/wasm-parser" "1.0.0-y.7" - commander "^2.14.1" - -"@webassemblyjs/wasm-opt@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.1.tgz#e5a30ec5bbfb4fe94e83bf616d3a99182ba76655" +"@webassemblyjs/validation@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/validation/-/validation-1.4.2.tgz#55cf5b219e25900c85773fc35beb9d12ae0ede53" dependencies: - "@webassemblyjs/ast" "1.4.1" - "@webassemblyjs/helper-buffer" "1.4.1" - "@webassemblyjs/wasm-gen" "1.4.1" - "@webassemblyjs/wasm-parser" "1.4.1" + "@webassemblyjs/ast" "1.4.2" -"@webassemblyjs/wasm-parser@1.0.0-y.7": - version "1.0.0-y.7" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.0.0-y.7.tgz#aafd74a65330d1b39f195717d987e1cfd9e648ba" +"@webassemblyjs/wasm-edit@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.2.tgz#bde9a581065f63f257ed511d7d9cf04f8cd04524" dependencies: - "@webassemblyjs/ast" "1.0.0-y.7" - "@webassemblyjs/wasm-parser" "1.0.0-y.7" - webassemblyjs "1.0.0-y.7" - -"@webassemblyjs/wasm-parser@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.1.tgz#363d326187d495024eacd63f8720576dded5b4c4" - dependencies: - "@webassemblyjs/ast" "1.4.1" - "@webassemblyjs/helper-wasm-bytecode" "1.4.1" - "@webassemblyjs/leb128" "1.4.1" - "@webassemblyjs/wasm-parser" "1.4.1" - webassemblyjs "1.4.1" - -"@webassemblyjs/wast-parser@1.0.0-y.7": - version "1.0.0-y.7" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.0.0-y.7.tgz#7a2965048b8478a3595a6c9e2054776277f8c3be" - dependencies: - "@babel/code-frame" "^7.0.0-beta.36" - "@webassemblyjs/ast" "1.0.0-y.7" - long "^3.2.0" - webassembly-floating-point-hex-parser "0.1.2" - webassemblyjs "1.0.0-y.7" + "@webassemblyjs/ast" "1.4.2" + "@webassemblyjs/helper-buffer" "1.4.2" + "@webassemblyjs/helper-wasm-bytecode" "1.4.2" + "@webassemblyjs/helper-wasm-section" "1.4.2" + "@webassemblyjs/wasm-gen" "1.4.2" + "@webassemblyjs/wasm-opt" "1.4.2" + "@webassemblyjs/wasm-parser" "1.4.2" + "@webassemblyjs/wast-printer" "1.4.2" + debug "^3.1.0" -"@webassemblyjs/wast-parser@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.4.1.tgz#e2a56084b6062daa78eb3784ad6d3532f3c5ebd9" - dependencies: - "@webassemblyjs/ast" "1.4.1" - "@webassemblyjs/floating-point-hex-parser" "1.4.1" - "@webassemblyjs/helper-code-frame" "1.4.1" - "@webassemblyjs/helper-fsm" "1.4.1" +"@webassemblyjs/wasm-gen@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.2.tgz#0899297f9426073736df799287845a73c597cf90" + dependencies: + "@webassemblyjs/ast" "1.4.2" + "@webassemblyjs/helper-wasm-bytecode" "1.4.2" + "@webassemblyjs/leb128" "1.4.2" + +"@webassemblyjs/wasm-opt@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.2.tgz#c44ad48e109aec197e3bf69875c54537d76ba2e9" + dependencies: + "@webassemblyjs/ast" "1.4.2" + "@webassemblyjs/helper-buffer" "1.4.2" + "@webassemblyjs/wasm-gen" "1.4.2" + "@webassemblyjs/wasm-parser" "1.4.2" + +"@webassemblyjs/wasm-parser@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.2.tgz#3bf7e10cfe336db0ecdea0a5d7ed8a63b7a7754a" + dependencies: + "@webassemblyjs/ast" "1.4.2" + "@webassemblyjs/helper-wasm-bytecode" "1.4.2" + "@webassemblyjs/leb128" "1.4.2" + "@webassemblyjs/wasm-parser" "1.4.2" + webassemblyjs "1.4.2" + +"@webassemblyjs/wast-parser@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.4.2.tgz#6499c38cf8895a81394f7e40d4681a85aaa84498" + dependencies: + "@webassemblyjs/ast" "1.4.2" + "@webassemblyjs/floating-point-hex-parser" "1.4.2" + "@webassemblyjs/helper-code-frame" "1.4.2" + "@webassemblyjs/helper-fsm" "1.4.2" long "^3.2.0" - webassemblyjs "1.4.1" + webassemblyjs "1.4.2" -"@webassemblyjs/wast-printer@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.4.1.tgz#d9288e777aa40dadaca9896c9e92aa535ae4212b" +"@webassemblyjs/wast-printer@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.4.2.tgz#ee70a828f0d9730b55b9a5c3ed694094ba68ba57" dependencies: - "@webassemblyjs/ast" "1.4.1" - "@webassemblyjs/wast-parser" "1.4.1" + "@webassemblyjs/ast" "1.4.2" + "@webassemblyjs/wast-parser" "1.4.2" long "^3.2.0" abab@^1.0.4: @@ -684,10 +615,6 @@ babel-types@^6.18.0, babel-types@^6.26.0: lodash "^4.17.4" to-fast-properties "^1.0.3" -babylon@7.0.0-beta.46: - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.46.tgz#b6ddaba81bbb130313932757ff9c195d527088b6" - babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" @@ -1233,7 +1160,7 @@ commander@2.8.x: dependencies: graceful-readlink ">= 1.0.0" -commander@^2.14.1, commander@^2.9.0, commander@^2.x: +commander@^2.9.0, commander@^2.x: version "2.15.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" @@ -3599,10 +3526,6 @@ jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" -jsesc@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" - jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" @@ -3800,7 +3723,7 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@^4.13.1, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0: +lodash@^4.13.1, lodash@^4.17.4, lodash@^4.3.0: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -5681,7 +5604,7 @@ source-map@0.4.x, source-map@^0.4.4: dependencies: amdefine ">=0.0.4" -source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6: +source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -6022,10 +5945,6 @@ to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -6351,28 +6270,14 @@ watchpack@^1.5.0: graceful-fs "^4.1.2" neo-async "^2.5.0" -webassembly-floating-point-hex-parser@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/webassembly-floating-point-hex-parser/-/webassembly-floating-point-hex-parser-0.1.2.tgz#85bb01f54e68690c2645ea0cfad26c1110fdf988" - -webassemblyjs@1.0.0-y.7: - version "1.0.0-y.7" - resolved "https://registry.yarnpkg.com/webassemblyjs/-/webassemblyjs-1.0.0-y.7.tgz#142ca4d6b37f81531fdf39c49ec6c79c927b7836" - dependencies: - "@webassemblyjs/ast" "1.0.0-y.7" - "@webassemblyjs/wasm-parser" "1.0.0-y.7" - "@webassemblyjs/wast-parser" "1.0.0-y.7" - long "^3.2.0" - webassembly-floating-point-hex-parser "0.1.2" - -webassemblyjs@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/webassemblyjs/-/webassemblyjs-1.4.1.tgz#fdf1eaab969b5ed274a85ebed21418521382a71c" +webassemblyjs@1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/webassemblyjs/-/webassemblyjs-1.4.2.tgz#3b07b506917c97153d83441d8a88ffa2d25cc07d" dependencies: - "@webassemblyjs/ast" "1.4.1" - "@webassemblyjs/validation" "1.4.1" - "@webassemblyjs/wasm-parser" "1.4.1" - "@webassemblyjs/wast-parser" "1.4.1" + "@webassemblyjs/ast" "1.4.2" + "@webassemblyjs/validation" "1.4.2" + "@webassemblyjs/wasm-parser" "1.4.2" + "@webassemblyjs/wast-parser" "1.4.2" long "^3.2.0" webidl-conversions@^4.0.1, webidl-conversions@^4.0.2: From e2c8f3d501dcd891ce943c1be393f34aba7d31ca Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Fri, 11 May 2018 16:46:33 +0200 Subject: [PATCH 9/9] remove passing AST, redecode AST in Generator --- lib/wasm/WebAssemblyGenerator.js | 8 ++++++-- lib/wasm/WebAssemblyParser.js | 10 ---------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/lib/wasm/WebAssemblyGenerator.js b/lib/wasm/WebAssemblyGenerator.js index d4fb1255a6d..7174be66a91 100644 --- a/lib/wasm/WebAssemblyGenerator.js +++ b/lib/wasm/WebAssemblyGenerator.js @@ -6,9 +6,9 @@ const Generator = require("../Generator"); const { RawSource } = require("webpack-sources"); -const WebAssemblyParser = require("./WebAssemblyParser"); const { editWithAST, addWithAST } = require("@webassemblyjs/wasm-edit"); +const { decode } = require("@webassemblyjs/wasm-parser"); const t = require("@webassemblyjs/ast"); function compose(...fns) { @@ -244,9 +244,13 @@ const addInitFunction = ({ class WebAssemblyGenerator extends Generator { generate(module) { - const ast = WebAssemblyParser.getAst(module); const bin = module.originalSource().source(); + const ast = decode(bin, { + ignoreDataSection: true, + ignoreCodeSection: true + }); + const importedGlobals = getImportedGlobals(ast); const countImportedFunc = getCountImportedFunc(ast); const startAtFuncIndex = getStartFuncIndex(ast); diff --git a/lib/wasm/WebAssemblyParser.js b/lib/wasm/WebAssemblyParser.js index 0cfd037257f..559208f4505 100644 --- a/lib/wasm/WebAssemblyParser.js +++ b/lib/wasm/WebAssemblyParser.js @@ -29,9 +29,6 @@ const decoderOpts = { ignoreDataSection: true }; -/** @type {WeakMap} */ -const astStore = new WeakMap(); - class WebAssemblyParser extends Tapable { constructor(options) { super(); @@ -39,10 +36,6 @@ class WebAssemblyParser extends Tapable { this.options = options; } - static getAst(module) { - return astStore.get(module); - } - parse(binary, state) { // flag it as ESM state.module.buildMeta.exportsType = "namespace"; @@ -50,9 +43,6 @@ class WebAssemblyParser extends Tapable { // parse it const ast = decode(binary, decoderOpts); - // cache it to be available for generators - astStore.set(state.module, ast); - // extract imports and exports const exports = (state.module.buildMeta.providedExports = []); t.traverse(ast, {