Skip to content

Commit

Permalink
Merge pull request #7431 from xtuc/fix-wasm-preserve-global-order
Browse files Browse the repository at this point in the history
wasm: preserve global ordering
  • Loading branch information
sokra committed May 29, 2018
2 parents b80296f + 1842936 commit d2aca56
Show file tree
Hide file tree
Showing 7 changed files with 126 additions and 95 deletions.
7 changes: 7 additions & 0 deletions lib/wasm/WebAssemblyGenerator.js
Expand Up @@ -207,6 +207,13 @@ const rewriteImportedGlobals = state => bin => {

path.remove();
}
},

// in order to preserve non-imported global's order we need to re-inject
// those as well
Global(path) {
newGlobals.push(path.node);
path.remove();
}
});

Expand Down
8 changes: 4 additions & 4 deletions package.json
Expand Up @@ -5,10 +5,10 @@
"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.5.8",
"@webassemblyjs/wasm-edit": "1.5.8",
"@webassemblyjs/wasm-opt": "1.5.8",
"@webassemblyjs/wasm-parser": "1.5.8",
"@webassemblyjs/ast": "1.5.9",
"@webassemblyjs/wasm-edit": "1.5.9",
"@webassemblyjs/wasm-opt": "1.5.9",
"@webassemblyjs/wasm-parser": "1.5.9",
"acorn": "^5.0.0",
"acorn-dynamic-import": "^3.0.0",
"ajv": "^6.1.0",
Expand Down
2 changes: 2 additions & 0 deletions test/cases/wasm/imported-global-preserve-ordering/env.js
@@ -0,0 +1,2 @@
export const a = 1;
export const b = 2;
6 changes: 6 additions & 0 deletions test/cases/wasm/imported-global-preserve-ordering/index.js
@@ -0,0 +1,6 @@
it("should preserve the ordering of globals", function() {
return import("./module.wat").then(function(e) {
expect(e.c).toBe(3);
expect(e.d).toBe(4);
});
});
10 changes: 10 additions & 0 deletions test/cases/wasm/imported-global-preserve-ordering/module.wat
@@ -0,0 +1,10 @@
(module
(import "./env.js" "a" (global i32))
(import "./env.js" "b" (global i32))

(global $c i32 (i32.const 3))
(global $d i32 (i32.const 4))

(export "c" (global $c))
(export "d" (global $d))
)
@@ -0,0 +1,5 @@
var supportsWebAssembly = require("../../../helpers/supportsWebAssembly");

module.exports = function(config) {
return supportsWebAssembly();
};
183 changes: 92 additions & 91 deletions yarn.lock
Expand Up @@ -34,131 +34,132 @@
version "1.0.2"
resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.2.tgz#e13182e1b69871a422d7863e11a4a6f5b814a4bd"

"@webassemblyjs/ast@1.5.8":
version "1.5.8"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.5.8.tgz#f75ac7e7602b7833abd5d53951baae8a07ebb5df"
"@webassemblyjs/ast@1.5.9":
version "1.5.9"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.5.9.tgz#b2770182678691ab4949d593105c15d4074fedb6"
dependencies:
"@webassemblyjs/helper-module-context" "1.5.8"
"@webassemblyjs/helper-wasm-bytecode" "1.5.8"
"@webassemblyjs/wast-parser" "1.5.8"
"@webassemblyjs/helper-module-context" "1.5.9"
"@webassemblyjs/helper-wasm-bytecode" "1.5.9"
"@webassemblyjs/wast-parser" "1.5.9"
debug "^3.1.0"
mamacro "^0.0.3"

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

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

"@webassemblyjs/helper-buffer@1.5.8":
version "1.5.8"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.8.tgz#b1405e819a2c537964682fb70551796ab9602632"
"@webassemblyjs/helper-buffer@1.5.9":
version "1.5.9"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.9.tgz#90d99afcb0fdc1ee11bc403894f3ae37cd926a81"
dependencies:
debug "^3.1.0"

