Bug 1635534 - Update wat to 1.0.17. r=lth

Differential Revision: https://phabricator.services.mozilla.com/D74694
This commit is contained in:
Ryan Hunt 2020-05-13 01:50:49 +00:00
Родитель 66f70858cd
Коммит 0a7b098471
18 изменённых файлов: 410 добавлений и 343 удалений

8
Cargo.lock сгенерированный
Просмотреть файл

@ -5219,18 +5219,18 @@ checksum = "aeb1956b19469d1c5e63e459d29e7b5aa0f558d9f16fcef09736f8a265e6c10a"
[[package]]
name = "wast"
version = "13.0.0"
version = "16.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b20abd8b4a26f7e0d4dd5e357e90a3d555ec190e94472c9b2b27c5b9777f9ae"
checksum = "8564a0c8f4d468d71c2b263dd1f675fa2cac6e7331ff8379cbb88cb79fcef8d1"
dependencies = [
"leb128",
]
[[package]]
name = "wat"
version = "1.0.14"
version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51a615830ee3e7200b505c441fec09aac2f114deae69df52f215cb828ba112c4"
checksum = "a02463c6661a0d5a089d795e2e49ab34594b41265e8bd5ff3e0810e2a1f84222"
dependencies = [
"wast",
]

Просмотреть файл

@ -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.14" }
wat = { version = "1.0.17" }
wasmparser = { version = "0.48.2" }

2
third_party/rust/wast/.cargo-checksum.json поставляемый
Просмотреть файл

