Skip to content

Commit ec0369d

Browse files
authored
Merge pull request webpack#7364 from xtuc/chore-bump-webassemblyjs6
Few wasm fixes
2 parents 8e05ae2 + 586469a commit ec0369d

File tree

5 files changed

+114
-99
lines changed

5 files changed

+114
-99
lines changed

declarations.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ declare module "@webassemblyjs/ast" {
8181
export class TypeInstruction extends Node {}
8282
export class IndexInFuncSection extends Node {}
8383
export function indexLiteral(index: number): IndexLiteral;
84-
export function numberLiteral(num: number): NumberLiteral;
84+
export function numberLiteralFromRaw(num: number): NumberLiteral;
8585
export function global(globalType: string, nodes: Node[]): Global;
8686
export function identifier(indentifier: string): Identifier;
8787
export function funcParam(valType: string, id: Identifier): FuncParam;

lib/wasm/WebAssemblyGenerator.js

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,29 @@ const Template = require("../Template");
99
const WebAssemblyUtils = require("./WebAssemblyUtils");
1010
const { RawSource } = require("webpack-sources");
1111

12+
const { shrinkPaddedLEB128 } = require("@webassemblyjs/wasm-opt");
1213
const { editWithAST, addWithAST } = require("@webassemblyjs/wasm-edit");
1314
const { decode } = require("@webassemblyjs/wasm-parser");
1415
const t = require("@webassemblyjs/ast");
1516

1617
/** @typedef {import("../Module")} Module */
1718
/** @typedef {import("./WebAssemblyUtils").UsedWasmDependency} UsedWasmDependency */
1819

20+
/**
21+
* @typedef {(ArrayBuffer) => ArrayBuffer} ArrayBufferTransform
22+
*/
23+
24+
/**
25+
* Run some preprocessing on the binary before wasm-edit
26+
*
27+
* @param {ArrayBuffer} ab - original binary
28+
* @returns {ArrayBufferTransform} transform
29+
*/
30+
function preprocess(ab) {
31+
const optBin = shrinkPaddedLEB128(new Uint8Array(ab));
32+
return optBin.buffer;
33+
}
34+
1935
/**
2036
* @template T
2137
* @param {Function[]} fns transforms
@@ -42,9 +58,6 @@ const isGlobalImport = n => n.descr.type === "GlobalType";
4258
const isFuncImport = n => n.descr.type === "FuncImportDescr";
4359

4460
// TODO replace with @callback
45-
/**
46-
* @typedef {(ArrayBuffer) => ArrayBuffer} ArrayBufferTransform
47-
*/
4861

4962
/**
5063
* Removes the start instruction
@@ -176,7 +189,7 @@ const rewriteImportedGlobals = state => bin => {
176189

177190
newGlobals.push(
178191
t.global(globalType, [
179-
t.objectInstruction("const", "i32", [t.numberLiteral(0)])
192+
t.objectInstruction("const", "i32", [t.numberLiteralFromRaw(0)])
180193
])
181194
);
182195

@@ -315,7 +328,8 @@ const getUsedDependencyMap = module => {
315328

316329
class WebAssemblyGenerator extends Generator {
317330
generate(module) {
318-
const bin = module.originalSource().source();
331+
let bin = module.originalSource().source();
332+
bin = preprocess(bin);
319333

320334
const initFuncId = t.identifier(
321335
Array.isArray(module.usedExports)

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55
"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.",
66
"license": "MIT",
77
"dependencies": {
8-
"@webassemblyjs/ast": "1.5.1",
9-
"@webassemblyjs/wasm-edit": "1.5.1",
10-
"@webassemblyjs/wasm-parser": "1.5.1",
8+
"@webassemblyjs/ast": "1.5.4",
9+
"@webassemblyjs/wasm-edit": "1.5.4",
10+
"@webassemblyjs/wasm-opt": "1.5.4",
11+
"@webassemblyjs/wasm-parser": "1.5.4",
1112
"acorn": "^5.0.0",
1213
"acorn-dynamic-import": "^3.0.0",
1314
"ajv": "^6.1.0",

test/cases/wasm/imports-multiple/module.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { getResult } from "./wasm.wasm";
22

3-
export var result = getResult();
3+
export var result = getResult(1);
44

55
export function getNumber() {
66
return 20;

yarn.lock

Lines changed: 89 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -28,121 +28,121 @@
2828
version "1.0.2"
2929
resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.2.tgz#e13182e1b69871a422d7863e11a4a6f5b814a4bd"
3030

31-
"@webassemblyjs/ast@1.5.1":
32-
version "1.5.1"
33-
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.5.1.tgz#b77382eed0c334418508fb08b73f1eae198c6960"
31+
"@webassemblyjs/ast@1.5.4":
32+
version "1.5.4"
33+
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.5.4.tgz#b459d032edd00c98dd3de46d6850845d5d588ad4"
3434
dependencies:
35-
"@webassemblyjs/helper-wasm-bytecode" "1.5.1"
36-
"@webassemblyjs/wast-parser" "1.5.1"
35+
"@webassemblyjs/helper-wasm-bytecode" "1.5.4"
36+
"@webassemblyjs/wast-parser" "1.5.4"
3737
debug "^3.1.0"
38-
webassemblyjs "1.5.1"
38+
webassemblyjs "1.5.4"
3939

40-
"@webassemblyjs/floating-point-hex-parser@1.5.1":
41-
version "1.5.1"
42-
resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.1.tgz#0af82482faea3d86e37a020643475571197e8b3f"
40+
"@webassemblyjs/floating-point-hex-parser@1.5.4":
41+
version "1.5.4"
42+
resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.4.tgz#b51b380a86914ae87ec075965eee24ac393c967e"
4343

44-
"@webassemblyjs/helper-buffer@1.5.1":
45-
version "1.5.1"
46-
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.1.tgz#659046a5af671cd7b1d67a021d8dccef043508e3"
44+
"@webassemblyjs/helper-buffer@1.5.4":
45+
version "1.5.4"
46+
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.4.tgz#2280e11dfd3109cdff5de6651f6d019a2d4346f9"
4747
dependencies:
4848
debug "^3.1.0"
4949

50-
"@webassemblyjs/helper-code-frame@1.5.1":
51-
version "1.5.1"
52-
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.1.tgz#9170e9e5c0af7ac8154a7a2d0cb85d6f7e318207"
50+
"@webassemblyjs/helper-code-frame@1.5.4":
51+
version "1.5.4"
52+
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.4.tgz#78daa37c08f6c4853d67608e389606c980e9d59e"
5353
dependencies:
54-
"@webassemblyjs/wast-printer" "1.5.1"
54+
"@webassemblyjs/wast-printer" "1.5.4"
5555

56-
"@webassemblyjs/helper-fsm@1.5.1":
57-
version "1.5.1"
58-
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.1.tgz#68f9e4a432b9e825f334db790dc037209c393a07"
56+
"@webassemblyjs/helper-fsm@1.5.4":
57+
version "1.5.4"
58+
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.4.tgz#94c2ebf7f08d19e5083e9f33278c516c4bde98fe"
5959

60-
"@webassemblyjs/helper-wasm-bytecode@1.5.1":
61-
version "1.5.1"
62-
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.1.tgz#363459069ef44173dcd9d5392fa6074eab7b711d"
60+
"@webassemblyjs/helper-wasm-bytecode@1.5.4":
61+
version "1.5.4"
62+
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.4.tgz#70eca87631f61458562ed462e72db4abe789dc5d"
6363

64-
"@webassemblyjs/helper-wasm-section@1.5.1":
65-
version "1.5.1"
66-
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.1.tgz#c45b3cc233c5067ef44cd35599b07aff279c531a"
64+
"@webassemblyjs/helper-wasm-section@1.5.4":
65+
version "1.5.4"
66+
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.4.tgz#73652f04fbc7cf3efc60eb9474eb2bddea915d1f"
6767
dependencies:
68-
"@webassemblyjs/ast" "1.5.1"
69-
"@webassemblyjs/helper-buffer" "1.5.1"
70-
"@webassemblyjs/helper-wasm-bytecode" "1.5.1"
71-
"@webassemblyjs/wasm-gen" "1.5.1"
68+
"@webassemblyjs/ast" "1.5.4"
69+
"@webassemblyjs/helper-buffer" "1.5.4"
70+
"@webassemblyjs/helper-wasm-bytecode" "1.5.4"
71+
"@webassemblyjs/wasm-gen" "1.5.4"
7272
debug "^3.1.0"
7373

74-
"@webassemblyjs/leb128@1.5.1":
75-
version "1.5.1"
76-
resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.5.1.tgz#a0069a66560547cf1e4228845e760ac035449e0d"
74+
"@webassemblyjs/leb128@1.5.4":
75+
version "1.5.4"
76+
resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.5.4.tgz#3adbd9a4c12324397533aedb9ad4b0a6e1837ad1"
7777
dependencies:
7878
leb "^0.3.0"
7979

80-
"@webassemblyjs/validation@1.5.1":
81-
version "1.5.1"
82-
resolved "https://registry.yarnpkg.com/@webassemblyjs/validation/-/validation-1.5.1.tgz#ce8e06f7be7392e0ddb7dab55b6c0f37f63dcaa6"
80+
"@webassemblyjs/validation@1.5.4":
81+
version "1.5.4"
82+
resolved "https://registry.yarnpkg.com/@webassemblyjs/validation/-/validation-1.5.4.tgz#4efebc3d6634c56b09f7f1f11de7794ff87acb7e"
8383
dependencies:
84-
"@webassemblyjs/ast" "1.5.1"
84+
"@webassemblyjs/ast" "1.5.4"
8585
debug "3.0.1"
8686

87-
"@webassemblyjs/wasm-edit@1.5.1":
88-
version "1.5.1"
89-
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.1.tgz#4b3eb413031e63de2c4fddd69eda3f0a2a43c772"
90-
dependencies:
91-
"@webassemblyjs/ast" "1.5.1"
92-
"@webassemblyjs/helper-buffer" "1.5.1"
93-
"@webassemblyjs/helper-wasm-bytecode" "1.5.1"
94-
"@webassemblyjs/helper-wasm-section" "1.5.1"
95-
"@webassemblyjs/wasm-gen" "1.5.1"
96-
"@webassemblyjs/wasm-opt" "1.5.1"
97-
"@webassemblyjs/wasm-parser" "1.5.1"
98-
"@webassemblyjs/wast-printer" "1.5.1"
87+
"@webassemblyjs/wasm-edit@1.5.4":
88+
version "1.5.4"
89+
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.4.tgz#40d3d76a31755e5497559dfe8733fa753e23698d"
90+
dependencies:
91+
"@webassemblyjs/ast" "1.5.4"
92+
"@webassemblyjs/helper-buffer" "1.5.4"
93+
"@webassemblyjs/helper-wasm-bytecode" "1.5.4"
94+
"@webassemblyjs/helper-wasm-section" "1.5.4"
95+
"@webassemblyjs/wasm-gen" "1.5.4"
96+
"@webassemblyjs/wasm-opt" "1.5.4"
97+
"@webassemblyjs/wasm-parser" "1.5.4"
98+
"@webassemblyjs/wast-printer" "1.5.4"
9999
debug "^3.1.0"
100100

101-
"@webassemblyjs/wasm-gen@1.5.1":
102-
version "1.5.1"
103-
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.1.tgz#805c1b15ef43e3f311e96d4f8a648f03bfc3b5a2"
101+
"@webassemblyjs/wasm-gen@1.5.4":
102+
version "1.5.4"
103+
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.4.tgz#e34ce3b4599aa56e28b21afd7731da7d374f0b28"
104104
dependencies:
105-
"@webassemblyjs/ast" "1.5.1"
106-
"@webassemblyjs/helper-wasm-bytecode" "1.5.1"
107-
"@webassemblyjs/leb128" "1.5.1"
105+
"@webassemblyjs/ast" "1.5.4"
106+
"@webassemblyjs/helper-wasm-bytecode" "1.5.4"
107+
"@webassemblyjs/leb128" "1.5.4"
108108

109-
"@webassemblyjs/wasm-opt@1.5.1":
110-
version "1.5.1"
111-
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.1.tgz#01f3e0f5ea89762e02a374a8d34a1b418b6066ee"
109+
"@webassemblyjs/wasm-opt@1.5.4":
110+
version "1.5.4"
111+
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.4.tgz#8abc137664f3bca68cf1d20597fd755787d6a380"
112112
dependencies:
113-
"@webassemblyjs/ast" "1.5.1"
114-
"@webassemblyjs/helper-buffer" "1.5.1"
115-
"@webassemblyjs/wasm-gen" "1.5.1"
116-
"@webassemblyjs/wasm-parser" "1.5.1"
113+
"@webassemblyjs/ast" "1.5.4"
114+
"@webassemblyjs/helper-buffer" "1.5.4"
115+
"@webassemblyjs/wasm-gen" "1.5.4"
116+
"@webassemblyjs/wasm-parser" "1.5.4"
117117
debug "^3.1.0"
118118

119-
"@webassemblyjs/wasm-parser@1.5.1":
120-
version "1.5.1"
121-
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.1.tgz#ee8c5562fa6a1213dd535c4b59dd2d7760bbf0f3"
119+
"@webassemblyjs/wasm-parser@1.5.4":
120+
version "1.5.4"
121+
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.4.tgz#9abaf1b2c521c0d01051cd0a65a1d74b3d78deaa"
122122
dependencies:
123-
"@webassemblyjs/ast" "1.5.1"
124-
"@webassemblyjs/helper-wasm-bytecode" "1.5.1"
125-
"@webassemblyjs/leb128" "1.5.1"
126-
"@webassemblyjs/wasm-parser" "1.5.1"
127-
webassemblyjs "1.5.1"
123+
"@webassemblyjs/ast" "1.5.4"
124+
"@webassemblyjs/helper-wasm-bytecode" "1.5.4"
125+
"@webassemblyjs/leb128" "1.5.4"
126+
"@webassemblyjs/wasm-parser" "1.5.4"
127+
webassemblyjs "1.5.4"
128128

129-
"@webassemblyjs/wast-parser@1.5.1":
130-
version "1.5.1"
131-
resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.5.1.tgz#4da00bf7f4e2532c6ed674089a072ae604aeaaab"
129+
"@webassemblyjs/wast-parser@1.5.4":
130+
version "1.5.4"
131+
resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.5.4.tgz#799a78355f153607c541fdbfe0466119afc8e808"
132132
dependencies:
133-
"@webassemblyjs/ast" "1.5.1"
134-
"@webassemblyjs/floating-point-hex-parser" "1.5.1"
135-
"@webassemblyjs/helper-code-frame" "1.5.1"
136-
"@webassemblyjs/helper-fsm" "1.5.1"
133+
"@webassemblyjs/ast" "1.5.4"
134+
"@webassemblyjs/floating-point-hex-parser" "1.5.4"
135+
"@webassemblyjs/helper-code-frame" "1.5.4"
136+
"@webassemblyjs/helper-fsm" "1.5.4"
137137
long "^3.2.0"
138-
webassemblyjs "1.5.1"
138+
webassemblyjs "1.5.4"
139139

140-
"@webassemblyjs/wast-printer@1.5.1":
141-
version "1.5.1"
142-
resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.5.1.tgz#91f52975decdd98051d28bf7fe89c1faa978d9a8"
140+
"@webassemblyjs/wast-printer@1.5.4":
141+
version "1.5.4"
142+
resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.5.4.tgz#c02284c96735537f15944dfab5150df3935bcb8d"
143143
dependencies:
144-
"@webassemblyjs/ast" "1.5.1"
145-
"@webassemblyjs/wast-parser" "1.5.1"
144+
"@webassemblyjs/ast" "1.5.4"
145+
"@webassemblyjs/wast-parser" "1.5.4"
146146
long "^3.2.0"
147147

148148
abab@^1.0.4:
@@ -6281,14 +6281,14 @@ watchpack@^1.5.0:
62816281
graceful-fs "^4.1.2"
62826282
neo-async "^2.5.0"
62836283

6284-
webassemblyjs@1.5.1:
6285-
version "1.5.1"
6286-
resolved "https://registry.yarnpkg.com/webassemblyjs/-/webassemblyjs-1.5.1.tgz#645caab374dd1803cfbfbaa7489bb4b72f2061ff"
6284+
webassemblyjs@1.5.4:
6285+
version "1.5.4"
6286+
resolved "https://registry.yarnpkg.com/webassemblyjs/-/webassemblyjs-1.5.4.tgz#d8b2a4c2d70a4c911ca446f20e49bc22cde09d15"
62876287
dependencies:
6288-
"@webassemblyjs/ast" "1.5.1"
6289-
"@webassemblyjs/validation" "1.5.1"
6290-
"@webassemblyjs/wasm-parser" "1.5.1"
6291-
"@webassemblyjs/wast-parser" "1.5.1"
6288+
"@webassemblyjs/ast" "1.5.4"
6289+
"@webassemblyjs/validation" "1.5.4"
6290+
"@webassemblyjs/wasm-parser" "1.5.4"
6291+
"@webassemblyjs/wast-parser" "1.5.4"
62926292
long "^3.2.0"
62936293

62946294
webidl-conversions@^4.0.1, webidl-conversions@^4.0.2:

0 commit comments

Comments
 (0)