Skip to content

Commit d2aca56

Browse files
authored
Merge pull request webpack#7431 from xtuc/fix-wasm-preserve-global-order
wasm: preserve global ordering
2 parents b80296f + 1842936 commit d2aca56

File tree

7 files changed

+126
-95
lines changed

7 files changed

+126
-95
lines changed

lib/wasm/WebAssemblyGenerator.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,13 @@ const rewriteImportedGlobals = state => bin => {
207207

208208
path.remove();
209209
}
210+
},
211+
212+
// in order to preserve non-imported global's order we need to re-inject
213+
// those as well
214+
Global(path) {
215+
newGlobals.push(path.node);
216+
path.remove();
210217
}
211218
});
212219

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +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.8",
9-
"@webassemblyjs/wasm-edit": "1.5.8",
10-
"@webassemblyjs/wasm-opt": "1.5.8",
11-
"@webassemblyjs/wasm-parser": "1.5.8",
8+
"@webassemblyjs/ast": "1.5.9",
9+
"@webassemblyjs/wasm-edit": "1.5.9",
10+
"@webassemblyjs/wasm-opt": "1.5.9",
11+
"@webassemblyjs/wasm-parser": "1.5.9",
1212
"acorn": "^5.0.0",
1313
"acorn-dynamic-import": "^3.0.0",
1414
"ajv": "^6.1.0",
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export const a = 1;
2+
export const b = 2;
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
it("should preserve the ordering of globals", function() {
2+
return import("./module.wat").then(function(e) {
3+
expect(e.c).toBe(3);
4+
expect(e.d).toBe(4);
5+
});
6+
});
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
(module
2+
(import "./env.js" "a" (global i32))
3+
(import "./env.js" "b" (global i32))
4+
5+
(global $c i32 (i32.const 3))
6+
(global $d i32 (i32.const 4))
7+
8+
(export "c" (global $c))
9+
(export "d" (global $d))
10+
)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
var supportsWebAssembly = require("../../../helpers/supportsWebAssembly");
2+
3+
module.exports = function(config) {
4+
return supportsWebAssembly();
5+
};

yarn.lock

Lines changed: 92 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -34,131 +34,132 @@
3434
version "1.0.2"
3535
resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.2.tgz#e13182e1b69871a422d7863e11a4a6f5b814a4bd"
3636

37-
"@webassemblyjs/ast@1.5.8":
38-
version "1.5.8"
39-
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.5.8.tgz#f75ac7e7602b7833abd5d53951baae8a07ebb5df"
37+
"@webassemblyjs/ast@1.5.9":
38+
version "1.5.9"
39+
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.5.9.tgz#b2770182678691ab4949d593105c15d4074fedb6"
4040
dependencies:
41-
"@webassemblyjs/helper-module-context" "1.5.8"
42-
"@webassemblyjs/helper-wasm-bytecode" "1.5.8"
43-
"@webassemblyjs/wast-parser" "1.5.8"
41+
"@webassemblyjs/helper-module-context" "1.5.9"
42+
"@webassemblyjs/helper-wasm-bytecode" "1.5.9"
43+
"@webassemblyjs/wast-parser" "1.5.9"
4444
debug "^3.1.0"
4545
mamacro "^0.0.3"
4646

47-
"@webassemblyjs/floating-point-hex-parser@1.5.8":
48-
version "1.5.8"
49-
resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.8.tgz#e0604d34fab0c910e16113720a5a3c01f558fa54"
47+
"@webassemblyjs/floating-point-hex-parser@1.5.9":
48+
version "1.5.9"
49+
resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.9.tgz#ee56243f6ba30781ff6f92fe7f1c377255219a7c"
5050

51-
"@webassemblyjs/helper-api-error@1.5.8":
52-
version "1.5.8"
53-
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.8.tgz#f5570aff60090fae1b78a690a95d04cb021da9ca"
51+
"@webassemblyjs/helper-api-error@1.5.9":
52+
version "1.5.9"
53+
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.9.tgz#c80e204afe1ae102c23b0357f1ec25aeb61022a2"
5454

55-
"@webassemblyjs/helper-buffer@1.5.8":
56-
version "1.5.8"
57-
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.8.tgz#b1405e819a2c537964682fb70551796ab9602632"
55+
"@webassemblyjs/helper-buffer@1.5.9":
56+
version "1.5.9"
57+
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.9.tgz#90d99afcb0fdc1ee11bc403894f3ae37cd926a81"
5858
dependencies:
5959
debug "^3.1.0"
6060

61-
"@webassemblyjs/helper-code-frame@1.5.8":
62-
version "1.5.8"
63-
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.8.tgz#6439de475720198a48fa8b4c38e41987798f73cc"
61+
"@webassemblyjs/helper-code-frame@1.5.9":
62+
version "1.5.9"
63+
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.9.tgz#b56ac06a39c3e1cfefcc421ade1ee471a738a570"
6464
dependencies:
65-
"@webassemblyjs/wast-printer" "1.5.8"
65+
"@webassemblyjs/wast-printer" "1.5.9"
6666