@ -1 +1 @@
{"files":{"Cargo.toml":"24568dfb6c7dba37de238f00d47ccecb9e35a9a990183a0bf6fcf79d41faa06c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"ad8c69458e8f19f6a796d1d791d15f014a045ed11616fe27d987aa37b49599a0","src/ast/assert_expr.rs":"0f6310eccb8a602722a13b2230cfa56dbc470e4c0ba5eb300237a81dc1bfff43","src/ast/custom.rs":"4c926ba719013537696e075c9acd8043da92a833cd28b0d843abcbfb71080fc3","src/ast/event.rs":"18f5106a87635d50b5f3b13fedd08247d3eb8158df454790151acadd41d1e0ab","src/ast/export.rs":"f296bd3238c7f9886f626d619d3a41ff0797bd51cb7bec7053278a62d8cb5355","src/ast/expr.rs":"25b7e290cc6a3b7c416bf583b2869648cc690d0d1f26a0dcaf165b238bd4b373","src/ast/func.rs":"149d947957414548b65739212a2cf1362f0ec9ecdda517653ae83949aa8a89f5","src/ast/global.rs":"41b617886012277e7377600047611b78564c2c594d8c0792de1509b89676244f","src/ast/import.rs":"53f39569b8486cd5fde6b3a826bc7dc221fc925afa043e45a0a1550987332ba7","src/ast/memory.rs":"836135f8f5a7bffa90ddaad1a862b9133d9c0e680b63736daa3e2377c23cb785","src/ast/mod.rs":"74fb35f65f786e82f66e7c85c9102051923d6938f8615eb2b57c3363476ae153","src/ast/module.rs":"b25df1f5648ea6fd7666537d52aa18221d435301793e4e01c8affa4ebb0da7c9","src/ast/table.rs":"74e9a0588515dd039c76e8e775470ee752607f06ece3e05c7d6a4141adfb89ea","src/ast/token.rs":"cdaaa6f50a9868ed7d0ec7088447ba94e3df5c81d38bc471c55d0968c249f73c","src/ast/types.rs":"9066d8b425005a6a70d5ada5e0ae316bf9bcab8e685fd941cc6d0ebb7e204473","src/ast/wast.rs":"9e64d00baf809d09181a06073a3fa9ac5907ac8248336cfd2089735d017075e3","src/binary.rs":"7f97251d6dd80dde667559e25fe38cdd9f540468416532a796a1bafd77c4b44a","src/lexer.rs":"1e62516a22ca89aa9510d255c264a27776a86c831b4c22a1fd00d20272e7b96c","src/lib.rs":"5fc7614c3d4a89f5fcac328d4a82cecaa445e0620bdf6bd55308cb1ead73d297","src/parser.rs":"926838cf6a6bef8bdad1013194f3d9305b2237e9f7fb2df2fa8ca44f557483aa","src/resolve/expand.rs":"f7ecf82bb00d7c770f78f5582ec5427c25189ff11943c052572ffab2f996b12c","src/resolve/mod.rs":"916ce2c88f633e36609767f3bccfabef4438586e98475cc8f0e4cbea5d2caaf4","src/resolve/names.rs":"13e67ac425ae4fda25388102eab66aae4a2927c9ad80e1fe72ca9de6f8df8b22","src/resolve/tyexpand.rs":"69701f2fc566fd5da4b253643a91e3048dd3c41795d5fed6ac94a386ec01947a"},"package":"5b20abd8b4a26f7e0d4dd5e357e90a3d555ec190e94472c9b2b27c5b9777f9ae"}
{"files":{"Cargo.toml":"b3728e0765da9b14c186bf2ef0dec6d6c88ccc7e918fadf46c1f29ba706ee3d8","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"ad8c69458e8f19f6a796d1d791d15f014a045ed11616fe27d987aa37b49599a0","src/ast/assert_expr.rs":"0f6310eccb8a602722a13b2230cfa56dbc470e4c0ba5eb300237a81dc1bfff43","src/ast/custom.rs":"4c926ba719013537696e075c9acd8043da92a833cd28b0d843abcbfb71080fc3","src/ast/event.rs":"18f5106a87635d50b5f3b13fedd08247d3eb8158df454790151acadd41d1e0ab","src/ast/export.rs":"f296bd3238c7f9886f626d619d3a41ff0797bd51cb7bec7053278a62d8cb5355","src/ast/expr.rs":"cac2b8bcd4c1ac150c9a6d7c103ca5b9275eae0f48b8e4721b38832c0e5afda3","src/ast/func.rs":"149d947957414548b65739212a2cf1362f0ec9ecdda517653ae83949aa8a89f5","src/ast/global.rs":"41b617886012277e7377600047611b78564c2c594d8c0792de1509b89676244f","src/ast/import.rs":"53f39569b8486cd5fde6b3a826bc7dc221fc925afa043e45a0a1550987332ba7","src/ast/memory.rs":"836135f8f5a7bffa90ddaad1a862b9133d9c0e680b63736daa3e2377c23cb785","src/ast/mod.rs":"4fe54a05664de07b10c48c72c51dea581d8f4ea329ccddf17a0095870695a335","src/ast/module.rs":"b25df1f5648ea6fd7666537d52aa18221d435301793e4e01c8affa4ebb0da7c9","src/ast/table.rs":"df1b7877fb8867b35f1b6dbf8a5a036feb702cb99000c56767f9f3588f5fb1af","src/ast/token.rs":"c39ef468c61729434708d3a54cc8ba5117491ce15008ddb3eebd727e18a843a3","src/ast/types.rs":"647ce47678e156102926caa870062ca6048f496e35ff182d479fd2f0b7d2694d","src/ast/wast.rs":"9e64d00baf809d09181a06073a3fa9ac5907ac8248336cfd2089735d017075e3","src/binary.rs":"2f7060c94bf463fbc8f3ea27c526cb2e1e0b7112b3f266a83b040c75591f6430","src/lexer.rs":"1e62516a22ca89aa9510d255c264a27776a86c831b4c22a1fd00d20272e7b96c","src/lib.rs":"5fc7614c3d4a89f5fcac328d4a82cecaa445e0620bdf6bd55308cb1ead73d297","src/parser.rs":"926838cf6a6bef8bdad1013194f3d9305b2237e9f7fb2df2fa8ca44f557483aa","src/resolve/expand.rs":"f7ecf82bb00d7c770f78f5582ec5427c25189ff11943c052572ffab2f996b12c","src/resolve/mod.rs":"916ce2c88f633e36609767f3bccfabef4438586e98475cc8f0e4cbea5d2caaf4","src/resolve/names.rs":"44d730691a1f773d5f1609cb2d2dba2fb9307b084c6c3c45817d99de74b599f9","src/resolve/tyexpand.rs":"69701f2fc566fd5da4b253643a91e3048dd3c41795d5fed6ac94a386ec01947a"},"package":"8564a0c8f4d468d71c2b263dd1f675fa2cac6e7331ff8379cbb88cb79fcef8d1"}

2
third_party/rust/wast/Cargo.toml поставляемый
Просмотреть файл

@ -13,7 +13,7 @@
[package]
edition = "2018"
name = "wast"
version = "13.0.0"
version = "16.0.0"
authors = ["Alex Crichton <alex@alexcrichton.com>"]
description = "Customizable Rust parsers for the WebAssembly Text formats WAT and WAST\n"
homepage = "https://github.com/bytecodealliance/wat/tree/master/crates/wast"

363
third_party/rust/wast/src/ast/expr.rs поставляемый
Просмотреть файл

@ -1,4 +1,4 @@
use crate::ast::{self, kw};
use crate::ast::{self, kw, RefType};
use crate::parser::{Parse, Parser, Result};
use std::mem;
@ -411,8 +411,8 @@ instructions! {
TableSize(TableArg<'a>) : [0xfc, 0x10] : "table.size",
TableGrow(TableArg<'a>) : [0xfc, 0x0f] : "table.grow",
RefNull : [0xd0] : "ref.null",
RefIsNull : [0xd1] : "ref.is_null",
RefNull(RefType<'a>) : [0xd0] : "ref.null",
RefIsNull(RefType<'a>) : [0xd1] : "ref.is_null",
RefHost(u32) : [0xff] : "ref.host", // only used in test harness
RefFunc(ast::Index<'a>) : [0xd2] : "ref.func",
@ -686,201 +686,198 @@ instructions! {
I64AtomicRmw16CmpxchgU(MemArg<2>) : [0xfe, 0x4d] : "i64.atomic.rmw16.cmpxchg_u",
I64AtomicRmw32CmpxchgU(MemArg<4>) : [0xfe, 0x4e] : "i64.atomic.rmw32.cmpxchg_u",
// proposal: simd
V128Load(MemArg<16>) : [0xfd, 0x00] : "v128.load",
V128Store(MemArg<16>) : [0xfd, 0x01] : "v128.store",
V128Const(V128Const) : [0xfd, 0x02] : "v128.const",
I16x8Load8x8S(MemArg<8>) : [0xfd, 0x01] : "i16x8.load8x8_s",
I16x8Load8x8U(MemArg<8>) : [0xfd, 0x02] : "i16x8.load8x8_u",
I32x4Load16x4S(MemArg<8>) : [0xfd, 0x03] : "i32x4.load16x4_s",
I32x4Load16x4U(MemArg<8>) : [0xfd, 0x04] : "i32x4.load16x4_u",
I64x2Load32x2S(MemArg<8>) : [0xfd, 0x05] : "i64x2.load32x2_s",
I64x2Load32x2U(MemArg<8>) : [0xfd, 0x06] : "i64x2.load32x2_u",
V8x16LoadSplat(MemArg<1>) : [0xfd, 0x07] : "v8x16.load_splat",
V16x8LoadSplat(MemArg<2>) : [0xfd, 0x08] : "v16x8.load_splat",
V32x4LoadSplat(MemArg<4>) : [0xfd, 0x09] : "v32x4.load_splat",
V64x2LoadSplat(MemArg<8>) : [0xfd, 0x0a] : "v64x2.load_splat",
V128Store(MemArg<16>) : [0xfd, 0x0b] : "v128.store",
I8x16Splat : [0xfd, 0x04] : "i8x16.splat",
I8x16ExtractLaneS(u8) : [0xfd, 0x05] : "i8x16.extract_lane_s",
I8x16ExtractLaneU(u8) : [0xfd, 0x06] : "i8x16.extract_lane_u",
I8x16ReplaceLane(u8) : [0xfd, 0x07] : "i8x16.replace_lane",
I16x8Splat : [0xfd, 0x08] : "i16x8.splat",
I16x8ExtractLaneS(u8) : [0xfd, 0x09] : "i16x8.extract_lane_s",
I16x8ExtractLaneU(u8) : [0xfd, 0x0a] : "i16x8.extract_lane_u",
I16x8ReplaceLane(u8) : [0xfd, 0x0b] : "i16x8.replace_lane",
I32x4Splat : [0xfd, 0x0c] : "i32x4.splat",
I32x4ExtractLane(u8) : [0xfd, 0x0d] : "i32x4.extract_lane",
I32x4ReplaceLane(u8) : [0xfd, 0x0e] : "i32x4.replace_lane",
I64x2Splat : [0xfd, 0x0f] : "i64x2.splat",
I64x2ExtractLane(u8) : [0xfd, 0x10] : "i64x2.extract_lane",
I64x2ReplaceLane(u8) : [0xfd, 0x11] : "i64x2.replace_lane",
F32x4Splat : [0xfd, 0x12] : "f32x4.splat",
F32x4ExtractLane(u8) : [0xfd, 0x13] : "f32x4.extract_lane",
F32x4ReplaceLane(u8) : [0xfd, 0x14] : "f32x4.replace_lane",
F64x2Splat : [0xfd, 0x15] : "f64x2.splat",
F64x2ExtractLane(u8) : [0xfd, 0x16] : "f64x2.extract_lane",
F64x2ReplaceLane(u8) : [0xfd, 0x17] : "f64x2.replace_lane",
V128Const(V128Const) : [0xfd, 0x0c] : "v128.const",
V8x16Shuffle(V8x16Shuffle) : [0xfd, 0x0d] : "v8x16.shuffle",
V8x16Swizzle : [0xfd, 0x0e] : "v8x16.swizzle",
I8x16Eq : [0xfd, 0x18] : "i8x16.eq",
I8x16Ne : [0xfd, 0x19] : "i8x16.ne",
I8x16LtS : [0xfd, 0x1a] : "i8x16.lt_s",
I8x16LtU : [0xfd, 0x1b] : "i8x16.lt_u",
I8x16GtS : [0xfd, 0x1c] : "i8x16.gt_s",
I8x16GtU : [0xfd, 0x1d] : "i8x16.gt_u",
I8x16LeS : [0xfd, 0x1e] : "i8x16.le_s",
I8x16LeU : [0xfd, 0x1f] : "i8x16.le_u",
I8x16GeS : [0xfd, 0x20] : "i8x16.ge_s",
I8x16GeU : [0xfd, 0x21] : "i8x16.ge_u",
I16x8Eq : [0xfd, 0x22] : "i16x8.eq",
I16x8Ne : [0xfd, 0x23] : "i16x8.ne",
I16x8LtS : [0xfd, 0x24] : "i16x8.lt_s",
I16x8LtU : [0xfd, 0x25] : "i16x8.lt_u",
I16x8GtS : [0xfd, 0x26] : "i16x8.gt_s",
I16x8GtU : [0xfd, 0x27] : "i16x8.gt_u",
I16x8LeS : [0xfd, 0x28] : "i16x8.le_s",
I16x8LeU : [0xfd, 0x29] : "i16x8.le_u",
I16x8GeS : [0xfd, 0x2a] : "i16x8.ge_s",
I16x8GeU : [0xfd, 0x2b] : "i16x8.ge_u",
I32x4Eq : [0xfd, 0x2c] : "i32x4.eq",
I32x4Ne : [0xfd, 0x2d] : "i32x4.ne",
I32x4LtS : [0xfd, 0x2e] : "i32x4.lt_s",
I32x4LtU : [0xfd, 0x2f] : "i32x4.lt_u",
I32x4GtS : [0xfd, 0x30] : "i32x4.gt_s",
I32x4GtU : [0xfd, 0x31] : "i32x4.gt_u",
I32x4LeS : [0xfd, 0x32] : "i32x4.le_s",
I32x4LeU : [0xfd, 0x33] : "i32x4.le_u",
I32x4GeS : [0xfd, 0x34] : "i32x4.ge_s",
I32x4GeU : [0xfd, 0x35] : "i32x4.ge_u",
I8x16Splat : [0xfd, 0x0f] : "i8x16.splat",
I16x8Splat : [0xfd, 0x10] : "i16x8.splat",
I32x4Splat : [0xfd, 0x11] : "i32x4.splat",
I64x2Splat : [0xfd, 0x12] : "i64x2.splat",
F32x4Splat : [0xfd, 0x13] : "f32x4.splat",
F64x2Splat : [0xfd, 0x14] : "f64x2.splat",
F32x4Eq : [0xfd, 0x40] : "f32x4.eq",
F32x4Ne : [0xfd, 0x41] : "f32x4.ne",
F32x4Lt : [0xfd, 0x42] : "f32x4.lt",
F32x4Gt : [0xfd, 0x43] : "f32x4.gt",
F32x4Le : [0xfd, 0x44] : "f32x4.le",
F32x4Ge : [0xfd, 0x45] : "f32x4.ge",
F64x2Eq : [0xfd, 0x46] : "f64x2.eq",
F64x2Ne : [0xfd, 0x47] : "f64x2.ne",
F64x2Lt : [0xfd, 0x48] : "f64x2.lt",
F64x2Gt : [0xfd, 0x49] : "f64x2.gt",
F64x2Le : [0xfd, 0x4a] : "f64x2.le",
F64x2Ge : [0xfd, 0x4b] : "f64x2.ge",
I8x16ExtractLaneS(u8) : [0xfd, 0x15] : "i8x16.extract_lane_s",
I8x16ExtractLaneU(u8) : [0xfd, 0x16] : "i8x16.extract_lane_u",
I8x16ReplaceLane(u8) : [0xfd, 0x17] : "i8x16.replace_lane",
I16x8ExtractLaneS(u8) : [0xfd, 0x18] : "i16x8.extract_lane_s",
I16x8ExtractLaneU(u8) : [0xfd, 0x19] : "i16x8.extract_lane_u",
I16x8ReplaceLane(u8) : [0xfd, 0x1a] : "i16x8.replace_lane",
I32x4ExtractLane(u8) : [0xfd, 0x1b] : "i32x4.extract_lane",
I32x4ReplaceLane(u8) : [0xfd, 0x1c] : "i32x4.replace_lane",
I64x2ExtractLane(u8) : [0xfd, 0x1d] : "i64x2.extract_lane",
I64x2ReplaceLane(u8) : [0xfd, 0x1e] : "i64x2.replace_lane",
F32x4ExtractLane(u8) : [0xfd, 0x1f] : "f32x4.extract_lane",
F32x4ReplaceLane(u8) : [0xfd, 0x20] : "f32x4.replace_lane",
F64x2ExtractLane(u8) : [0xfd, 0x21] : "f64x2.extract_lane",
F64x2ReplaceLane(u8) : [0xfd, 0x22] : "f64x2.replace_lane",
V128Not : [0xfd, 0x4c] : "v128.not",
V128And : [0xfd, 0x4d] : "v128.and",
V128Or : [0xfd, 0x4e] : "v128.or",
V128Xor : [0xfd, 0x4f] : "v128.xor",
V128Bitselect : [0xfd, 0x50] : "v128.bitselect",
I8x16Eq : [0xfd, 0x23] : "i8x16.eq",
I8x16Ne : [0xfd, 0x24] : "i8x16.ne",
I8x16LtS : [0xfd, 0x25] : "i8x16.lt_s",
I8x16LtU : [0xfd, 0x26] : "i8x16.lt_u",
I8x16GtS : [0xfd, 0x27] : "i8x16.gt_s",
I8x16GtU : [0xfd, 0x28] : "i8x16.gt_u",
I8x16LeS : [0xfd, 0x29] : "i8x16.le_s",
I8x16LeU : [0xfd, 0x2a] : "i8x16.le_u",
I8x16GeS : [0xfd, 0x2b] : "i8x16.ge_s",
I8x16GeU : [0xfd, 0x2c] : "i8x16.ge_u",
I16x8Eq : [0xfd, 0x2d] : "i16x8.eq",
I16x8Ne : [0xfd, 0x2e] : "i16x8.ne",
I16x8LtS : [0xfd, 0x2f] : "i16x8.lt_s",
I16x8LtU : [0xfd, 0x30] : "i16x8.lt_u",
I16x8GtS : [0xfd, 0x31] : "i16x8.gt_s",
I16x8GtU : [0xfd, 0x32] : "i16x8.gt_u",
I16x8LeS : [0xfd, 0x33] : "i16x8.le_s",
I16x8LeU : [0xfd, 0x34] : "i16x8.le_u",
I16x8GeS : [0xfd, 0x35] : "i16x8.ge_s",
I16x8GeU : [0xfd, 0x36] : "i16x8.ge_u",
I32x4Eq : [0xfd, 0x37] : "i32x4.eq",
I32x4Ne : [0xfd, 0x38] : "i32x4.ne",
I32x4LtS : [0xfd, 0x39] : "i32x4.lt_s",
I32x4LtU : [0xfd, 0x3a] : "i32x4.lt_u",
I32x4GtS : [0xfd, 0x3b] : "i32x4.gt_s",
I32x4GtU : [0xfd, 0x3c] : "i32x4.gt_u",
I32x4LeS : [0xfd, 0x3d] : "i32x4.le_s",
I32x4LeU : [0xfd, 0x3e] : "i32x4.le_u",
I32x4GeS : [0xfd, 0x3f] : "i32x4.ge_s",
I32x4GeU : [0xfd, 0x40] : "i32x4.ge_u",
I8x16Neg : [0xfd, 0x51] : "i8x16.neg",
I8x16AnyTrue : [0xfd, 0x52] : "i8x16.any_true",
I8x16AllTrue : [0xfd, 0x53] : "i8x16.all_true",
I8x16Shl : [0xfd, 0x54] : "i8x16.shl",
I8x16ShrS : [0xfd, 0x55] : "i8x16.shr_s",
I8x16ShrU : [0xfd, 0x56] : "i8x16.shr_u",
I8x16Add : [0xfd, 0x57] : "i8x16.add",
I8x16AddSaturateS : [0xfd, 0x58] : "i8x16.add_saturate_s",
I8x16AddSaturateU : [0xfd, 0x59] : "i8x16.add_saturate_u",
I8x16Sub : [0xfd, 0x5a] : "i8x16.sub",
I8x16SubSaturateS : [0xfd, 0x5b] : "i8x16.sub_saturate_s",
I8x16SubSaturateU : [0xfd, 0x5c] : "i8x16.sub_saturate_u",
I8x16Mul : [0xfd, 0x5d] : "i8x16.mul",
I8x16MinS : [0xfd, 0x5e] : "i8x16.min_s",
I8x16MinU : [0xfd, 0x5f] : "i8x16.min_u",
I8x16MaxS : [0xfd, 0x60] : "i8x16.max_s",
I8x16MaxU : [0xfd, 0x61] : "i8x16.max_u",
F32x4Eq : [0xfd, 0x41] : "f32x4.eq",
F32x4Ne : [0xfd, 0x42] : "f32x4.ne",
F32x4Lt : [0xfd, 0x43] : "f32x4.lt",
F32x4Gt : [0xfd, 0x44] : "f32x4.gt",
F32x4Le : [0xfd, 0x45] : "f32x4.le",
F32x4Ge : [0xfd, 0x46] : "f32x4.ge",
F64x2Eq : [0xfd, 0x47] : "f64x2.eq",
F64x2Ne : [0xfd, 0x48] : "f64x2.ne",
F64x2Lt : [0xfd, 0x49] : "f64x2.lt",
F64x2Gt : [0xfd, 0x4a] : "f64x2.gt",
F64x2Le : [0xfd, 0x4b] : "f64x2.le",
F64x2Ge : [0xfd, 0x4c] : "f64x2.ge",
I16x8Neg : [0xfd, 0x62] : "i16x8.neg",
I16x8AnyTrue : [0xfd, 0x63] : "i16x8.any_true",
I16x8AllTrue : [0xfd, 0x64] : "i16x8.all_true",
I16x8Shl : [0xfd, 0x65] : "i16x8.shl",
I16x8ShrS : [0xfd, 0x66] : "i16x8.shr_s",
I16x8ShrU : [0xfd, 0x67] : "i16x8.shr_u",
I16x8Add : [0xfd, 0x68] : "i16x8.add",
I16x8AddSaturateS : [0xfd, 0x69] : "i16x8.add_saturate_s",
I16x8AddSaturateU : [0xfd, 0x6a] : "i16x8.add_saturate_u",
I16x8Sub : [0xfd, 0x6b] : "i16x8.sub",
I16x8SubSaturateS : [0xfd, 0x6c] : "i16x8.sub_saturate_s",
I16x8SubSaturateU : [0xfd, 0x6d] : "i16x8.sub_saturate_u",
I16x8Mul : [0xfd, 0x6e] : "i16x8.mul",
I16x8MinS : [0xfd, 0x6f] : "i16x8.min_s",
I16x8MinU : [0xfd, 0x70] : "i16x8.min_u",
I16x8MaxS : [0xfd, 0x71] : "i16x8.max_s",
I16x8MaxU : [0xfd, 0x72] : "i16x8.max_u",
V128Not : [0xfd, 0x4d] : "v128.not",
V128And : [0xfd, 0x4e] : "v128.and",
V128Andnot : [0xfd, 0x4f] : "v128.andnot",
V128Or : [0xfd, 0x50] : "v128.or",
V128Xor : [0xfd, 0x51] : "v128.xor",
V128Bitselect : [0xfd, 0x52] : "v128.bitselect",
I32x4Neg : [0xfd, 0x73] : "i32x4.neg",
I32x4AnyTrue : [0xfd, 0x74] : "i32x4.any_true",
I32x4AllTrue : [0xfd, 0x75] : "i32x4.all_true",
I32x4Shl : [0xfd, 0x76] : "i32x4.shl",
I32x4ShrS : [0xfd, 0x77] : "i32x4.shr_s",
I32x4ShrU : [0xfd, 0x78] : "i32x4.shr_u",
I32x4Add : [0xfd, 0x79] : "i32x4.add",
I32x4Sub : [0xfd, 0x7c] : "i32x4.sub",
I32x4Mul : [0xfd, 0x7f] : "i32x4.mul",
I32x4MinS : [0xfd, 0x80] : "i32x4.min_s",
I32x4MinU : [0xfd, 0x81] : "i32x4.min_u",
I32x4MaxS : [0xfd, 0x82] : "i32x4.max_s",
I32x4MaxU : [0xfd, 0x83] : "i32x4.max_u",
I8x16Abs : [0xfd, 0x60] : "i8x16.abs",
I8x16Neg : [0xfd, 0x61] : "i8x16.neg",
I8x16AnyTrue : [0xfd, 0x62] : "i8x16.any_true",
I8x16AllTrue : [0xfd, 0x63] : "i8x16.all_true",
I8x16NarrowI16x8S : [0xfd, 0x65] : "i8x16.narrow_i16x8_s",
I8x16NarrowI16x8U : [0xfd, 0x66] : "i8x16.narrow_i16x8_u",
I8x16Shl : [0xfd, 0x6b] : "i8x16.shl",
I8x16ShrS : [0xfd, 0x6c] : "i8x16.shr_s",
I8x16ShrU : [0xfd, 0x6d] : "i8x16.shr_u",
I8x16Add : [0xfd, 0x6e] : "i8x16.add",
I8x16AddSaturateS : [0xfd, 0x6f] : "i8x16.add_saturate_s",
I8x16AddSaturateU : [0xfd, 0x70] : "i8x16.add_saturate_u",
I8x16Sub : [0xfd, 0x71] : "i8x16.sub",
I8x16SubSaturateS : [0xfd, 0x72] : "i8x16.sub_saturate_s",
I8x16SubSaturateU : [0xfd, 0x73] : "i8x16.sub_saturate_u",
I8x16MinS : [0xfd, 0x76] : "i8x16.min_s",
I8x16MinU : [0xfd, 0x77] : "i8x16.min_u",
I8x16MaxS : [0xfd, 0x78] : "i8x16.max_s",
I8x16MaxU : [0xfd, 0x79] : "i8x16.max_u",
I8x16AvgrU : [0xfd, 0x7b] : "i8x16.avgr_u",
I64x2Neg : [0xfd, 0x84] : "i64x2.neg",
I64x2AnyTrue : [0xfd, 0x85] : "i64x2.any_true",
I64x2AllTrue : [0xfd, 0x86] : "i64x2.all_true",
I64x2Shl : [0xfd, 0x87] : "i64x2.shl",
I64x2ShrS : [0xfd, 0x88] : "i64x2.shr_s",
I64x2ShrU : [0xfd, 0x89] : "i64x2.shr_u",
I64x2Add : [0xfd, 0x8a] : "i64x2.add",
I64x2Sub : [0xfd, 0x8d] : "i64x2.sub",
I64x2Mul : [0xfd, 0x90] : "i64x2.mul",
I16x8Abs : [0xfd, 0x80] : "i16x8.abs",
I16x8Neg : [0xfd, 0x81] : "i16x8.neg",
I16x8AnyTrue : [0xfd, 0x82] : "i16x8.any_true",
I16x8AllTrue : [0xfd, 0x83] : "i16x8.all_true",
I16x8NarrowI32x4S : [0xfd, 0x85] : "i16x8.narrow_i32x4_s",
I16x8NarrowI32x4U : [0xfd, 0x86] : "i16x8.narrow_i32x4_u",
I16x8WidenLowI8x16S : [0xfd, 0x87] : "i16x8.widen_low_i8x16_s",
I16x8WidenHighI8x16S : [0xfd, 0x88] : "i16x8.widen_high_i8x16_s",
I16x8WidenLowI8x16U : [0xfd, 0x89] : "i16x8.widen_low_i8x16_u",
I16x8WidenHighI8x16u : [0xfd, 0x8a] : "i16x8.widen_high_i8x16_u",
I16x8Shl : [0xfd, 0x8b] : "i16x8.shl",
I16x8ShrS : [0xfd, 0x8c] : "i16x8.shr_s",
I16x8ShrU : [0xfd, 0x8d] : "i16x8.shr_u",
I16x8Add : [0xfd, 0x8e] : "i16x8.add",
I16x8AddSaturateS : [0xfd, 0x8f] : "i16x8.add_saturate_s",
I16x8AddSaturateU : [0xfd, 0x90] : "i16x8.add_saturate_u",
I16x8Sub : [0xfd, 0x91] : "i16x8.sub",
I16x8SubSaturateS : [0xfd, 0x92] : "i16x8.sub_saturate_s",
I16x8SubSaturateU : [0xfd, 0x93] : "i16x8.sub_saturate_u",
I16x8Mul : [0xfd, 0x95] : "i16x8.mul",
I16x8MinS : [0xfd, 0x96] : "i16x8.min_s",
I16x8MinU : [0xfd, 0x97] : "i16x8.min_u",
I16x8MaxS : [0xfd, 0x98] : "i16x8.max_s",
I16x8MaxU : [0xfd, 0x99] : "i16x8.max_u",
I16x8AvgrU : [0xfd, 0x9b] : "i16x8.avgr_u",
F32x4Abs : [0xfd, 0x95] : "f32x4.abs",
F32x4Neg : [0xfd, 0x96] : "f32x4.neg",
F32x4Sqrt : [0xfd, 0x97] : "f32x4.sqrt",
F32x4Add : [0xfd, 0x9a] : "f32x4.add",
F32x4Sub : [0xfd, 0x9b] : "f32x4.sub",
F32x4Mul : [0xfd, 0x9c] : "f32x4.mul",
F32x4Div : [0xfd, 0x9d] : "f32x4.div",
F32x4Min : [0xfd, 0x9e] : "f32x4.min",
F32x4Max : [0xfd, 0x9f] : "f32x4.max",
I32x4Abs : [0xfd, 0xa0] : "i32x4.abs",
I32x4Neg : [0xfd, 0xa1] : "i32x4.neg",
I32x4AnyTrue : [0xfd, 0xa2] : "i32x4.any_true",
I32x4AllTrue : [0xfd, 0xa3] : "i32x4.all_true",
I32x4WidenLowI16x8S : [0xfd, 0xa7] : "i32x4.widen_low_i16x8_s",
I32x4WidenHighI16x8S : [0xfd, 0xa8] : "i32x4.widen_high_i16x8_s",
I32x4WidenLowI16x8U : [0xfd, 0xa9] : "i32x4.widen_low_i16x8_u",
I32x4WidenHighI16x8u : [0xfd, 0xaa] : "i32x4.widen_high_i16x8_u",
I32x4Shl : [0xfd, 0xab] : "i32x4.shl",
I32x4ShrS : [0xfd, 0xac] : "i32x4.shr_s",
I32x4ShrU : [0xfd, 0xad] : "i32x4.shr_u",
I32x4Add : [0xfd, 0xae] : "i32x4.add",
I32x4Sub : [0xfd, 0xb1] : "i32x4.sub",
I32x4DotI16x8S : [0xfd, 0xb4] : "i32x4.dot_i8x16_s",
I32x4Mul : [0xfd, 0xb5] : "i32x4.mul",
I32x4MinS : [0xfd, 0xb6] : "i32x4.min_s",
I32x4MinU : [0xfd, 0xb7] : "i32x4.min_u",
I32x4MaxS : [0xfd, 0xb8] : "i32x4.max_s",
I32x4MaxU : [0xfd, 0xb9] : "i32x4.max_u",
F64x2Abs : [0xfd, 0xa0] : "f64x2.abs",
F64x2Neg : [0xfd, 0xa1] : "f64x2.neg",
F64x2Sqrt : [0xfd, 0xa2] : "f64x2.sqrt",
F64x2Add : [0xfd, 0xa5] : "f64x2.add",
F64x2Sub : [0xfd, 0xa6] : "f64x2.sub",
F64x2Mul : [0xfd, 0xa7] : "f64x2.mul",
F64x2Div : [0xfd, 0xa8] : "f64x2.div",
F64x2Min : [0xfd, 0xa9] : "f64x2.min",
F64x2Max : [0xfd, 0xaa] : "f64x2.max",
I64x2Neg : [0xfd, 0xc1] : "i64x2.neg",
I64x2Shl : [0xfd, 0xcb] : "i64x2.shl",
I64x2ShrS : [0xfd, 0xcc] : "i64x2.shr_s",
I64x2ShrU : [0xfd, 0xcd] : "i64x2.shr_u",
I64x2Add : [0xfd, 0xce] : "i64x2.add",
I64x2Sub : [0xfd, 0xd1] : "i64x2.sub",
I64x2Mul : [0xfd, 0xd5] : "i64x2.mul",
I32x4TruncSatF32x4S : [0xfd, 0xab] : "i32x4.trunc_sat_f32x4_s",
I32x4TruncSatF32x4U : [0xfd, 0xac] : "i32x4.trunc_sat_f32x4_u",
F32x4ConvertI32x4S : [0xfd, 0xaf] : "f32x4.convert_i32x4_s",
F32x4ConvertI32x4U : [0xfd, 0xb0] : "f32x4.convert_i32x4_u",
V8x16Swizzle : [0xfd, 0xc0] : "v8x16.swizzle",
V8x16Shuffle(V8x16Shuffle) : [0xfd, 0x03] : "v8x16.shuffle",
V8x16LoadSplat(MemArg<1>) : [0xfd, 0xc2] : "v8x16.load_splat",
V16x8LoadSplat(MemArg<2>) : [0xfd, 0xc3] : "v16x8.load_splat",
V32x4LoadSplat(MemArg<4>) : [0xfd, 0xc4] : "v32x4.load_splat",
V64x2LoadSplat(MemArg<8>) : [0xfd, 0xc5] : "v64x2.load_splat",
F32x4Abs : [0xfd, 0xe0] : "f32x4.abs",
F32x4Neg : [0xfd, 0xe1] : "f32x4.neg",
F32x4Sqrt : [0xfd, 0xe3] : "f32x4.sqrt",
F32x4Add : [0xfd, 0xe4] : "f32x4.add",
F32x4Sub : [0xfd, 0xe5] : "f32x4.sub",
F32x4Mul : [0xfd, 0xe6] : "f32x4.mul",
F32x4Div : [0xfd, 0xe7] : "f32x4.div",
F32x4Min : [0xfd, 0xe8] : "f32x4.min",
F32x4Max : [0xfd, 0xe9] : "f32x4.max",
I8x16NarrowI16x8S : [0xfd, 0xc6] : "i8x16.narrow_i16x8_s",
I8x16NarrowI16x8U : [0xfd, 0xc7] : "i8x16.narrow_i16x8_u",
I16x8NarrowI32x4S : [0xfd, 0xc8] : "i16x8.narrow_i32x4_s",
I16x8NarrowI32x4U : [0xfd, 0xc9] : "i16x8.narrow_i32x4_u",
F64x2Abs : [0xfd, 0xec] : "f64x2.abs",
F64x2Neg : [0xfd, 0xed] : "f64x2.neg",
F64x2Sqrt : [0xfd, 0xef] : "f64x2.sqrt",
F64x2Add : [0xfd, 0xf0] : "f64x2.add",
F64x2Sub : [0xfd, 0xf1] : "f64x2.sub",
F64x2Mul : [0xfd, 0xf2] : "f64x2.mul",
F64x2Div : [0xfd, 0xf3] : "f64x2.div",
F64x2Min : [0xfd, 0xf4] : "f64x2.min",
F64x2Max : [0xfd, 0xf5] : "f64x2.max",
I16x8WidenLowI8x16S : [0xfd, 0xca] : "i16x8.widen_low_i8x16_s",
I16x8WidenHighI8x16S : [0xfd, 0xcb] : "i16x8.widen_high_i8x16_s",
I16x8WidenLowI8x16U : [0xfd, 0xcc] : "i16x8.widen_low_i8x16_u",
I16x8WidenHighI8x16u : [0xfd, 0xcd] : "i16x8.widen_high_i8x16_u",
I32x4WidenLowI16x8S : [0xfd, 0xce] : "i32x4.widen_low_i16x8_s",
I32x4WidenHighI16x8S : [0xfd, 0xcf] : "i32x4.widen_high_i16x8_s",
I32x4WidenLowI16x8U : [0xfd, 0xd0] : "i32x4.widen_low_i16x8_u",
I32x4WidenHighI16x8u : [0xfd, 0xd1] : "i32x4.widen_high_i16x8_u",
I16x8Load8x8S(MemArg<8>) : [0xfd, 0xd2] : "i16x8.load8x8_s",
I16x8Load8x8U(MemArg<8>) : [0xfd, 0xd3] : "i16x8.load8x8_u",
I32x4Load16x4S(MemArg<8>) : [0xfd, 0xd4] : "i32x4.load16x4_s",
I32x4Load16x4U(MemArg<8>) : [0xfd, 0xd5] : "i32x4.load16x4_u",
I64x2Load32x2S(MemArg<8>) : [0xfd, 0xd6] : "i64x2.load32x2_s",
I64x2Load32x2U(MemArg<8>) : [0xfd, 0xd7] : "i64x2.load32x2_u",
V128Andnot : [0xfd, 0xd8] : "v128.andnot",
I8x16AvgrU : [0xfd, 0xd9] : "i8x16.avgr_u",
I16x8AvgrU : [0xfd, 0xda] : "i16x8.avgr_u",
I8x16Abs : [0xfd, 0xe1] : "i8x16.abs",
I16x8Abs : [0xfd, 0xe2] : "i16x8.abs",
I32x4Abs : [0xfd, 0xe3] : "i32x4.abs",
I32x4TruncSatF32x4S : [0xfd, 0xf8] : "i32x4.trunc_sat_f32x4_s",
I32x4TruncSatF32x4U : [0xfd, 0xf9] : "i32x4.trunc_sat_f32x4_u",
F32x4ConvertI32x4S : [0xfd, 0xfa] : "f32x4.convert_i32x4_s",
F32x4ConvertI32x4U : [0xfd, 0xfb] : "f32x4.convert_i32x4_u",
// Exception handling proposal
Try(BlockType<'a>) : [0x06] : "try",
Catch : [0x07] : "catch",
Throw(ast::Index<'a>) : [0x08] : "throw",

2
third_party/rust/wast/src/ast/mod.rs поставляемый
Просмотреть файл

@ -348,6 +348,8 @@ pub mod kw {
custom_keyword!(exn);
custom_keyword!(exnref);
custom_keyword!(export);
custom_keyword!(r#extern = "extern");
custom_keyword!(externref);
custom_keyword!(eq);
custom_keyword!(eqref);
custom_keyword!(f32);

12
third_party/rust/wast/src/ast/table.rs поставляемый
Просмотреть файл

@ -208,12 +208,12 @@ impl<'a> ElemPayload<'a> {
let func = parser.parens(|p| match p.parse::<Option<kw::item>>()? {
Some(_) => {
if parser.peek::<ast::LParen>() {
parser.parens(parse_ref_func)
parser.parens(|p| parse_ref_func(p, ty))
} else {
parse_ref_func(parser)
parse_ref_func(parser, ty)
}
}
None => parse_ref_func(p),
None => parse_ref_func(parser, ty),
})?;
exprs.push(func);
}
@ -221,10 +221,14 @@ impl<'a> ElemPayload<'a> {
}
}
fn parse_ref_func<'a>(parser: Parser<'a>) -> Result<Option<ast::Index<'a>>> {
fn parse_ref_func<'a>(parser: Parser<'a>, ty: ast::TableElemType) -> Result<Option<ast::Index<'a>>> {
let mut l = parser.lookahead1();
if l.peek::<kw::ref_null>() {
parser.parse::<kw::ref_null>()?;
let null_ty: ast::RefType = parser.parse()?;
if null_ty != ty.into() {
return Err(parser.error("elem segment item doesn't match elem segment type"));
}
Ok(None)
} else if l.peek::<kw::ref_func>() {
parser.parse::<kw::ref_func>()?;

5
third_party/rust/wast/src/ast/token.rs поставляемый
Просмотреть файл

@ -12,6 +12,11 @@ pub struct Span {
}
impl Span {
/// Construct a `Span` from a byte offset in the source file.
pub fn from_offset(offset: usize) -> Self {
Span { offset }
}
/// Returns the line/column information of this span within `text`.
/// Line and column numbers are 0-indexed. User presentation is typically
/// 1-indexed, but 0-indexing is appropriate for internal use with

147
third_party/rust/wast/src/ast/types.rs поставляемый
Просмотреть файл

@ -12,14 +12,7 @@ pub enum ValType<'a> {
V128,
I8,
I16,
Funcref,
Anyref,
Nullref,
Exnref,
Ref(ast::Index<'a>),
Optref(ast::Index<'a>),
Eqref,
I31ref,
Ref(RefType<'a>),
Rtt(ast::Index<'a>),
}
@ -49,52 +42,27 @@ impl<'a> Parse<'a> for ValType<'a> {
Ok(ValType::I16)
} else if l.peek::<kw::funcref>() {
parser.parse::<kw::funcref>()?;
Ok(ValType::Funcref)
Ok(ValType::Ref(RefType::Func))
} else if l.peek::<kw::anyfunc>() {
parser.parse::<kw::anyfunc>()?;
Ok(ValType::Funcref)
Ok(ValType::Ref(RefType::Func))
} else if l.peek::<kw::externref>() {
parser.parse::<kw::externref>()?;
Ok(ValType::Ref(RefType::Extern))
} else if l.peek::<kw::anyref>() {
// Parse `anyref` as an alias of `externref` until all tests are
// ported to use the new name
parser.parse::<kw::anyref>()?;
Ok(ValType::Anyref)
} else if l.peek::<kw::nullref>() {
parser.parse::<kw::nullref>()?;
Ok(ValType::Nullref)
Ok(ValType::Ref(RefType::Extern))
} else if l.peek::<ast::LParen>() {
parser.parens(|p| {
let mut l = parser.lookahead1();
if l.peek::<kw::r#ref>() {
p.parse::<kw::r#ref>()?;
let mut l = parser.lookahead1();
if l.peek::<kw::func>() {
parser.parse::<kw::func>()?;
Ok(ValType::Funcref)
} else if l.peek::<kw::any>() {
parser.parse::<kw::any>()?;
Ok(ValType::Anyref)
} else if l.peek::<kw::null>() {
parser.parse::<kw::null>()?;
Ok(ValType::Nullref)
} else if l.peek::<kw::exn>() {
parser.parse::<kw::exn>()?;
Ok(ValType::Exnref)
} else if l.peek::<kw::eq>() {
parser.parse::<kw::eq>()?;
Ok(ValType::Eqref)
} else if l.peek::<kw::i31>() {
parser.parse::<kw::i31>()?;
Ok(ValType::I31ref)
} else if l.peek::<kw::opt>() {
parser.parse::<kw::opt>()?;
Ok(ValType::Optref(parser.parse()?))
} else if l.peek::<ast::Index>() {
Ok(ValType::Ref(parser.parse()?))
} else {
Err(l.error())
}
Ok(ValType::Ref(p.parse()?))
} else if l.peek::<kw::optref>() {
p.parse::<kw::optref>()?;
Ok(ValType::Optref(parser.parse()?))
Ok(ValType::Ref(RefType::OptType(parser.parse()?)))
} else if l.peek::<kw::rtt>() {
p.parse::<kw::rtt>()?;
Ok(ValType::Rtt(parser.parse()?))
@ -104,13 +72,80 @@ impl<'a> Parse<'a> for ValType<'a> {
})
} else if l.peek::<kw::exnref>() {
parser.parse::<kw::exnref>()?;
Ok(ValType::Exnref)
Ok(ValType::Ref(RefType::Exn))
} else if l.peek::<kw::eqref>() {
parser.parse::<kw::eqref>()?;
Ok(ValType::Eqref)
Ok(ValType::Ref(RefType::Eq))
} else if l.peek::<kw::i31ref>() {
parser.parse::<kw::i31ref>()?;
Ok(ValType::I31ref)
Ok(ValType::Ref(RefType::I31))
} else {
Err(l.error())
}
}
}
/// The reference value types for a wasm module.
#[allow(missing_docs)]
#[derive(Debug, PartialEq, Eq, Hash, Copy, Clone)]
pub enum RefType<'a> {
/// An untyped function reference: funcref. This is part of the reference
/// types proposal.
Func,
/// A reference to any host value: externref. This was originally known as
/// anyref when it was the supertype of all reference value types. This is
/// part of the reference types proposal.
Extern,
/// A reference to an exception: exnref. This is part of the exception
/// handling proposal.
Exn,
/// A reference that has an identity that can be compared: eqref. This is
/// part of the GC proposal.
Eq,
/// An unboxed 31-bit integer: i31ref. This may be going away if there is no common
/// supertype of all reference types. Part of the GC proposal.
I31,
/// A reference to a function, struct, or array: ref T. This is part of the
/// GC proposal.
Type(ast::Index<'a>),
/// A nullable reference to a function, struct, or array: optref T. This is
/// part of the GC proposal.
OptType(ast::Index<'a>),
}
impl<'a> From<TableElemType> for RefType<'a> {
fn from(elem: TableElemType) -> Self {
match elem {
TableElemType::Funcref => RefType::Func,
TableElemType::Externref => RefType::Extern,
TableElemType::Exnref => RefType::Exn,
}
}
}
impl<'a> Parse<'a> for RefType<'a> {
fn parse(parser: Parser<'a>) -> Result<Self> {
let mut l = parser.lookahead1();
if l.peek::<kw::func>() {
parser.parse::<kw::func>()?;
Ok(RefType::Func)
} else if l.peek::<kw::r#extern>() {
parser.parse::<kw::r#extern>()?;
Ok(RefType::Extern)
} else if l.peek::<kw::exn>() {
parser.parse::<kw::exn>()?;
Ok(RefType::Exn)
} else if l.peek::<kw::eq>() {
parser.parse::<kw::eq>()?;
Ok(RefType::Eq)
} else if l.peek::<kw::i31>() {
parser.parse::<kw::i31>()?;
Ok(RefType::I31)
} else if l.peek::<kw::opt>() {
parser.parse::<kw::opt>()?;
Ok(RefType::OptType(parser.parse()?))
} else if l.peek::<ast::Index>() {
Ok(RefType::Type(parser.parse()?))
} else {
Err(l.error())
}
@ -146,16 +181,12 @@ impl<'a> Parse<'a> for GlobalType<'a> {
}
/// List of different kinds of table types we can have.
///
/// Currently there's only one, a `funcref`.
#[derive(Copy, Clone, Debug)]
pub enum TableElemType {
/// An element for a table that is a list of functions.
Funcref,
/// An element for a table that is a list of `anyref` values.
Anyref,
/// An element for a table that is a list of `nullref` values.
Nullref,
/// An element for a table that is a list of `externref` values.
Externref,
/// An element for a table that is a list of `exnref` values.
Exnref,
}
@ -172,11 +203,13 @@ impl<'a> Parse<'a> for TableElemType {
parser.parse::<kw::funcref>()?;
Ok(TableElemType::Funcref)
} else if l.peek::<kw::anyref>() {
// Parse `anyref` as an alias of `externref` until all tests are
// ported to use the new name
parser.parse::<kw::anyref>()?;
Ok(TableElemType::Anyref)
} else if l.peek::<kw::nullref>() {
parser.parse::<kw::nullref>()?;
Ok(TableElemType::Nullref)
Ok(TableElemType::Externref)
} else if l.peek::<kw::externref>() {
parser.parse::<kw::externref>()?;
Ok(TableElemType::Externref)
} else if l.peek::<kw::exnref>() {
parser.parse::<kw::exnref>()?;
Ok(TableElemType::Exnref)
@ -190,7 +223,7 @@ impl Peek for TableElemType {
fn peek(cursor: Cursor<'_>) -> bool {
kw::funcref::peek(cursor)
|| kw::anyref::peek(cursor)
|| kw::nullref::peek(cursor)
|| kw::externref::peek(cursor)
|| /* legacy */ kw::anyfunc::peek(cursor)
|| kw::exnref::peek(cursor)
}

46
third_party/rust/wast/src/binary.rs поставляемый
Просмотреть файл

@ -250,24 +250,33 @@ impl<'a> Encode for ValType<'a> {
ValType::V128 => e.push(0x7b),
ValType::I8 => e.push(0x7a),
ValType::I16 => e.push(0x79),
ValType::Funcref => e.push(0x70),
ValType::Anyref => e.push(0x6f),
ValType::Nullref => e.push(0x6e),
ValType::Ref(index) => {
e.push(0x6d);
index.encode(e);
ValType::Ref(ty) => {
ty.encode(e);
}
ValType::Optref(index) => {
e.push(0x6c);
index.encode(e);
}
ValType::Eqref => e.push(0x6b),
ValType::I31ref => e.push(0x6a),
ValType::Rtt(index) => {
e.push(0x69);
index.encode(e);
}
ValType::Exnref => e.push(0x68),
}
}
}
impl<'a> Encode for RefType<'a> {
fn encode(&self, e: &mut Vec<u8>) {
match self {
RefType::Func => e.push(0x70),
RefType::Extern => e.push(0x6f),
RefType::Eq => e.push(0x6b),
RefType::I31 => e.push(0x6a),
RefType::Exn => e.push(0x68),
RefType::Type(index) => {
e.push(0x6d);
index.encode(e);
}
RefType::OptType(index) => {
e.push(0x6c);
index.encode(e);
}
}
}
}
@ -329,10 +338,9 @@ impl Encode for TableType {
impl Encode for TableElemType {
fn encode(&self, e: &mut Vec<u8>) {
match self {
TableElemType::Funcref => ValType::Funcref.encode(e),
TableElemType::Anyref => ValType::Anyref.encode(e),
TableElemType::Nullref => ValType::Nullref.encode(e),
TableElemType::Exnref => ValType::Exnref.encode(e),
TableElemType::Funcref => RefType::Func.encode(e),
TableElemType::Externref => RefType::Extern.encode(e),
TableElemType::Exnref => RefType::Exn.encode(e),
}
}
}
@ -517,7 +525,7 @@ impl Encode for ElemPayload<'_> {
fn encode(&self, e: &mut Vec<u8>) {
match self {
ElemPayload::Indices(v) => v.encode(e),
ElemPayload::Exprs { exprs, .. } => {
ElemPayload::Exprs { exprs, ty } => {
exprs.len().encode(e);
for idx in exprs {
match idx {
@ -525,7 +533,7 @@ impl Encode for ElemPayload<'_> {
Instruction::RefFunc(*idx).encode(e);
}
None => {
Instruction::RefNull.encode(e);
Instruction::RefNull((*ty).into()).encode(e);
}
}
Instruction::End(None).encode(e);

19
third_party/rust/wast/src/resolve/names.rs поставляемый
Просмотреть файл

@ -209,7 +209,20 @@ impl<'a> Resolver<'a> {
fn resolve_valtype(&self, ty: &mut ValType<'a>) -> Result<(), Error> {
match ty {
ValType::Ref(i) | ValType::Optref(i) | ValType::Rtt(i) => {
ValType::Ref(ty) => self.resolve_reftype(ty)?,
ValType::Rtt(i) => {
self.ns(Ns::Type)
.resolve(i)
.map_err(|id| self.resolve_error(id, "type"))?;
}
_ => {}
}
Ok(())
}
fn resolve_reftype(&self, ty: &mut RefType<'a>) -> Result<(), Error> {
match ty {
RefType::Type(i) | RefType::OptType(i) => {
self.ns(Ns::Type)
.resolve(i)
.map_err(|id| self.resolve_error(id, "type"))?;
@ -514,7 +527,7 @@ impl<'a, 'b> ExprResolver<'a, 'b> {
));
}
Br(i) | BrIf(i) | BrOnCast(i) => self.resolve_label(i),
Br(i) | BrIf(i) | BrOnCast(i) | BrOnNull(i) => self.resolve_label(i),
BrTable(i) => {
for label in i.labels.iter_mut() {
@ -548,6 +561,8 @@ impl<'a, 'b> ExprResolver<'a, 'b> {
self.resolver.resolve_valtype(&mut s.to)
}
RefNull(ty) | RefIsNull(ty) => self.resolver.resolve_reftype(ty),
_ => Ok(()),
}
}

2
third_party/rust/wat/.cargo-checksum.json поставляемый

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

107
third_party/rust/wat/Cargo.lock сгенерированный поставляемый
Просмотреть файл

@ -2,24 +2,15 @@
# It is not intended for manual editing.
[[package]]
name = "anyhow"
version = "1.0.26"
version = "1.0.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c"
checksum = "d9a60d744a80c30fcb657dfe2c1b22bcb3e814c1a1e3674f32bf5820b570fbff"
[[package]]
name = "autocfg"
version = "0.1.7"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2"
[[package]]
name = "c2-chacha"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb"
dependencies = [
"ppv-lite86",
]
checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
[[package]]
name = "cfg-if"
@ -29,24 +20,26 @@ checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
[[package]]
name = "crossbeam-deque"
version = "0.7.2"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3aa945d63861bfe624b55d153a39684da1e8c0bc8fba932f7ee3a3c16cea3ca"
checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285"
dependencies = [
"crossbeam-epoch",
"crossbeam-utils",
"maybe-uninit",
]
[[package]]
name = "crossbeam-epoch"
version = "0.8.0"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5064ebdbf05ce3cb95e45c8b086f72263f4166b29b97f6baff7ef7fe047b55ac"
checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace"
dependencies = [
"autocfg",
"cfg-if",
"crossbeam-utils",
"lazy_static",
"maybe-uninit",
"memoffset",
"scopeguard",
]
@ -63,9 +56,9 @@ dependencies = [
[[package]]
name = "crossbeam-utils"
version = "0.7.0"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4"
checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
dependencies = [
"autocfg",
"cfg-if",
@ -100,9 +93,9 @@ dependencies = [
[[package]]
name = "hermit-abi"
version = "0.1.7"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2c55f143919fbc0bc77e427fe2d74cf23786d7c1875666f2fde3ac3c659bb67"
checksum = "61565ff7aaace3525556587bd2dc31d4a07071957be715e63ce7b1eccf51a8f4"
dependencies = [
"libc",
]
@ -127,24 +120,30 @@ checksum = "3576a87f2ba00f6f106fdfcd16db1d698d648a26ad8e0573cad8537c3c362d2a"
[[package]]
name = "libc"
version = "0.2.67"
version = "0.2.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb147597cdf94ed43ab7a9038716637d2d1bf2bc571da995d0028dec06bd3018"
checksum = "99e85c08494b21a9054e7fe1374a732aeadaff3980b6990b94bfd3a70f690005"
[[package]]
name = "maybe-uninit"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
[[package]]
name = "memoffset"
version = "0.5.3"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9"
checksum = "b4fc2c02a7e374099d4ee95a193111f72d2110197fe200272371758f6c3643d8"
dependencies = [
"rustc_version",
"autocfg",
]
[[package]]
name = "num_cpus"
version = "1.12.0"
version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46203554f085ff89c235cd12f7075f3233af9b11ed7c9e16dfe2560d03313ce6"
checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
dependencies = [
"hermit-abi",
"libc",
@ -171,11 +170,11 @@ dependencies = [
[[package]]
name = "rand_chacha"
version = "0.2.1"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853"
checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
dependencies = [
"c2-chacha",
"ppv-lite86",
"rand_core",
]
@ -236,20 +235,11 @@ dependencies = [
"winapi",
]
[[package]]
name = "rustc_version"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
dependencies = [
"semver",
]
[[package]]
name = "ryu"
version = "1.0.2"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8"
checksum = "ed3d612bc64430efeb3f7ee6ef26d590dce0c43249217bddc62112540c7941e1"
[[package]]
name = "scopeguard"
@ -257,32 +247,17 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
name = "semver"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
dependencies = [
"semver-parser",
]
[[package]]
name = "semver-parser"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
[[package]]
name = "serde"
version = "1.0.104"
version = "1.0.106"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449"
checksum = "36df6ac6412072f67cf767ebbde4133a5b2e88e76dc6187fa7104cd16f783399"
[[package]]
name = "serde_json"
version = "1.0.48"
version = "1.0.52"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9371ade75d4c2d6cb154141b9752cf3781ec9c05e0e5cf35060e1e70ee7b9c25"
checksum = "a7894c8ed05b7a3a279aeb79025fdec1d3158080b75b98a08faf2806bb799edd"
dependencies = [
"itoa",
"ryu",
@ -317,22 +292,22 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
[[package]]
name = "wasmparser"
version = "0.51.2"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a40d24f114a3f24b459ec292019220cff6388673b4a2c0a11483665b599ef15c"
checksum = "7daff424bb0ec17d7dfb3f36e6d13a3882b2a5bebf997769ac853d5f950d6513"
[[package]]
name = "wast"
version = "13.0.0"
version = "16.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b20abd8b4a26f7e0d4dd5e357e90a3d555ec190e94472c9b2b27c5b9777f9ae"
checksum = "8564a0c8f4d468d71c2b263dd1f675fa2cac6e7331ff8379cbb88cb79fcef8d1"
dependencies = [
"leb128",
]
[[package]]
name = "wat"
version = "1.0.14"
version = "1.0.17"
dependencies = [
"anyhow",
"getopts",

6
third_party/rust/wat/Cargo.toml поставляемый
Просмотреть файл

@ -13,7 +13,7 @@
[package]
edition = "2018"
name = "wat"
version = "1.0.14"
version = "1.0.17"
authors = ["Alex Crichton <alex@alexcrichton.com>"]
exclude = ["tests/wabt", "tests/testsuite"]
description = "Rust parser for the WebAssembly Text format, WAT\n"
@ -35,7 +35,7 @@ harness = false
name = "parse-fail"
harness = false
[dependencies.wast]
version = "13.0.0"
version = "16.0.0"
[dev-dependencies.anyhow]
version = "1.0"
@ -52,4 +52,4 @@ version = "1.0"
version = "3.1"
[dev-dependencies.wasmparser]
version = "0.51"
version = "0.52"

1
third_party/rust/wat/tests/parse-fail/bad-index.wat поставляемый Normal file
Просмотреть файл

@ -0,0 +1 @@
(func br_on_null $s)

5
third_party/rust/wat/tests/parse-fail/bad-index.wat.err поставляемый Normal file
Просмотреть файл

@ -0,0 +1,5 @@
failed to find label named `$s`
--> tests/parse-fail/bad-index.wat:1:18
|
1 | (func br_on_null $s)
| ^

Просмотреть файл

@ -21,6 +21,5 @@
(func
struct.narrow i32 f32
struct.narrow anyref funcref
struct.narrow anyref nullref
)
)

23
third_party/rust/wat/tests/wabt.rs поставляемый
Просмотреть файл

@ -245,6 +245,7 @@ fn error_matches(error: &str, message: &str) -> bool {
|| message == "unclosed annotation"
|| message == "malformed annotation id"
|| message == "alignment must be a power of two"
|| message == "i32 constant out of range"
{
return error.contains("expected ")
|| error.contains("constant out of range")
@ -445,6 +446,10 @@ struct Wast2Json {
}
fn wast2json(test: &Path) -> Option<Wast2Json> {
// Right now wabt infinite loops on this test.
if test.ends_with("testsuite/proposals/annotations/annotations.wast") {
return None;
}
let td = tempfile::TempDir::new().unwrap();
let result = Command::new("wast2json")
.arg(test)
@ -504,5 +509,23 @@ fn skip_test(test: &Path, contents: &str) -> bool {
return true;
}
// Waiting for wabt to remove subtyping from reference-types.
if test
.iter()
.any(|x| x == "bulk-memory-operations" || x == "reference-types")
|| test.ends_with("reference-types.txt")
|| test.ends_with("all-features.txt")
|| test.ends_with("all-features.txt")
|| test.ends_with("bulk-memory-named.txt")
|| test.ends_with("reference-types-named.txt")
|| test.ends_with("table-grow.txt")
|| test.ends_with("result-exnref.txt")
|| test.ends_with("global-exnref.txt")
|| test.ends_with("global.txt")
|| test.ends_with("bulk-memory.txt")
{
return true;
}
false
}