diff --git a/Cargo.lock b/Cargo.lock index 855ac28d57eb..a94dc14da253 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5641,18 +5641,18 @@ source = "git+https://github.com/mozilla-spidermonkey/wasm-tools?rev=1b7763faa48 [[package]] name = "wast" -version = "26.0.1" +version = "29.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3f174eed73e885ede6c8fcc3fbea8c3757afa521840676496cde56bb742ddab" +checksum = "dcf2268937131d63c3d833242bf5e075406f9ed868b4265f3280e15dac29ac18" dependencies = [ "leb128", ] [[package]] name = "wat" -version = "1.0.27" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b2dccbce4d0e14875091846e110a2369267b18ddd0d6423479b88dad914d71" +checksum = "0d11a88d953b298172d218d18f22853f4e6e12873b62755d05617b864d312c68" dependencies = [ "wast", ] diff --git a/js/src/rust/Cargo.toml b/js/src/rust/Cargo.toml index ddda7f0e71f7..b09a7fdcbf17 100644 --- a/js/src/rust/Cargo.toml +++ b/js/src/rust/Cargo.toml @@ -20,5 +20,5 @@ smoosh = ['jsrust_shared/smoosh'] jsrust_shared = { path = "./shared" } # Workaround for https://github.com/rust-lang/rust/issues/58393 mozglue-static = { path = "../../../mozglue/static/rust" } -wat = { version = "1.0.27" } +wat = { version = "1.0.30" } wasmparser = { version = "0.48.2" } diff --git a/third_party/rust/wast/.cargo-checksum.json b/third_party/rust/wast/.cargo-checksum.json index d3042b570570..b2fac3a96e91 100644 --- a/third_party/rust/wast/.cargo-checksum.json +++ b/third_party/rust/wast/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.toml":"94c2b7981a4352570870ff1604a8e9c8cd95838bdba1a998ac488ef662a161ff","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"7fd991b3784666e241e704e669a67ca97ab91bbb621b6bd95c8e4eb299a2ff49","src/ast/alias.rs":"5c42e18232b44f3bf1c42370a86c4788e9f616906ef6803dfb085e325293e67b","src/ast/assert_expr.rs":"f5a83d8fd33c2db4dc09885367bf33284a5510f6eda0e882da0c37324e23c97f","src/ast/custom.rs":"2fedf0353cbb2bd3761b5070814acc7970b6fb73b42427b1912fcb6358c297e3","src/ast/event.rs":"07a090fa366769fd30690d85ea1c73260929dd07c96d9938a6597a263d6c6f09","src/ast/export.rs":"bfa6479e41ed76225c9206e3b697be65b0bba760742f34b252ab01f440b3fc68","src/ast/expr.rs":"962932708431bd800f8b37744c1d211d400e98b4c7606e82c04b86a04f5226ba","src/ast/func.rs":"be776bf25f4434006496b27d56d2e5472946e15079a4a832452c374789868d75","src/ast/global.rs":"4d98799142d95b450bc5a281f0361b5fb7d3553b84305802c27cf3767c2ecdb4","src/ast/import.rs":"0ba4f5df86486c45495c959d32ab9d0c2d1a36602f20592501b003700baed8d9","src/ast/instance.rs":"e0f3c7bb43d9737da290e986cb985d4966029e0d799368cdc6e8834c0fbaddbe","src/ast/memory.rs":"a8e9924ddf4eaf1938d72b45d6a7e00d642c2ad913a7fdcde11c754750f2c48f","src/ast/mod.rs":"ac9c2abc170c1f54777a38be8290765104d15d0460103d4a239fc7397aa5ef74","src/ast/module.rs":"d3fa2ffb15c683de850c48d2b1196f9b28fe943d0a82d100ec7781abb2719275","src/ast/nested_module.rs":"4825e2b34c213132e231018234557f03d99b11c3e41e99bac57d4939c554b98c","src/ast/table.rs":"decc30ef32f4b0020a535a17ef02df8dc89e71108d5fd51e074ad874cfd1d5c3","src/ast/token.rs":"b878b33239899b5fa27bfebffbef309476dd0b33d256e2ad7d13160f73b61f02","src/ast/types.rs":"e8ceb9f6d1629df7bbd0263f61152a7a8de64f06467db4bec8696d4a4902dab7","src/ast/wast.rs":"9e64d00baf809d09181a06073a3fa9ac5907ac8248336cfd2089735d017075e3","src/binary.rs":"dbda812f21e321400be6fe734acf6cc2ca2e1463b63df16d9f8d9daf31fb139c","src/lexer.rs":"b4d96a8e9ff5da6d654e0acf86dfd1284ece40c8c2860eb708afb6430b70a82c","src/lib.rs":"cfbef3701dabcb2394f6207ac637926e6e25b015b7e429e35a8cfea4567735d6","src/parser.rs":"6dccadd316136e3d927e9a91220f0ec4c8d1f7f18c8cd50fd069e3fce8253e2b","src/resolve/deinline_import_export.rs":"8d06d0fe3d2ecb33570667a1a8a84434ecbbbeadb38eed1d2932424ccb0f4942","src/resolve/expand.rs":"b96dca4fbb4369a37eaa3c461bf6b2b562bb54ec107ef3d94bdf1c964f7b555b","src/resolve/gensym.rs":"252b82233c31d15a29a0d185db03d38fc94bbd7e995d26b06da72a5d088f4eb3","src/resolve/mod.rs":"a781455f48456485e4f1aa071c4264ea87d66986c80fbfbd695be4d4455ff31e","src/resolve/names.rs":"b386a9858c5cf2b73316bd1b60d2e6875457e24fc777565b057eff626afbed44","tests/annotations.rs":"2a328feddb1e33d8ca084ac588ff58d08ab04f220fadea95485b60823069ec14","tests/comments.rs":"14104ab95b99f0402dcec15988c592aec760bfbccfedc9e532e4bf06afd0b836","tests/parse-fail.rs":"0f1d5dffd1e6145105571222096703c89c4f4a46e25c848faa730f731155ea1c","tests/parse-fail/bad-index.wat":"d21489daeec3a35327dcc9e2ba2d0acdd05f4aeaff2272cca608fda4d2338497","tests/parse-fail/bad-index.wat.err":"b66851e048a20240c3dc4c2a1a991436daf688a62fa94ff8f63a908fcaee8a9a","tests/parse-fail/bad-name.wat":"e5ff5d410007779a0de6609ea4cc693f0e603d36a106b8f5098c1980dd9f8124","tests/parse-fail/bad-name.wat.err":"fb5638476c1b85d9d1919e3dbcb0f16f82d088a4a22d4a0c186d7b8ba6e1902b","tests/parse-fail/bad-name2.wat":"5a6a4d0c19e5f2e48d7cebf361aca9b9000b7ef0c652997b5bd0ffaadbd2ca8a","tests/parse-fail/bad-name2.wat.err":"129707cce45f1e3cfb3e2ca5c702182e16ca5eeb2dbb2edd0710b004a8e194a5","tests/parse-fail/bad-name3.wat":"c19133d738cc84e9174301f27d4050c216bda81c7e9918d03ac792b088f24a05","tests/parse-fail/bad-name3.wat.err":"84ea63d40a619a0782ec6e94fce63921188ab87b1c3875eacae0a371144ed83a","tests/parse-fail/block1.wat":"91e74b5c3b43be692e7a6ae74fbfa674c4b6197299eb61338c4eccf282b18f17","tests/parse-fail/block1.wat.err":"40a083ae496b41dee7002cc6a664c5db0c5e4d904ae03b815773a769c4493fca","tests/parse-fail/block2.wat":"a8c07b4c09d51f10a8ffdf19806586022552398701cd90eb6d09816d45df06e5","tests/parse-fail/block2.wat.err":"33c842ec5dd0f2fdd3a9ce8187dd98b45ceee48c12810802af809d05b9cd25e9","tests/parse-fail/block3.wat":"29739abfbabd7c55f00ddfbbb9ebd818b4a114ef2336d50514f0842f7e075905","tests/parse-fail/block3.wat.err":"fc667ae2e71a260f62a3c7393bc97272e7c0ff38b17594f4370847b8a5019060","tests/parse-fail/inline1.wat":"4e9767d67207aace2ac5e6f63a30e7510e4aa245ba35420539509e2254470272","tests/parse-fail/inline1.wat.err":"0143017a9825e518baa6009bae2c8d63520051dedd3437705bbe36b038a57f41","tests/parse-fail/string1.wat":"620d46d585ce94b382b5fde628c1399f3e562014b7a44af46e92f7bd045ca86e","tests/parse-fail/string1.wat.err":"fc53f3a1c4a65d8f25e5af51dec7699f45cecba114ca9c7871781bc70f664320","tests/parse-fail/string10.wat":"f7409dd45e153a1b11cb23e38f4ed87da12bedde38f8f0ccfe91037b0a4d97bd","tests/parse-fail/string10.wat.err":"ce677db5e37e0ed81ca357ed6b5edb21d85c27303ee194855bea7a88457efb6a","tests/parse-fail/string11.wat":"f6e0400b8c6a2014efa1ac676c567e140d8f86b5f4d5129773e6d67af537b615","tests/parse-fail/string11.wat.err":"4c6a550d29eda38a4e1bf7a589596f11655dc779479d7b8d466cfc53f815a742","tests/parse-fail/string12.wat":"23e30070eef22271651cce096a801fc4f79f3c37343c88bb8d2fc99b32d3b8b9","tests/parse-fail/string12.wat.err":"6e9a2ec052068bb234da56404087c03a66705846d82c095605530243fdce38f3","tests/parse-fail/string13.wat":"81a305b981159ee10e140749ea3220c9edaaff53605e63c21995de47382b5faf","tests/parse-fail/string13.wat.err":"ac0c51a1964abc1a1104858d16c124a4e5495705bc3adc0ab123cd0ba8ab9ee9","tests/parse-fail/string14.wat":"c45c2cc9f7afbfbd4be8e513106d22f7e5e817091448576c6bdf0701b81d95dd","tests/parse-fail/string14.wat.err":"cc3f6b0c093d878373ab29726b8ac0620b982a4842ec521b8661e864eed1ef05","tests/parse-fail/string15.wat":"b5e0d5ade40de53b2d767a132e28376bb8c7a6f6238c4d8c248ae717c41d7f1f","tests/parse-fail/string15.wat.err":"6549a0575bc228c2e12ec197e40bb5fdc665325a0242ca8a62e7a8dc5de6aee8","tests/parse-fail/string16.wat":"38c3688cee80a9d089d239aa06eb1d27c5364ad2bd270aca57d05997c20aa682","tests/parse-fail/string16.wat.err":"4274b3bbe4df4cf0373619b1fcd082d0c802990817d2aca26ed885168c80e489","tests/parse-fail/string2.wat":"1172964aed31537b8c466d1f045f3e756926e7b221f80b2aff4a9a6721ea0beb","tests/parse-fail/string2.wat.err":"4618d3b20a78a077337eb5d6cae14ac39d9853762f011fbd23cff8921618dbde","tests/parse-fail/string3.wat":"07e0fbcd6270c1db100917c151ee4ac3f935e4ee1b27bce3c453b22b4b74f4d6","tests/parse-fail/string3.wat.err":"84833a2f45216097a871ae88beb515ebeb8dab5d7c007ec98f1fcf1b20f7558d","tests/parse-fail/string4.wat":"c970da2051b0613bdd1de4664f10424e14f2ebabe604175d4fb9b763b37af577","tests/parse-fail/string4.wat.err":"406706594d305c560fabd66417ad4fc276939990b5e701bd9d13fc223d207219","tests/parse-fail/string5.wat":"386cf314bb05acdaaabdf4da1caf140167271a26bd08bf34c3a7427d4bc4431f","tests/parse-fail/string5.wat.err":"1e56b44a23a37b2b2ad05aa9dd7e1e18191b5cc22151f93bbcf9d618779a57bd","tests/parse-fail/string6.wat":"8f1fe2825ff96f2acee9130a7721f86fcc93c221baa9411bf1fb6f0870d38ccb","tests/parse-fail/string6.wat.err":"d55dfd84d94e893f167ae73b7a080aefb2bfb05cc8a1ec201c4d3066fb8549b4","tests/parse-fail/string7.wat":"b12f8c75313d7f834489d3c353422f90bc945b37139586446eda82e334a97cde","tests/parse-fail/string7.wat.err":"4cee0ca61992c249dd0faaf2529a073cf8deeb36111a3f69b43695e5682560a2","tests/parse-fail/string8.wat":"4c2e0e1f883bb4e8cba9313497ed792130e5848e62bde7716102788d7467be10","tests/parse-fail/string8.wat.err":"840c6def7c60dd7c2b7261549cab435ba78c9b3a937adf6d5d9595ff8af01c91","tests/parse-fail/string9.wat":"2b7670caed2b0688d535de6e4e416f35fa717cfbe096a6cc764a669085c8f52f","tests/parse-fail/string9.wat.err":"37b5a9c3af9631500f31f9e5e3efa821b8d96063c57d60fd01df6be6a5c323e1","tests/parse-fail/unbalanced.wat":"f664fbef53a0308f864ba496d38044eb90482636e32586512939d4930729f3fe","tests/parse-fail/unbalanced.wat.err":"aba579f7b836856e69afe05da8328aabe0643d94e369898e686aa7bb0b07e9c9","tests/recursive.rs":"ad8a2b07bf955121a7c9e326ed35f9b2bc56b440c8cc0bbde24d423a79945c1a"},"package":"b3f174eed73e885ede6c8fcc3fbea8c3757afa521840676496cde56bb742ddab"} \ No newline at end of file +{"files":{"Cargo.toml":"688f10130fb07c12b110d8e2cdf9336b69ae49fe7db2ce5b4a7347657e04a43f","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"7fd991b3784666e241e704e669a67ca97ab91bbb621b6bd95c8e4eb299a2ff49","src/ast/alias.rs":"5c42e18232b44f3bf1c42370a86c4788e9f616906ef6803dfb085e325293e67b","src/ast/assert_expr.rs":"f5a83d8fd33c2db4dc09885367bf33284a5510f6eda0e882da0c37324e23c97f","src/ast/custom.rs":"2fedf0353cbb2bd3761b5070814acc7970b6fb73b42427b1912fcb6358c297e3","src/ast/event.rs":"07a090fa366769fd30690d85ea1c73260929dd07c96d9938a6597a263d6c6f09","src/ast/export.rs":"bfa6479e41ed76225c9206e3b697be65b0bba760742f34b252ab01f440b3fc68","src/ast/expr.rs":"35571fe84cda065a69182d12178beb7f1cf7dc0880114120a2b619a5c0608d44","src/ast/func.rs":"be776bf25f4434006496b27d56d2e5472946e15079a4a832452c374789868d75","src/ast/global.rs":"4d98799142d95b450bc5a281f0361b5fb7d3553b84305802c27cf3767c2ecdb4","src/ast/import.rs":"0ba4f5df86486c45495c959d32ab9d0c2d1a36602f20592501b003700baed8d9","src/ast/instance.rs":"e0f3c7bb43d9737da290e986cb985d4966029e0d799368cdc6e8834c0fbaddbe","src/ast/memory.rs":"a6d46ee4ffb3933671a2adbd8bdeb9ccfbbcd0b3a9b801f84f1f5f6cd914d2f8","src/ast/mod.rs":"8b61af930f4917bc32bb163f75933f17709837e518a36ea9fd20a801eaf22095","src/ast/module.rs":"d3fa2ffb15c683de850c48d2b1196f9b28fe943d0a82d100ec7781abb2719275","src/ast/nested_module.rs":"4825e2b34c213132e231018234557f03d99b11c3e41e99bac57d4939c554b98c","src/ast/table.rs":"decc30ef32f4b0020a535a17ef02df8dc89e71108d5fd51e074ad874cfd1d5c3","src/ast/token.rs":"b878b33239899b5fa27bfebffbef309476dd0b33d256e2ad7d13160f73b61f02","src/ast/types.rs":"bfb0b5db1bff0678648b7dbdd82935771477de662e67d1596f7195e6fe3a4996","src/ast/wast.rs":"9e64d00baf809d09181a06073a3fa9ac5907ac8248336cfd2089735d017075e3","src/binary.rs":"57a2fcae3482fd01496732f2c3ebc2789b093be209c927db48f47dfc90c01cc4","src/lexer.rs":"b4d96a8e9ff5da6d654e0acf86dfd1284ece40c8c2860eb708afb6430b70a82c","src/lib.rs":"cfbef3701dabcb2394f6207ac637926e6e25b015b7e429e35a8cfea4567735d6","src/parser.rs":"6dccadd316136e3d927e9a91220f0ec4c8d1f7f18c8cd50fd069e3fce8253e2b","src/resolve/deinline_import_export.rs":"238c8377c8c6e676a27a8d065a2b1aaf6c2b2f55ba7c9a47a3dad8d3f3e31e98","src/resolve/expand.rs":"30e302216321655cc2b99fc7f8b4b1be126408b8476c15e9cc52cacbbb7e6d39","src/resolve/gensym.rs":"252b82233c31d15a29a0d185db03d38fc94bbd7e995d26b06da72a5d088f4eb3","src/resolve/mod.rs":"a781455f48456485e4f1aa071c4264ea87d66986c80fbfbd695be4d4455ff31e","src/resolve/names.rs":"e6405dd925b381a40f61fe138c8de7f6f6640b63aefde99b15d783ce61d19370","tests/annotations.rs":"2a328feddb1e33d8ca084ac588ff58d08ab04f220fadea95485b60823069ec14","tests/comments.rs":"14104ab95b99f0402dcec15988c592aec760bfbccfedc9e532e4bf06afd0b836","tests/parse-fail.rs":"0f1d5dffd1e6145105571222096703c89c4f4a46e25c848faa730f731155ea1c","tests/parse-fail/bad-index.wat":"d21489daeec3a35327dcc9e2ba2d0acdd05f4aeaff2272cca608fda4d2338497","tests/parse-fail/bad-index.wat.err":"b66851e048a20240c3dc4c2a1a991436daf688a62fa94ff8f63a908fcaee8a9a","tests/parse-fail/bad-name.wat":"e5ff5d410007779a0de6609ea4cc693f0e603d36a106b8f5098c1980dd9f8124","tests/parse-fail/bad-name.wat.err":"fb5638476c1b85d9d1919e3dbcb0f16f82d088a4a22d4a0c186d7b8ba6e1902b","tests/parse-fail/bad-name2.wat":"5a6a4d0c19e5f2e48d7cebf361aca9b9000b7ef0c652997b5bd0ffaadbd2ca8a","tests/parse-fail/bad-name2.wat.err":"129707cce45f1e3cfb3e2ca5c702182e16ca5eeb2dbb2edd0710b004a8e194a5","tests/parse-fail/bad-name3.wat":"c19133d738cc84e9174301f27d4050c216bda81c7e9918d03ac792b088f24a05","tests/parse-fail/bad-name3.wat.err":"84ea63d40a619a0782ec6e94fce63921188ab87b1c3875eacae0a371144ed83a","tests/parse-fail/block1.wat":"91e74b5c3b43be692e7a6ae74fbfa674c4b6197299eb61338c4eccf282b18f17","tests/parse-fail/block1.wat.err":"40a083ae496b41dee7002cc6a664c5db0c5e4d904ae03b815773a769c4493fca","tests/parse-fail/block2.wat":"a8c07b4c09d51f10a8ffdf19806586022552398701cd90eb6d09816d45df06e5","tests/parse-fail/block2.wat.err":"33c842ec5dd0f2fdd3a9ce8187dd98b45ceee48c12810802af809d05b9cd25e9","tests/parse-fail/block3.wat":"29739abfbabd7c55f00ddfbbb9ebd818b4a114ef2336d50514f0842f7e075905","tests/parse-fail/block3.wat.err":"fc667ae2e71a260f62a3c7393bc97272e7c0ff38b17594f4370847b8a5019060","tests/parse-fail/inline1.wat":"4e9767d67207aace2ac5e6f63a30e7510e4aa245ba35420539509e2254470272","tests/parse-fail/inline1.wat.err":"0143017a9825e518baa6009bae2c8d63520051dedd3437705bbe36b038a57f41","tests/parse-fail/string1.wat":"620d46d585ce94b382b5fde628c1399f3e562014b7a44af46e92f7bd045ca86e","tests/parse-fail/string1.wat.err":"fc53f3a1c4a65d8f25e5af51dec7699f45cecba114ca9c7871781bc70f664320","tests/parse-fail/string10.wat":"f7409dd45e153a1b11cb23e38f4ed87da12bedde38f8f0ccfe91037b0a4d97bd","tests/parse-fail/string10.wat.err":"ce677db5e37e0ed81ca357ed6b5edb21d85c27303ee194855bea7a88457efb6a","tests/parse-fail/string11.wat":"f6e0400b8c6a2014efa1ac676c567e140d8f86b5f4d5129773e6d67af537b615","tests/parse-fail/string11.wat.err":"4c6a550d29eda38a4e1bf7a589596f11655dc779479d7b8d466cfc53f815a742","tests/parse-fail/string12.wat":"23e30070eef22271651cce096a801fc4f79f3c37343c88bb8d2fc99b32d3b8b9","tests/parse-fail/string12.wat.err":"6e9a2ec052068bb234da56404087c03a66705846d82c095605530243fdce38f3","tests/parse-fail/string13.wat":"81a305b981159ee10e140749ea3220c9edaaff53605e63c21995de47382b5faf","tests/parse-fail/string13.wat.err":"ac0c51a1964abc1a1104858d16c124a4e5495705bc3adc0ab123cd0ba8ab9ee9","tests/parse-fail/string14.wat":"c45c2cc9f7afbfbd4be8e513106d22f7e5e817091448576c6bdf0701b81d95dd","tests/parse-fail/string14.wat.err":"cc3f6b0c093d878373ab29726b8ac0620b982a4842ec521b8661e864eed1ef05","tests/parse-fail/string15.wat":"b5e0d5ade40de53b2d767a132e28376bb8c7a6f6238c4d8c248ae717c41d7f1f","tests/parse-fail/string15.wat.err":"6549a0575bc228c2e12ec197e40bb5fdc665325a0242ca8a62e7a8dc5de6aee8","tests/parse-fail/string16.wat":"38c3688cee80a9d089d239aa06eb1d27c5364ad2bd270aca57d05997c20aa682","tests/parse-fail/string16.wat.err":"4274b3bbe4df4cf0373619b1fcd082d0c802990817d2aca26ed885168c80e489","tests/parse-fail/string2.wat":"1172964aed31537b8c466d1f045f3e756926e7b221f80b2aff4a9a6721ea0beb","tests/parse-fail/string2.wat.err":"4618d3b20a78a077337eb5d6cae14ac39d9853762f011fbd23cff8921618dbde","tests/parse-fail/string3.wat":"07e0fbcd6270c1db100917c151ee4ac3f935e4ee1b27bce3c453b22b4b74f4d6","tests/parse-fail/string3.wat.err":"84833a2f45216097a871ae88beb515ebeb8dab5d7c007ec98f1fcf1b20f7558d","tests/parse-fail/string4.wat":"c970da2051b0613bdd1de4664f10424e14f2ebabe604175d4fb9b763b37af577","tests/parse-fail/string4.wat.err":"406706594d305c560fabd66417ad4fc276939990b5e701bd9d13fc223d207219","tests/parse-fail/string5.wat":"386cf314bb05acdaaabdf4da1caf140167271a26bd08bf34c3a7427d4bc4431f","tests/parse-fail/string5.wat.err":"1e56b44a23a37b2b2ad05aa9dd7e1e18191b5cc22151f93bbcf9d618779a57bd","tests/parse-fail/string6.wat":"8f1fe2825ff96f2acee9130a7721f86fcc93c221baa9411bf1fb6f0870d38ccb","tests/parse-fail/string6.wat.err":"d55dfd84d94e893f167ae73b7a080aefb2bfb05cc8a1ec201c4d3066fb8549b4","tests/parse-fail/string7.wat":"b12f8c75313d7f834489d3c353422f90bc945b37139586446eda82e334a97cde","tests/parse-fail/string7.wat.err":"4cee0ca61992c249dd0faaf2529a073cf8deeb36111a3f69b43695e5682560a2","tests/parse-fail/string8.wat":"4c2e0e1f883bb4e8cba9313497ed792130e5848e62bde7716102788d7467be10","tests/parse-fail/string8.wat.err":"840c6def7c60dd7c2b7261549cab435ba78c9b3a937adf6d5d9595ff8af01c91","tests/parse-fail/string9.wat":"2b7670caed2b0688d535de6e4e416f35fa717cfbe096a6cc764a669085c8f52f","tests/parse-fail/string9.wat.err":"37b5a9c3af9631500f31f9e5e3efa821b8d96063c57d60fd01df6be6a5c323e1","tests/parse-fail/unbalanced.wat":"f664fbef53a0308f864ba496d38044eb90482636e32586512939d4930729f3fe","tests/parse-fail/unbalanced.wat.err":"aba579f7b836856e69afe05da8328aabe0643d94e369898e686aa7bb0b07e9c9","tests/recursive.rs":"ad8a2b07bf955121a7c9e326ed35f9b2bc56b440c8cc0bbde24d423a79945c1a"},"package":"dcf2268937131d63c3d833242bf5e075406f9ed868b4265f3280e15dac29ac18"} \ No newline at end of file diff --git a/third_party/rust/wast/Cargo.toml b/third_party/rust/wast/Cargo.toml index ad87c5d83a7b..897bf9217fb3 100644 --- a/third_party/rust/wast/Cargo.toml +++ b/third_party/rust/wast/Cargo.toml @@ -13,7 +13,7 @@ [package] edition = "2018" name = "wast" -version = "26.0.1" +version = "29.0.0" authors = ["Alex Crichton "] description = "Customizable Rust parsers for the WebAssembly Text formats WAT and WAST\n" homepage = "https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wast" diff --git a/third_party/rust/wast/src/ast/expr.rs b/third_party/rust/wast/src/ast/expr.rs index b771c960978e..1dd3bd0ebda6 100644 --- a/third_party/rust/wast/src/ast/expr.rs +++ b/third_party/rust/wast/src/ast/expr.rs @@ -84,7 +84,9 @@ enum If<'a> { enum Try<'a> { /// Next thing to parse is the `do` block. Do(Instruction<'a>), - /// Next thing to parse is the `catch` block. + /// Next thing to parse is `catch`/`catch_all`, or `unwind`. + CatchOrUnwind, + /// Next thing to parse is a `catch` block or `catch_all`. Catch, /// This `try` statement has finished parsing and if anything remains it's a /// syntax error. @@ -195,8 +197,8 @@ impl<'a> ExpressionParser<'a> { Level::Try(Try::Do(_)) => { return Err(parser.error("previous `try` had no `do`")); } - Level::Try(Try::Catch) => { - return Err(parser.error("previous `try` had no `catch`")); + Level::Try(Try::CatchOrUnwind) => { + return Err(parser.error("previous `try` had no `catch`, `catch_all`, or `unwind`")); } Level::Try(_) => { self.instrs.push(Instruction::End(None)); @@ -305,7 +307,7 @@ impl<'a> ExpressionParser<'a> { /// than an `if` as the syntactic form is: /// /// ```wat - /// (try (do $do) (catch $catch)) + /// (try (do $do) (catch $event $catch)) /// ``` /// /// where the `do` and `catch` keywords are mandatory, even for an empty @@ -328,7 +330,7 @@ impl<'a> ExpressionParser<'a> { if parser.parse::>()?.is_some() { // The state is advanced here only if the parse succeeds in // order to strictly require the keyword. - *i = Try::Catch; + *i = Try::CatchOrUnwind; self.stack.push(Level::TryArm); return Ok(true); } @@ -338,10 +340,26 @@ impl<'a> ExpressionParser<'a> { return Ok(false); } - // `catch` handled similar to `do`, including requiring the keyword. - if let Try::Catch = i { - self.instrs.push(Instruction::Catch); + // After a try's `do`, there are several possible kinds of handlers. + if let Try::CatchOrUnwind = i { + // `catch` may be followed by more `catch`s or `catch_all`. if parser.parse::>()?.is_some() { + let evt = parser.parse::>()?; + self.instrs.push(Instruction::Catch(evt)); + *i = Try::Catch; + self.stack.push(Level::TryArm); + return Ok(true); + } + // `catch_all` can only come at the end and has no argument. + if parser.parse::>()?.is_some() { + self.instrs.push(Instruction::CatchAll); + *i = Try::End; + self.stack.push(Level::TryArm); + return Ok(true); + } + // `unwind` is similar to `catch_all`. + if parser.parse::>()?.is_some() { + self.instrs.push(Instruction::Unwind); *i = Try::End; self.stack.push(Level::TryArm); return Ok(true); @@ -349,6 +367,23 @@ impl<'a> ExpressionParser<'a> { return Ok(false); } + if let Try::Catch = i { + if parser.parse::>()?.is_some() { + let evt = parser.parse::>()?; + self.instrs.push(Instruction::Catch(evt)); + *i = Try::Catch; + self.stack.push(Level::TryArm); + return Ok(true); + } + if parser.parse::>()?.is_some() { + self.instrs.push(Instruction::CatchAll); + *i = Try::End; + self.stack.push(Level::TryArm); + return Ok(true); + } + return Err(parser.error("unexpected items after `catch`")); + } + Err(parser.error("too many payloads inside of `(try)`")) } } @@ -997,11 +1032,12 @@ instructions! { V128Load64Zero(MemArg<8>) : [0xfd, 0xfd] : "v128.load64_zero", // Exception handling proposal + CatchAll : [0x05] : "catch_all", // Reuses the else opcode. Try(BlockType<'a>) : [0x06] : "try", - Catch : [0x07] : "catch", + Catch(ast::Index<'a>) : [0x07] : "catch", Throw(ast::Index<'a>) : [0x08] : "throw", - Rethrow : [0x09] : "rethrow", - BrOnExn(BrOnExn<'a>) : [0x0a] : "br_on_exn", + Rethrow(ast::Index<'a>) : [0x09] : "rethrow", + Unwind : [0x0a] : "unwind", } } diff --git a/third_party/rust/wast/src/ast/memory.rs b/third_party/rust/wast/src/ast/memory.rs index 70496778fbd1..a35f9e31cf50 100644 --- a/third_party/rust/wast/src/ast/memory.rs +++ b/third_party/rust/wast/src/ast/memory.rs @@ -1,5 +1,5 @@ use crate::ast::{self, kw}; -use crate::parser::{Parse, Parser, Result}; +use crate::parser::{Lookahead1, Parse, Parser, Peek, Result}; /// A defined WebAssembly memory instance inside of a module. #[derive(Debug)] @@ -33,7 +33,7 @@ pub enum MemoryKind<'a> { /// Whether or not this will be creating a 32-bit memory is_32: bool, /// The inline data specified for this memory - data: Vec<&'a [u8]>, + data: Vec>, }, } @@ -99,7 +99,7 @@ pub struct Data<'a> { /// Bytes for this `Data` segment, viewed as the concatenation of all the /// contained slices. - pub data: Vec<&'a [u8]>, + pub data: Vec>, } /// Different kinds of data segments, either passive or active. @@ -170,3 +170,83 @@ impl<'a> Parse<'a> for Data<'a> { }) } } + +/// Differnet ways the value of a data segment can be defined. +#[derive(Debug)] +#[allow(missing_docs)] +pub enum DataVal<'a> { + String(&'a [u8]), + Integral(Vec), +} + +impl DataVal<'_> { + /// Returns the length, in bytes, of the memory used to represent this data + /// value. + pub fn len(&self) -> usize { + match self { + DataVal::String(s) => s.len(), + DataVal::Integral(s) => s.len(), + } + } + + /// Pushes the value of this data value onto the provided list of bytes. + pub fn push_onto(&self, dst: &mut Vec) { + match self { + DataVal::String(s) => dst.extend_from_slice(s), + DataVal::Integral(s) => dst.extend_from_slice(s), + } + } +} + +impl<'a> Parse<'a> for DataVal<'a> { + fn parse(parser: Parser<'a>) -> Result { + if !parser.peek::() { + return Ok(DataVal::String(parser.parse()?)); + } + + return parser.parens(|p| { + let mut result = Vec::new(); + let mut lookahead = p.lookahead1(); + let l = &mut lookahead; + let r = &mut result; + if consume::(p, l, r, |u, v| v.push(u as u8))? + || consume::(p, l, r, |u, v| v.extend(&u.to_le_bytes()))? + || consume::(p, l, r, |u, v| v.extend(&u.to_le_bytes()))? + || consume::(p, l, r, |u, v| v.extend(&u.to_le_bytes()))? + || consume::(p, l, r, |u, v| { + v.extend(&u.bits.to_le_bytes()) + })? + || consume::(p, l, r, |u, v| { + v.extend(&u.bits.to_le_bytes()) + })? + || consume::(p, l, r, |u, v| { + v.extend(&u.to_le_bytes()) + })? + { + Ok(DataVal::Integral(result)) + } else { + Err(lookahead.error()) + } + }); + + fn consume<'a, T: Peek + Parse<'a>, U: Parse<'a>, F>( + parser: Parser<'a>, + lookahead: &mut Lookahead1<'a>, + dst: &mut Vec, + push: F, + ) -> Result + where + F: Fn(U, &mut Vec), + { + if !lookahead.peek::() { + return Ok(false); + } + parser.parse::()?; + while !parser.is_empty() { + let val = parser.parse::()?; + push(val, dst); + } + Ok(true) + } + } +} diff --git a/third_party/rust/wast/src/ast/mod.rs b/third_party/rust/wast/src/ast/mod.rs index bc86f2294121..aeb555896fea 100644 --- a/third_party/rust/wast/src/ast/mod.rs +++ b/third_party/rust/wast/src/ast/mod.rs @@ -35,6 +35,8 @@ /// } /// } /// ``` +/// +/// Note that the keyword name can only start with a lower-case letter, i.e. 'a'..'z'. #[macro_export] macro_rules! custom_keyword { ($name:ident) => { @@ -344,6 +346,7 @@ pub mod kw { custom_keyword!(binary); custom_keyword!(block); custom_keyword!(catch); + custom_keyword!(catch_all); custom_keyword!(code); custom_keyword!(data); custom_keyword!(declare); @@ -414,6 +417,7 @@ pub mod kw { custom_keyword!(table); custom_keyword!(then); custom_keyword!(r#try = "try"); + custom_keyword!(unwind); custom_keyword!(v128); } diff --git a/third_party/rust/wast/src/ast/types.rs b/third_party/rust/wast/src/ast/types.rs index 6a4a8d5faa13..59584d8595df 100644 --- a/third_party/rust/wast/src/ast/types.rs +++ b/third_party/rust/wast/src/ast/types.rs @@ -389,6 +389,8 @@ pub enum MemoryType { B64 { /// Limits on the page sizes of this memory limits: Limits64, + /// Whether or not this is a shared (atomic) memory type + shared: bool, }, } @@ -397,7 +399,8 @@ impl<'a> Parse<'a> for MemoryType { if parser.peek::() { parser.parse::()?; let limits = parser.parse()?; - Ok(MemoryType::B64 { limits }) + let shared = parser.parse::>()?.is_some(); + Ok(MemoryType::B64 { limits, shared }) } else { parser.parse::>()?; let limits = parser.parse()?; diff --git a/third_party/rust/wast/src/binary.rs b/third_party/rust/wast/src/binary.rs index 11a6c5128990..96ed7ef96170 100644 --- a/third_party/rust/wast/src/binary.rs +++ b/third_party/rust/wast/src/binary.rs @@ -61,15 +61,6 @@ fn encode_fields( e.custom_sections(BeforeFirst); - // let moduletys = modules - // .iter() - // .map(|m| match &m.kind { - // NestedModuleKind::Inline { ty, .. } => ty.as_ref().expect("type should be filled in"), - // _ => panic!("only inline modules should be present now"), - // }) - // .collect::>(); - // e.section_list(100, Module, &moduletys); - let mut items = fields .iter() .filter(|i| match i { @@ -106,13 +97,13 @@ fn encode_fields( } list!(1, Type); list!(2, Import); - list!(100, NestedModule, Module, |m| match &m.kind { + list!(14, NestedModule, Module, |m| match &m.kind { NestedModuleKind::Inline { ty, .. } => ty.as_ref().expect("type should be filled in"), _ => panic!("only inline modules should be present now"), }); - list!(101, Instance); - list!(102, Alias); + list!(15, Instance); + list!(16, Alias); } } @@ -132,7 +123,7 @@ fn encode_fields( if contains_bulk_memory(&funcs) { e.section(12, &data.len()); } - e.section_list(103, ModuleCode, &modules); + e.section_list(17, ModuleCode, &modules); e.section_list(10, Code, &funcs); e.section_list(11, Data, &data); @@ -450,8 +441,8 @@ impl Encode for Import<'_> { match self.field { Some(s) => s.encode(e), None => { - e.push(0x01); - e.push(0xc0); + e.push(0x00); + e.push(0xff); } } self.item.encode(e); @@ -547,8 +538,10 @@ impl Encode for MemoryType { max.encode(e); } } - MemoryType::B64 { limits } => { - let flags = (limits.max.is_some() as u8) | 0x04; + MemoryType::B64 { limits, shared } => { + let flag_max = limits.max.is_some() as u8; + let flag_shared = *shared as u8; + let flags = flag_max | (flag_shared << 1) | 0x04; e.push(flags); limits.min.encode(e); if let Some(max) = limits.max { @@ -651,6 +644,9 @@ impl Encode for Elem<'_> { fn encode(&self, e: &mut Vec) { // Try to switch element expressions to indices if we can which uses a // more MVP-compatible encoding. + // + // FIXME(WebAssembly/wabt#1447) ideally we wouldn't do this so we could + // be faithful to the original format. let mut to_encode = self.payload.clone(); if let ElemPayload::Exprs { ty: @@ -769,8 +765,8 @@ impl Encode for Data<'_> { } } self.data.iter().map(|l| l.len()).sum::().encode(e); - for list in self.data.iter() { - e.extend_from_slice(list); + for val in self.data.iter() { + val.push_onto(e); } } } diff --git a/third_party/rust/wast/src/resolve/deinline_import_export.rs b/third_party/rust/wast/src/resolve/deinline_import_export.rs index 99a1dc94e6ec..835d460afd58 100644 --- a/third_party/rust/wast/src/resolve/deinline_import_export.rs +++ b/third_party/rust/wast/src/resolve/deinline_import_export.rs @@ -77,6 +77,7 @@ pub fn run(fields: &mut Vec) { min: u64::from(pages), max: Some(u64::from(pages)), }, + shared: false, } }); let data = match mem::replace(&mut m.kind, kind) { @@ -90,11 +91,7 @@ pub fn run(fields: &mut Vec) { kind: DataKind::Active { memory: Index::Id(id), offset: Expression { - instrs: Box::new([if is_32 { - Instruction::I32Const(0) - } else { - Instruction::I64Const(0) - }]), + instrs: Box::new([Instruction::I32Const(0)]), }, }, data, diff --git a/third_party/rust/wast/src/resolve/expand.rs b/third_party/rust/wast/src/resolve/expand.rs index 64af4561af0a..b12b4dfc901c 100644 --- a/third_party/rust/wast/src/resolve/expand.rs +++ b/third_party/rust/wast/src/resolve/expand.rs @@ -363,6 +363,9 @@ impl<'a> Expander<'a> { ModuleField::Alias(a) => { let (_idx, ns) = Ns::from_export(&a.kind); self.record_defined(&a.id, ns); + if let Some(instance) = &a.instance { + self.record_missing(instance, Ns::Instance); + } } ModuleField::NestedModule(m) => { @@ -418,6 +421,121 @@ impl<'a> Expander<'a> { self.record_missing(&t.src, Ns::Table); self.record_missing(&t.dst, Ns::Table); } + + MemorySize(i) | MemoryGrow(i) | MemoryFill(i) => { + self.record_missing(&i.mem, Ns::Memory); + } + MemoryInit(i) => { + self.record_missing(&i.mem, Ns::Memory); + } + MemoryCopy(i) => { + self.record_missing(&i.src, Ns::Memory); + self.record_missing(&i.dst, Ns::Memory); + } + + I32Load(m) + | I64Load(m) + | F32Load(m) + | F64Load(m) + | I32Load8s(m) + | I32Load8u(m) + | I32Load16s(m) + | I32Load16u(m) + | I64Load8s(m) + | I64Load8u(m) + | I64Load16s(m) + | I64Load16u(m) + | I64Load32s(m) + | I64Load32u(m) + | I32Store(m) + | I64Store(m) + | F32Store(m) + | F64Store(m) + | I32Store8(m) + | I32Store16(m) + | I64Store8(m) + | I64Store16(m) + | I64Store32(m) + | I32AtomicLoad(m) + | I64AtomicLoad(m) + | I32AtomicLoad8u(m) + | I32AtomicLoad16u(m) + | I64AtomicLoad8u(m) + | I64AtomicLoad16u(m) + | I64AtomicLoad32u(m) + | I32AtomicStore(m) + | I64AtomicStore(m) + | I32AtomicStore8(m) + | I32AtomicStore16(m) + | I64AtomicStore8(m) + | I64AtomicStore16(m) + | I64AtomicStore32(m) + | I32AtomicRmwAdd(m) + | I64AtomicRmwAdd(m) + | I32AtomicRmw8AddU(m) + | I32AtomicRmw16AddU(m) + | I64AtomicRmw8AddU(m) + | I64AtomicRmw16AddU(m) + | I64AtomicRmw32AddU(m) + | I32AtomicRmwSub(m) + | I64AtomicRmwSub(m) + | I32AtomicRmw8SubU(m) + | I32AtomicRmw16SubU(m) + | I64AtomicRmw8SubU(m) + | I64AtomicRmw16SubU(m) + | I64AtomicRmw32SubU(m) + | I32AtomicRmwAnd(m) + | I64AtomicRmwAnd(m) + | I32AtomicRmw8AndU(m) + | I32AtomicRmw16AndU(m) + | I64AtomicRmw8AndU(m) + | I64AtomicRmw16AndU(m) + | I64AtomicRmw32AndU(m) + | I32AtomicRmwOr(m) + | I64AtomicRmwOr(m) + | I32AtomicRmw8OrU(m) + | I32AtomicRmw16OrU(m) + | I64AtomicRmw8OrU(m) + | I64AtomicRmw16OrU(m) + | I64AtomicRmw32OrU(m) + | I32AtomicRmwXor(m) + | I64AtomicRmwXor(m) + | I32AtomicRmw8XorU(m) + | I32AtomicRmw16XorU(m) + | I64AtomicRmw8XorU(m) + | I64AtomicRmw16XorU(m) + | I64AtomicRmw32XorU(m) + | I32AtomicRmwXchg(m) + | I64AtomicRmwXchg(m) + | I32AtomicRmw8XchgU(m) + | I32AtomicRmw16XchgU(m) + | I64AtomicRmw8XchgU(m) + | I64AtomicRmw16XchgU(m) + | I64AtomicRmw32XchgU(m) + | I32AtomicRmwCmpxchg(m) + | I64AtomicRmwCmpxchg(m) + | I32AtomicRmw8CmpxchgU(m) + | I32AtomicRmw16CmpxchgU(m) + | I64AtomicRmw8CmpxchgU(m) + | I64AtomicRmw16CmpxchgU(m) + | I64AtomicRmw32CmpxchgU(m) + | V128Load(m) + | V128Load8x8S(m) + | V128Load8x8U(m) + | V128Load16x4S(m) + | V128Load16x4U(m) + | V128Load32x2S(m) + | V128Load32x2U(m) + | V128Load8Splat(m) + | V128Load16Splat(m) + | V128Load32Splat(m) + | V128Load64Splat(m) + | V128Load32Zero(m) + | V128Load64Zero(m) + | V128Store(m) + | MemoryAtomicNotify(m) + | MemoryAtomicWait32(m) + | MemoryAtomicWait64(m) => self.record_missing(&m.memory, Ns::Memory), _ => {} } } diff --git a/third_party/rust/wast/src/resolve/names.rs b/third_party/rust/wast/src/resolve/names.rs index 55a04f875e3e..ee42d61d7db9 100644 --- a/third_party/rust/wast/src/resolve/names.rs +++ b/third_party/rust/wast/src/resolve/names.rs @@ -64,6 +64,13 @@ pub struct Module<'a> { /// currently-being-processed field. This should always be empty after /// processing is complete. to_prepend: Vec>, + + /// Cache for copying over types from other modules, used for module-linking + /// module types. The key of this map is the `(module_index, type_index)` + /// and the value is the copied over item into this module. + /// + /// This is used by the `copy_type_from_module` method. + type_cache: HashMap<(usize, Index<'a>), Item<'a>>, } enum InstanceDef<'a> { @@ -146,22 +153,35 @@ impl<'a> Resolver<'a> { // // Practically there is no purpose to interleaving the type and module // section today. As a result we can safely sort all types to the front. - // This, however, can break the roundtrip binary-text-binary for - // strictly-speaking compliant modules with the module linking spec. - // Anyway, this is a bummer, should figure out a better thing in the - // future. - // // I've tried to open discussion about this at // WebAssembly/module-linking#8 - fields.sort_by_key(|field| match field { - ModuleField::Type(_) - | ModuleField::Alias(Alias { - kind: ExportKind::Type(_), - .. - }) => 0, - _ => 1, + // + // Note that to avoid breaking round-tripping and as a convenience for + // writing tests, we don't reorder any fields if we don't have to fill + // in the type for any modules. + let sort_types_first = fields.iter().any(|f| match f { + ModuleField::NestedModule(m) => match &m.kind { + NestedModuleKind::Inline { ty, .. } => ty.is_none(), + _ => false, + }, + ModuleField::Import(i) => match &i.item.kind { + ItemKind::Module(ty) => ty.index.is_none(), + _ => false, + }, + _ => false, }); + if sort_types_first { + fields.sort_by_key(|field| match field { + ModuleField::Type(_) + | ModuleField::Alias(Alias { + kind: ExportKind::Type(_), + .. + }) => 0, + _ => 1, + }); + } + // Number everything in the module, recording what names correspond to // what indices. let module = &mut self.modules[self.cur]; @@ -183,14 +203,16 @@ impl<'a> Resolver<'a> { // This is the same as the comment above, only we're doing it now after // the full expansion process since all types should now be present in // the module. - fields.sort_by_key(|field| match field { - ModuleField::Type(_) - | ModuleField::Alias(Alias { - kind: ExportKind::Type(_), - .. - }) => 0, - _ => 1, - }); + if sort_types_first { + fields.sort_by_key(|field| match field { + ModuleField::Type(_) + | ModuleField::Alias(Alias { + kind: ExportKind::Type(_), + .. + }) => 0, + _ => 1, + }); + } // And finally the last step is to replace all our `Index::Id` instances // with `Index::Num` in the AST. This does not recurse into nested @@ -694,8 +716,22 @@ impl<'a> Resolver<'a> { type_idx: &Index<'a>, switch_module_to_instance: bool, ) -> Result, Error> { + // First check the cache to avoid doing this work multiple times if + // necessary. Note that we also don't do this in the + // `switch_module_to_instance` case which happens only in rare cases + // above anyway. + // + // This prevents us from recursively realizing we don't need to copy + // over types each time we are asked to copy a type. This short-circuit + // prevents an exponential blowup of runtime for deeply nested modules. + if !switch_module_to_instance { + if let Some(ret) = self.modules[self.cur].type_cache.get(&(child, *type_idx)) { + return Ok(ret.clone()); + } + } + let (ty, child) = self.type_for(child, type_idx)?; - match ty { + let item = match ty { TypeInfo::Func(key) => { let key = key.clone(); let my_key = ( @@ -708,7 +744,7 @@ impl<'a> Resolver<'a> { .map(|ty| self.copy_valtype_from_module(span, child, *ty)) .collect::, Error>>()?, ); - Ok(Item::Func(self.modules[self.cur].key_to_idx(span, my_key))) + Item::Func(self.modules[self.cur].key_to_idx(span, my_key)) } TypeInfo::Instance { key, .. } => { @@ -720,9 +756,7 @@ impl<'a> Resolver<'a> { .map(|x| (*name, x)) }) .collect::, Error>>()?; - Ok(Item::Instance( - self.modules[self.cur].key_to_idx(span, my_key), - )) + Item::Instance(self.modules[self.cur].key_to_idx(span, my_key)) } TypeInfo::Module { key, .. } => { @@ -748,16 +782,20 @@ impl<'a> Resolver<'a> { .map(|x| (*module, *field, x)) }) .collect::, Error>>()?; - Ok(Item::Module( - self.modules[self.cur].key_to_idx(span, (imports, exports)), - )) + Item::Module(self.modules[self.cur].key_to_idx(span, (imports, exports))) } - TypeInfo::Other => Err(Error::new( - span, - format!("cannot copy reference types between modules right now"), - )), - } + TypeInfo::Other => { + return Err(Error::new( + span, + format!("cannot copy reference types between modules right now"), + )) + } + }; + self.modules[self.cur] + .type_cache + .insert((child, *type_idx), item.clone()); + Ok(item) } fn copy_reftype_from_module( @@ -1927,10 +1965,13 @@ impl<'a, 'b> ExprResolver<'a, 'b> { Throw(i) => { self.module.resolve(i, Ns::Event)?; } - BrOnExn(b) => { - self.resolve_label(&mut b.label)?; - self.module.resolve(&mut b.exn, Ns::Event)?; + Rethrow(i) => { + self.resolve_label(i)?; } + Catch(i) => { + self.module.resolve(i, Ns::Event)?; + } + BrOnCast(b) => { self.resolve_label(&mut b.label)?; self.module.resolve_heaptype(&mut b.val)?; @@ -2077,6 +2118,8 @@ impl<'a, 'b> ExprResolver<'a, 'b> { | V128Load16Splat(m) | V128Load32Splat(m) | V128Load64Splat(m) + | V128Load32Zero(m) + | V128Load64Zero(m) | V128Store(m) | MemoryAtomicNotify(m) | MemoryAtomicWait32(m) diff --git a/third_party/rust/wat/.cargo-checksum.json b/third_party/rust/wat/.cargo-checksum.json index 611e4615fc76..3a578627d0b9 100644 --- a/third_party/rust/wat/.cargo-checksum.json +++ b/third_party/rust/wat/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.toml":"4b973805b8ce9c658bd9ca10e76e512496d02c689054c5953eec3d091a7c9b13","README.md":"6653a386a2210f0f7e36964f15214bc441e2c723c42867dfe90dfcedcd301814","src/lib.rs":"03652351228b7f7a520f4e7f1e689fa34a37b8e5e0fc8367a167cc893cdbc449"},"package":"26b2dccbce4d0e14875091846e110a2369267b18ddd0d6423479b88dad914d71"} \ No newline at end of file +{"files":{"Cargo.toml":"61a583833e6205f9c9bcb28b3a7148d23861d2ce884775c14eb2ca9bd3c64c45","README.md":"6653a386a2210f0f7e36964f15214bc441e2c723c42867dfe90dfcedcd301814","src/lib.rs":"03652351228b7f7a520f4e7f1e689fa34a37b8e5e0fc8367a167cc893cdbc449"},"package":"0d11a88d953b298172d218d18f22853f4e6e12873b62755d05617b864d312c68"} \ No newline at end of file diff --git a/third_party/rust/wat/Cargo.toml b/third_party/rust/wat/Cargo.toml index e6ea93d7a7c5..b1613139f9c8 100644 --- a/third_party/rust/wat/Cargo.toml +++ b/third_party/rust/wat/Cargo.toml @@ -13,7 +13,7 @@ [package] edition = "2018" name = "wat" -version = "1.0.27" +version = "1.0.30" authors = ["Alex Crichton "] description = "Rust parser for the WebAssembly Text format, WAT\n" homepage = "https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wat" @@ -22,4 +22,4 @@ readme = "README.md" license = "Apache-2.0 WITH LLVM-exception" repository = "https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wat" [dependencies.wast] -version = "26.0.0" +version = "29.0.0"