67-
"@webassemblyjs/helper-fsm@1.5.8":
68-
version "1.5.8"
69-
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.8.tgz#6169af3c9530cf9e89a8f3cf2970ed70e650ae4f"
67+
"@webassemblyjs/helper-fsm@1.5.9":
68+
version "1.5.9"
69+
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.9.tgz#8f996268eb07ee6728130a9e97fa3aac32772454"
7070

71-
"@webassemblyjs/helper-module-context@1.5.8":
72-
version "1.5.8"
73-
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.8.tgz#73d0de45cebb774d465b5a66fef061f834d6c23c"
71+
"@webassemblyjs/helper-module-context@1.5.9":
72+
version "1.5.9"
73+
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.9.tgz#69e2eea310f755a0b750b84f8af59f890f2046ac"
7474

75-
"@webassemblyjs/helper-wasm-bytecode@1.5.8":
76-
version "1.5.8"
77-
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.8.tgz#60df17f72d12b07e1398756e6ebfe59c03ab2e1a"
75+
"@webassemblyjs/helper-wasm-bytecode@1.5.9":
76+
version "1.5.9"
77+
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.9.tgz#467ba0f9e4d0e4a48bf1c5107b9f4abe3ca1171a"
7878

79-
"@webassemblyjs/helper-wasm-section@1.5.8":
80-
version "1.5.8"
81-
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.8.tgz#cda7fdb6f3b7b0d215c8f92b7435d47726822f49"
79+
"@webassemblyjs/helper-wasm-section@1.5.9":
80+
version "1.5.9"
81+
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.9.tgz#aec9486ab5d56e3cb5252a7ed88777b6792ac624"
8282
dependencies:
83-
"@webassemblyjs/ast" "1.5.8"
84-
"@webassemblyjs/helper-buffer" "1.5.8"
85-
"@webassemblyjs/helper-wasm-bytecode" "1.5.8"
86-
"@webassemblyjs/wasm-gen" "1.5.8"
83+
"@webassemblyjs/ast" "1.5.9"
84+
"@webassemblyjs/helper-buffer" "1.5.9"
85+
"@webassemblyjs/helper-wasm-bytecode" "1.5.9"
86+
"@webassemblyjs/wasm-gen" "1.5.9"
8787
debug "^3.1.0"
8888

89-
"@webassemblyjs/ieee754@1.5.8":
90-
version "1.5.8"
91-
resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.5.8.tgz#29383c7172e90121613d5614d532f22c19255c3b"
89+
"@webassemblyjs/ieee754@1.5.9":
90+
version "1.5.9"
91+
resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.5.9.tgz#846856ece040c7debd5b5645b319c26523613bcf"
9292
dependencies:
9393
ieee754 "^1.1.11"
9494

95-
"@webassemblyjs/leb128@1.5.8":
96-
version "1.5.8"
97-
resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.5.8.tgz#657c48ef2537ea2921e897a50157be700bf24eac"
95+
"@webassemblyjs/leb128@1.5.9":
96+
version "1.5.9"
97+
resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.5.9.tgz#7249443a0fd7574a7e3c1c39532535c735390bbc"
9898
dependencies:
9999
leb "^0.3.0"
100100

101-
"@webassemblyjs/wasm-edit@1.5.8":
102-
version "1.5.8"
103-
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.8.tgz#592d3678894eaa2ee7e7c2c6a13c2a697db1aa7e"
104-
dependencies:
105-
"@webassemblyjs/ast" "1.5.8"
106-
"@webassemblyjs/helper-buffer" "1.5.8"
107-
"@webassemblyjs/helper-wasm-bytecode" "1.5.8"
108-
"@webassemblyjs/helper-wasm-section" "1.5.8"
109-
"@webassemblyjs/wasm-gen" "1.5.8"
110-
"@webassemblyjs/wasm-opt" "1.5.8"
111-
"@webassemblyjs/wasm-parser" "1.5.8"
112-
"@webassemblyjs/wast-printer" "1.5.8"
101+
"@webassemblyjs/wasm-edit@1.5.9":
102+
version "1.5.9"
103+
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.9.tgz#9b8e054b2d305a7e0528088571c95904bd73df48"
104+
dependencies:
105+
"@webassemblyjs/ast" "1.5.9"
106+
"@webassemblyjs/helper-buffer" "1.5.9"
107+
"@webassemblyjs/helper-wasm-bytecode" "1.5.9"
108+
"@webassemblyjs/helper-wasm-section" "1.5.9"
109+
"@webassemblyjs/wasm-gen" "1.5.9"
110+
"@webassemblyjs/wasm-opt" "1.5.9"
111+
"@webassemblyjs/wasm-parser" "1.5.9"
112+
"@webassemblyjs/wast-printer" "1.5.9"
113113
debug "^3.1.0"
114114