"@webassemblyjs/helper-code-frame@1.5.8":
version "1.5.8"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.8.tgz#6439de475720198a48fa8b4c38e41987798f73cc"
"@webassemblyjs/helper-code-frame@1.5.9":
version "1.5.9"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.9.tgz#b56ac06a39c3e1cfefcc421ade1ee471a738a570"
dependencies:
"@webassemblyjs/wast-printer" "1.5.8"
"@webassemblyjs/wast-printer" "1.5.9"

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

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

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

"@webassemblyjs/helper-wasm-section@1.5.8":
version "1.5.8"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.8.tgz#cda7fdb6f3b7b0d215c8f92b7435d47726822f49"
"@webassemblyjs/helper-wasm-section@1.5.9":
version "1.5.9"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.9.tgz#aec9486ab5d56e3cb5252a7ed88777b6792ac624"
dependencies:
"@webassemblyjs/ast" "1.5.8"
"@webassemblyjs/helper-buffer" "1.5.8"
"@webassemblyjs/helper-wasm-bytecode" "1.5.8"
"@webassemblyjs/wasm-gen" "1.5.8"
"@webassemblyjs/ast" "1.5.9"
"@webassemblyjs/helper-buffer" "1.5.9"
"@webassemblyjs/helper-wasm-bytecode" "1.5.9"
"@webassemblyjs/wasm-gen" "1.5.9"
debug "^3.1.0"

"@webassemblyjs/ieee754@1.5.8":
version "1.5.8"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.5.8.tgz#29383c7172e90121613d5614d532f22c19255c3b"
"@webassemblyjs/ieee754@1.5.9":
version "1.5.9"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.5.9.tgz#846856ece040c7debd5b5645b319c26523613bcf"
dependencies:
ieee754 "^1.1.11"

"@webassemblyjs/leb128@1.5.8":
version "1.5.8"
resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.5.8.tgz#657c48ef2537ea2921e897a50157be700bf24eac"
"@webassemblyjs/leb128@1.5.9":
version "1.5.9"
resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.5.9.tgz#7249443a0fd7574a7e3c1c39532535c735390bbc"
dependencies:
leb "^0.3.0"

"@webassemblyjs/wasm-edit@1.5.8":
version "1.5.8"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.8.tgz#592d3678894eaa2ee7e7c2c6a13c2a697db1aa7e"
dependencies:
"@webassemblyjs/ast" "1.5.8"
"@webassemblyjs/helper-buffer" "1.5.8"
"@webassemblyjs/helper-wasm-bytecode" "1.5.8"
"@webassemblyjs/helper-wasm-section" "1.5.8"
"@webassemblyjs/wasm-gen" "1.5.8"
"@webassemblyjs/wasm-opt" "1.5.8"
"@webassemblyjs/wasm-parser" "1.5.8"
"@webassemblyjs/wast-printer" "1.5.8"
"@webassemblyjs/wasm-edit@1.5.9":
version "1.5.9"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.9.tgz#9b8e054b2d305a7e0528088571c95904bd73df48"
dependencies:
"@webassemblyjs/ast" "1.5.9"
"@webassemblyjs/helper-buffer" "1.5.9"
"@webassemblyjs/helper-wasm-bytecode" "1.5.9"
"@webassemblyjs/helper-wasm-section" "1.5.9"
"@webassemblyjs/wasm-gen" "1.5.9"
"@webassemblyjs/wasm-opt" "1.5.9"
"@webassemblyjs/wasm-parser" "1.5.9"
"@webassemblyjs/wast-printer" "1.5.9"
debug "^3.1.0"

"@webassemblyjs/wasm-gen@1.5.8":
version "1.5.8"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.8.tgz#e94e034a45227aaa7c481b25c1aa9a0a00ab9488"
"@webassemblyjs/wasm-gen@1.5.9":
version "1.5.9"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.9.tgz#85e07c047fab917e06b18dee4d16342a2fd3c59c"
dependencies:
"@webassemblyjs/ast" "1.5.8"
"@webassemblyjs/helper-wasm-bytecode" "1.5.8"
"@webassemblyjs/ieee754" "1.5.8"
"@webassemblyjs/leb128" "1.5.8"
"@webassemblyjs/ast" "1.5.9"
"@webassemblyjs/helper-wasm-bytecode" "1.5.9"
"@webassemblyjs/ieee754" "1.5.9"
"@webassemblyjs/leb128" "1.5.9"

"@webassemblyjs/wasm-opt@1.5.8":
version "1.5.8"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.8.tgz#a3a0d00d98dee0f3cf2ae41084eb62715a39242c"
"@webassemblyjs/wasm-opt@1.5.9":
version "1.5.9"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.9.tgz#ccac17c41a044c167bc95d3e8645cf889a137ce5"
dependencies:
"@webassemblyjs/ast" "1.5.8"
"@webassemblyjs/helper-buffer" "1.5.8"
"@webassemblyjs/wasm-gen" "1.5.8"
"@webassemblyjs/wasm-parser" "1.5.8"
"@webassemblyjs/ast" "1.5.9"
"@webassemblyjs/helper-buffer" "1.5.9"
"@webassemblyjs/wasm-gen" "1.5.9"
"@webassemblyjs/wasm-parser" "1.5.9"
debug "^3.1.0"

"@webassemblyjs/wasm-parser@1.5.8":
version "1.5.8"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.8.tgz#a258a7fd15bd57597e4211d9068639807546555b"
dependencies:
"@webassemblyjs/ast" "1.5.8"
"@webassemblyjs/helper-api-error" "1.5.8"
"@webassemblyjs/helper-wasm-bytecode" "1.5.8"
"@webassemblyjs/leb128" "1.5.8"
"@webassemblyjs/wasm-parser" "1.5.8"

"@webassemblyjs/wast-parser@1.5.8":
version "1.5.8"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.5.8.tgz#85705659e15d19b89af38a8d6803d720bb0493cf"
dependencies:
"@webassemblyjs/ast" "1.5.8"
"@webassemblyjs/floating-point-hex-parser" "1.5.8"
"@webassemblyjs/helper-api-error" "1.5.8"
"@webassemblyjs/helper-code-frame" "1.5.8"
"@webassemblyjs/helper-fsm" "1.5.8"
"@webassemblyjs/wasm-parser@1.5.9":
version "1.5.9"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.9.tgz#ddab84da4957b64aafbc61e4ab706cc667082f32"
dependencies:
"@webassemblyjs/ast" "1.5.9"
"@webassemblyjs/helper-api-error" "1.5.9"
"@webassemblyjs/helper-wasm-bytecode" "1.5.9"
"@webassemblyjs/ieee754" "1.5.9"
"@webassemblyjs/leb128" "1.5.9"
"@webassemblyjs/wasm-parser" "1.5.9"

"@webassemblyjs/wast-parser@1.5.9":
version "1.5.9"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.5.9.tgz#193d24ccf4742a5f8f1915936680ab2314011df2"
dependencies:
"@webassemblyjs/ast" "1.5.9"
"@webassemblyjs/floating-point-hex-parser" "1.5.9"
"@webassemblyjs/helper-api-error" "1.5.9"
"@webassemblyjs/helper-code-frame" "1.5.9"
"@webassemblyjs/helper-fsm" "1.5.9"
long "^3.2.0"
mamacro "^0.0.3"

"@webassemblyjs/wast-printer@1.5.8":
version "1.5.8"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.5.8.tgz#0f83aa67eddf377dd1d6205d4a4ac976db60e1f6"
"@webassemblyjs/wast-printer@1.5.9":
version "1.5.9"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.5.9.tgz#16605d90a481c01a130b7c4edeb2bce503787eb4"
dependencies:
"@webassemblyjs/ast" "1.5.8"
"@webassemblyjs/wast-parser" "1.5.8"
"@webassemblyjs/ast" "1.5.9"
"@webassemblyjs/wast-parser" "1.5.9"
long "^3.2.0"

abab@^1.0.4:
Expand Down

0 comments on commit d2aca56

Please sign in to comment.