115-
"@webassemblyjs/wasm-gen@1.5.8":
116-
version "1.5.8"
117-
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.8.tgz#e94e034a45227aaa7c481b25c1aa9a0a00ab9488"
115+
"@webassemblyjs/wasm-gen@1.5.9":
116+
version "1.5.9"
117+
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.9.tgz#85e07c047fab917e06b18dee4d16342a2fd3c59c"
118118
dependencies:
119-
"@webassemblyjs/ast" "1.5.8"
120-
"@webassemblyjs/helper-wasm-bytecode" "1.5.8"
121-
"@webassemblyjs/ieee754" "1.5.8"
122-
"@webassemblyjs/leb128" "1.5.8"
119+
"@webassemblyjs/ast" "1.5.9"
120+
"@webassemblyjs/helper-wasm-bytecode" "1.5.9"
121+
"@webassemblyjs/ieee754" "1.5.9"
122+
"@webassemblyjs/leb128" "1.5.9"
123123

124-
"@webassemblyjs/wasm-opt@1.5.8":
125-
version "1.5.8"
126-
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.8.tgz#a3a0d00d98dee0f3cf2ae41084eb62715a39242c"
124+
"@webassemblyjs/wasm-opt@1.5.9":
125+
version "1.5.9"
126+
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.9.tgz#ccac17c41a044c167bc95d3e8645cf889a137ce5"
127127
dependencies:
128-
"@webassemblyjs/ast" "1.5.8"
129-
"@webassemblyjs/helper-buffer" "1.5.8"
130-
"@webassemblyjs/wasm-gen" "1.5.8"
131-
"@webassemblyjs/wasm-parser" "1.5.8"
128+
"@webassemblyjs/ast" "1.5.9"
129+
"@webassemblyjs/helper-buffer" "1.5.9"
130+
"@webassemblyjs/wasm-gen" "1.5.9"
131+
"@webassemblyjs/wasm-parser" "1.5.9"
132132
debug "^3.1.0"
133133

134-
"@webassemblyjs/wasm-parser@1.5.8":
135-
version "1.5.8"
136-
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.8.tgz#a258a7fd15bd57597e4211d9068639807546555b"
137-
dependencies:
138-
"@webassemblyjs/ast" "1.5.8"
139-
"@webassemblyjs/helper-api-error" "1.5.8"
140-
"@webassemblyjs/helper-wasm-bytecode" "1.5.8"
141-
"@webassemblyjs/leb128" "1.5.8"
142-
"@webassemblyjs/wasm-parser" "1.5.8"
143-
144-
"@webassemblyjs/wast-parser@1.5.8":
145-
version "1.5.8"
146-
resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.5.8.tgz#85705659e15d19b89af38a8d6803d720bb0493cf"
147-
dependencies:
148-
"@webassemblyjs/ast" "1.5.8"
149-
"@webassemblyjs/floating-point-hex-parser" "1.5.8"
150-
"@webassemblyjs/helper-api-error" "1.5.8"
151-
"@webassemblyjs/helper-code-frame" "1.5.8"
152-
"@webassemblyjs/helper-fsm" "1.5.8"
134+
"@webassemblyjs/wasm-parser@1.5.9":
135+
version "1.5.9"
136+
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.9.tgz#ddab84da4957b64aafbc61e4ab706cc667082f32"
137+
dependencies:
138+
"@webassemblyjs/ast" "1.5.9"
139+
"@webassemblyjs/helper-api-error" "1.5.9"
140+
"@webassemblyjs/helper-wasm-bytecode" "1.5.9"
141+
"@webassemblyjs/ieee754" "1.5.9"
142+
"@webassemblyjs/leb128" "1.5.9"
143+
"@webassemblyjs/wasm-parser" "1.5.9"
144+
145+
"@webassemblyjs/wast-parser@1.5.9":
146+
version "1.5.9"
147+
resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.5.9.tgz#193d24ccf4742a5f8f1915936680ab2314011df2"
148+
dependencies:
149+
"@webassemblyjs/ast" "1.5.9"
150+
"@webassemblyjs/floating-point-hex-parser" "1.5.9"
151+
"@webassemblyjs/helper-api-error" "1.5.9"
152+
"@webassemblyjs/helper-code-frame" "1.5.9"
153+
"@webassemblyjs/helper-fsm" "1.5.9"
153154
long "^3.2.0"
154155
mamacro "^0.0.3"
155156

156-
"@webassemblyjs/wast-printer@1.5.8":
157-
version "1.5.8"
158-
resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.5.8.tgz#0f83aa67eddf377dd1d6205d4a4ac976db60e1f6"
157+
"@webassemblyjs/wast-printer@1.5.9":
158+
version "1.5.9"
159+
resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.5.9.tgz#16605d90a481c01a130b7c4edeb2bce503787eb4"
159160
dependencies:
160-
"@webassemblyjs/ast" "1.5.8"
161-
"@webassemblyjs/wast-parser" "1.5.8"
161+
"@webassemblyjs/ast" "1.5.9"
162+
"@webassemblyjs/wast-parser" "1.5.9"
162163
long "^3.2.0"
163164

164165
abab@^1.0.4:

0 commit comments

Comments
 (0)