From 1e643f503e5463e3602f36214fb7610eee7781b2 Mon Sep 17 00:00:00 2001 From: YiYing He Date: Thu, 12 May 2022 03:41:45 +0800 Subject: [PATCH] [Test] Add the extended-const tests. Signed-off-by: YiYing He --- extended-const/data/data.0.wasm | Bin 0 -> 179 bytes extended-const/data/data.1.wasm | Bin 0 -> 22 bytes extended-const/data/data.10.wasm | Bin 0 -> 30 bytes extended-const/data/data.11.wasm | Bin 0 -> 30 bytes extended-const/data/data.12.wasm | Bin 0 -> 47 bytes extended-const/data/data.13.wasm | Bin 0 -> 24 bytes extended-const/data/data.14.wasm | Bin 0 -> 21 bytes extended-const/data/data.15.wasm | Bin 0 -> 38 bytes extended-const/data/data.16.wasm | Bin 0 -> 22 bytes extended-const/data/data.17.wasm | Bin 0 -> 23 bytes extended-const/data/data.18.wasm | Bin 0 -> 21 bytes extended-const/data/data.19.wasm | Bin 0 -> 38 bytes extended-const/data/data.2.wasm | Bin 0 -> 39 bytes extended-const/data/data.20.wasm | Bin 0 -> 22 bytes extended-const/data/data.21.wasm | Bin 0 -> 39 bytes extended-const/data/data.22.wasm | Bin 0 -> 40 bytes extended-const/data/data.23.wasm | Bin 0 -> 62 bytes extended-const/data/data.24.wasm | Bin 0 -> 63 bytes extended-const/data/data.25.wasm | Bin 0 -> 39 bytes extended-const/data/data.26.wasm | Bin 0 -> 40 bytes extended-const/data/data.27.wasm | Bin 0 -> 24 bytes extended-const/data/data.28.wasm | Bin 0 -> 24 bytes extended-const/data/data.29.wasm | Bin 0 -> 24 bytes extended-const/data/data.3.wasm | Bin 0 -> 49 bytes extended-const/data/data.30.wasm | Bin 0 -> 56 bytes extended-const/data/data.31.wasm | Bin 0 -> 22 bytes extended-const/data/data.32.wasm | Bin 0 -> 23 bytes extended-const/data/data.33.wasm | Bin 0 -> 23 bytes extended-const/data/data.34.wasm | Bin 0 -> 21 bytes extended-const/data/data.35.wasm | Bin 0 -> 22 bytes extended-const/data/data.36.wasm | Bin 0 -> 48 bytes extended-const/data/data.37.wasm | Bin 0 -> 25 bytes extended-const/data/data.38.wasm | Bin 0 -> 41 bytes extended-const/data/data.39.wasm | Bin 0 -> 24 bytes extended-const/data/data.4.wasm | Bin 0 -> 71 bytes extended-const/data/data.40.wasm | Bin 0 -> 25 bytes extended-const/data/data.41.wasm | Bin 0 -> 22 bytes extended-const/data/data.42.wasm | Bin 0 -> 39 bytes extended-const/data/data.43.wasm | Bin 0 -> 23 bytes extended-const/data/data.44.wasm | Bin 0 -> 40 bytes extended-const/data/data.45.wasm | Bin 0 -> 16 bytes extended-const/data/data.46.wasm | Bin 0 -> 22 bytes extended-const/data/data.47.wasm | Bin 0 -> 16 bytes extended-const/data/data.48.wasm | Bin 0 -> 17 bytes extended-const/data/data.49.wasm | Bin 0 -> 84 bytes extended-const/data/data.5.wasm | Bin 0 -> 48 bytes extended-const/data/data.50.wasm | Bin 0 -> 79 bytes extended-const/data/data.51.wasm | Bin 0 -> 21 bytes extended-const/data/data.52.wasm | Bin 0 -> 21 bytes extended-const/data/data.53.wasm | Bin 0 -> 19 bytes extended-const/data/data.54.wasm | Bin 0 -> 23 bytes extended-const/data/data.55.wasm | Bin 0 -> 45 bytes extended-const/data/data.56.wasm | Bin 0 -> 45 bytes extended-const/data/data.57.wasm | Bin 0 -> 22 bytes extended-const/data/data.58.wasm | Bin 0 -> 20 bytes extended-const/data/data.59.wasm | Bin 0 -> 22 bytes extended-const/data/data.6.wasm | Bin 0 -> 62 bytes extended-const/data/data.60.wasm | Bin 0 -> 22 bytes extended-const/data/data.61.wasm | Bin 0 -> 34 bytes extended-const/data/data.62.wasm | Bin 0 -> 21 bytes extended-const/data/data.63.wasm | Bin 0 -> 43 bytes extended-const/data/data.64.wasm | Bin 0 -> 47 bytes extended-const/data/data.7.wasm | Bin 0 -> 48 bytes extended-const/data/data.8.wasm | Bin 0 -> 62 bytes extended-const/data/data.9.wasm | Bin 0 -> 30 bytes extended-const/data/data.json | 67 +++ extended-const/data/data.wast | 530 ++++++++++++++++++++ extended-const/elem/elem.0.wasm | Bin 0 -> 457 bytes extended-const/elem/elem.1.wasm | Bin 0 -> 52 bytes extended-const/elem/elem.10.wasm | Bin 0 -> 47 bytes extended-const/elem/elem.11.wasm | Bin 0 -> 47 bytes extended-const/elem/elem.12.wasm | Bin 0 -> 39 bytes extended-const/elem/elem.13.wasm | Bin 0 -> 55 bytes extended-const/elem/elem.14.wasm | Bin 0 -> 22 bytes extended-const/elem/elem.15.wasm | Bin 0 -> 38 bytes extended-const/elem/elem.16.wasm | Bin 0 -> 23 bytes extended-const/elem/elem.17.wasm | Bin 0 -> 22 bytes extended-const/elem/elem.18.wasm | Bin 0 -> 55 bytes extended-const/elem/elem.19.wasm | Bin 0 -> 56 bytes extended-const/elem/elem.2.wasm | Bin 0 -> 39 bytes extended-const/elem/elem.20.wasm | Bin 0 -> 55 bytes extended-const/elem/elem.21.wasm | Bin 0 -> 56 bytes extended-const/elem/elem.22.wasm | Bin 0 -> 39 bytes extended-const/elem/elem.23.wasm | Bin 0 -> 40 bytes extended-const/elem/elem.24.wasm | Bin 0 -> 40 bytes extended-const/elem/elem.25.wasm | Bin 0 -> 22 bytes extended-const/elem/elem.26.wasm | Bin 0 -> 39 bytes extended-const/elem/elem.27.wasm | Bin 0 -> 55 bytes extended-const/elem/elem.28.wasm | Bin 0 -> 40 bytes extended-const/elem/elem.29.wasm | Bin 0 -> 55 bytes extended-const/elem/elem.3.wasm | Bin 0 -> 55 bytes extended-const/elem/elem.30.wasm | Bin 0 -> 39 bytes extended-const/elem/elem.31.wasm | Bin 0 -> 55 bytes extended-const/elem/elem.32.wasm | Bin 0 -> 39 bytes extended-const/elem/elem.33.wasm | Bin 0 -> 55 bytes extended-const/elem/elem.34.wasm | Bin 0 -> 63 bytes extended-const/elem/elem.35.wasm | Bin 0 -> 61 bytes extended-const/elem/elem.36.wasm | Bin 0 -> 33 bytes extended-const/elem/elem.37.wasm | Bin 0 -> 22 bytes extended-const/elem/elem.38.wasm | Bin 0 -> 22 bytes extended-const/elem/elem.39.wasm | Bin 0 -> 20 bytes extended-const/elem/elem.4.wasm | Bin 0 -> 63 bytes extended-const/elem/elem.40.wasm | Bin 0 -> 24 bytes extended-const/elem/elem.41.wasm | Bin 0 -> 46 bytes extended-const/elem/elem.42.wasm | Bin 0 -> 46 bytes extended-const/elem/elem.43.wasm | Bin 0 -> 23 bytes extended-const/elem/elem.44.wasm | Bin 0 -> 21 bytes extended-const/elem/elem.45.wasm | Bin 0 -> 23 bytes extended-const/elem/elem.46.wasm | Bin 0 -> 23 bytes extended-const/elem/elem.47.wasm | Bin 0 -> 35 bytes extended-const/elem/elem.48.wasm | Bin 0 -> 22 bytes extended-const/elem/elem.49.wasm | Bin 0 -> 44 bytes extended-const/elem/elem.5.wasm | Bin 0 -> 79 bytes extended-const/elem/elem.50.wasm | Bin 0 -> 48 bytes extended-const/elem/elem.51.wasm | Bin 0 -> 25 bytes extended-const/elem/elem.52.wasm | Bin 0 -> 27 bytes extended-const/elem/elem.53.wasm | Bin 0 -> 25 bytes extended-const/elem/elem.54.wasm | Bin 0 -> 25 bytes extended-const/elem/elem.55.wasm | Bin 0 -> 44 bytes extended-const/elem/elem.56.wasm | Bin 0 -> 44 bytes extended-const/elem/elem.57.wasm | Bin 0 -> 87 bytes extended-const/elem/elem.58.wasm | Bin 0 -> 111 bytes extended-const/elem/elem.59.wasm | Bin 0 -> 128 bytes extended-const/elem/elem.6.wasm | Bin 0 -> 66 bytes extended-const/elem/elem.60.wasm | Bin 0 -> 78 bytes extended-const/elem/elem.61.wasm | Bin 0 -> 78 bytes extended-const/elem/elem.62.wasm | Bin 0 -> 39 bytes extended-const/elem/elem.63.wasm | Bin 0 -> 27 bytes extended-const/elem/elem.64.wasm | Bin 0 -> 51 bytes extended-const/elem/elem.65.wasm | Bin 0 -> 49 bytes extended-const/elem/elem.66.wasm | Bin 0 -> 74 bytes extended-const/elem/elem.67.wasm | Bin 0 -> 43 bytes extended-const/elem/elem.68.wasm | Bin 0 -> 42 bytes extended-const/elem/elem.69.wasm | Bin 0 -> 87 bytes extended-const/elem/elem.7.wasm | Bin 0 -> 66 bytes extended-const/elem/elem.8.wasm | Bin 0 -> 95 bytes extended-const/elem/elem.9.wasm | Bin 0 -> 105 bytes extended-const/elem/elem.json | 101 ++++ extended-const/elem/elem.wast | 701 +++++++++++++++++++++++++++ extended-const/global/global.0.wasm | Bin 0 -> 1508 bytes extended-const/global/global.1.wasm | Bin 0 -> 42 bytes extended-const/global/global.10.wasm | Bin 0 -> 15 bytes extended-const/global/global.11.wasm | Bin 0 -> 19 bytes extended-const/global/global.12.wasm | Bin 0 -> 18 bytes extended-const/global/global.13.wasm | Bin 0 -> 14 bytes extended-const/global/global.14.wasm | Bin 0 -> 24 bytes extended-const/global/global.15.wasm | Bin 0 -> 40 bytes extended-const/global/global.16.wasm | Bin 0 -> 40 bytes extended-const/global/global.17.wasm | Bin 0 -> 16 bytes extended-const/global/global.18.wasm | Bin 0 -> 21 bytes extended-const/global/global.19.wasm | Bin 0 -> 21 bytes extended-const/global/global.2.wasm | Bin 0 -> 54 bytes extended-const/global/global.20.wasm | Bin 0 -> 21 bytes extended-const/global/global.21.wasm | Bin 0 -> 38 bytes extended-const/global/global.22.wasm | Bin 0 -> 42 bytes extended-const/global/global.23.wasm | Bin 0 -> 34 bytes extended-const/global/global.24.wasm | Bin 0 -> 38 bytes extended-const/global/global.25.wasm | Bin 0 -> 38 bytes extended-const/global/global.26.wasm | Bin 0 -> 16 bytes extended-const/global/global.27.wasm | Bin 0 -> 20 bytes extended-const/global/global.28.wasm | Bin 0 -> 20 bytes extended-const/global/global.29.wasm | Bin 0 -> 27 bytes extended-const/global/global.3.wasm | Bin 0 -> 26 bytes extended-const/global/global.30.wasm | Bin 0 -> 35 bytes extended-const/global/global.31.wasm | Bin 0 -> 53 bytes extended-const/global/global.32.wasm | Bin 0 -> 61 bytes extended-const/global/global.33.wasm | Bin 0 -> 28 bytes extended-const/global/global.34.wasm | Bin 0 -> 36 bytes extended-const/global/global.35.wasm | Bin 0 -> 54 bytes extended-const/global/global.36.wasm | Bin 0 -> 62 bytes extended-const/global/global.37.wasm | Bin 0 -> 34 bytes extended-const/global/global.38.wasm | Bin 0 -> 39 bytes extended-const/global/global.39.wasm | Bin 0 -> 39 bytes extended-const/global/global.4.wasm | Bin 0 -> 26 bytes extended-const/global/global.40.wasm | Bin 0 -> 41 bytes extended-const/global/global.41.wasm | Bin 0 -> 44 bytes extended-const/global/global.42.wasm | Bin 0 -> 41 bytes extended-const/global/global.43.wasm | Bin 0 -> 41 bytes extended-const/global/global.44.wasm | Bin 0 -> 42 bytes extended-const/global/global.45.wasm | Bin 0 -> 35 bytes extended-const/global/global.46.wasm | Bin 0 -> 39 bytes extended-const/global/global.47.wasm | Bin 0 -> 47 bytes extended-const/global/global.48.wasm | Bin 0 -> 69 bytes extended-const/global/global.49.wat | 1 + extended-const/global/global.5.wasm | Bin 0 -> 20 bytes extended-const/global/global.50.wat | 1 + extended-const/global/global.51.wat | 1 + extended-const/global/global.6.wasm | Bin 0 -> 16 bytes extended-const/global/global.7.wasm | Bin 0 -> 20 bytes extended-const/global/global.8.wasm | Bin 0 -> 17 bytes extended-const/global/global.9.wasm | Bin 0 -> 17 bytes extended-const/global/global.json | 116 +++++ extended-const/global/global.wast | 645 ++++++++++++++++++++++++ 193 files changed, 2163 insertions(+) create mode 100644 extended-const/data/data.0.wasm create mode 100644 extended-const/data/data.1.wasm create mode 100644 extended-const/data/data.10.wasm create mode 100644 extended-const/data/data.11.wasm create mode 100644 extended-const/data/data.12.wasm create mode 100644 extended-const/data/data.13.wasm create mode 100644 extended-const/data/data.14.wasm create mode 100644 extended-const/data/data.15.wasm create mode 100644 extended-const/data/data.16.wasm create mode 100644 extended-const/data/data.17.wasm create mode 100644 extended-const/data/data.18.wasm create mode 100644 extended-const/data/data.19.wasm create mode 100644 extended-const/data/data.2.wasm create mode 100644 extended-const/data/data.20.wasm create mode 100644 extended-const/data/data.21.wasm create mode 100644 extended-const/data/data.22.wasm create mode 100644 extended-const/data/data.23.wasm create mode 100644 extended-const/data/data.24.wasm create mode 100644 extended-const/data/data.25.wasm create mode 100644 extended-const/data/data.26.wasm create mode 100644 extended-const/data/data.27.wasm create mode 100644 extended-const/data/data.28.wasm create mode 100644 extended-const/data/data.29.wasm create mode 100644 extended-const/data/data.3.wasm create mode 100644 extended-const/data/data.30.wasm create mode 100644 extended-const/data/data.31.wasm create mode 100644 extended-const/data/data.32.wasm create mode 100644 extended-const/data/data.33.wasm create mode 100644 extended-const/data/data.34.wasm create mode 100644 extended-const/data/data.35.wasm create mode 100644 extended-const/data/data.36.wasm create mode 100644 extended-const/data/data.37.wasm create mode 100644 extended-const/data/data.38.wasm create mode 100644 extended-const/data/data.39.wasm create mode 100644 extended-const/data/data.4.wasm create mode 100644 extended-const/data/data.40.wasm create mode 100644 extended-const/data/data.41.wasm create mode 100644 extended-const/data/data.42.wasm create mode 100644 extended-const/data/data.43.wasm create mode 100644 extended-const/data/data.44.wasm create mode 100644 extended-const/data/data.45.wasm create mode 100644 extended-const/data/data.46.wasm create mode 100644 extended-const/data/data.47.wasm create mode 100644 extended-const/data/data.48.wasm create mode 100644 extended-const/data/data.49.wasm create mode 100644 extended-const/data/data.5.wasm create mode 100644 extended-const/data/data.50.wasm create mode 100644 extended-const/data/data.51.wasm create mode 100644 extended-const/data/data.52.wasm create mode 100644 extended-const/data/data.53.wasm create mode 100644 extended-const/data/data.54.wasm create mode 100644 extended-const/data/data.55.wasm create mode 100644 extended-const/data/data.56.wasm create mode 100644 extended-const/data/data.57.wasm create mode 100644 extended-const/data/data.58.wasm create mode 100644 extended-const/data/data.59.wasm create mode 100644 extended-const/data/data.6.wasm create mode 100644 extended-const/data/data.60.wasm create mode 100644 extended-const/data/data.61.wasm create mode 100644 extended-const/data/data.62.wasm create mode 100644 extended-const/data/data.63.wasm create mode 100644 extended-const/data/data.64.wasm create mode 100644 extended-const/data/data.7.wasm create mode 100644 extended-const/data/data.8.wasm create mode 100644 extended-const/data/data.9.wasm create mode 100644 extended-const/data/data.json create mode 100644 extended-const/data/data.wast create mode 100644 extended-const/elem/elem.0.wasm create mode 100644 extended-const/elem/elem.1.wasm create mode 100644 extended-const/elem/elem.10.wasm create mode 100644 extended-const/elem/elem.11.wasm create mode 100644 extended-const/elem/elem.12.wasm create mode 100644 extended-const/elem/elem.13.wasm create mode 100644 extended-const/elem/elem.14.wasm create mode 100644 extended-const/elem/elem.15.wasm create mode 100644 extended-const/elem/elem.16.wasm create mode 100644 extended-const/elem/elem.17.wasm create mode 100644 extended-const/elem/elem.18.wasm create mode 100644 extended-const/elem/elem.19.wasm create mode 100644 extended-const/elem/elem.2.wasm create mode 100644 extended-const/elem/elem.20.wasm create mode 100644 extended-const/elem/elem.21.wasm create mode 100644 extended-const/elem/elem.22.wasm create mode 100644 extended-const/elem/elem.23.wasm create mode 100644 extended-const/elem/elem.24.wasm create mode 100644 extended-const/elem/elem.25.wasm create mode 100644 extended-const/elem/elem.26.wasm create mode 100644 extended-const/elem/elem.27.wasm create mode 100644 extended-const/elem/elem.28.wasm create mode 100644 extended-const/elem/elem.29.wasm create mode 100644 extended-const/elem/elem.3.wasm create mode 100644 extended-const/elem/elem.30.wasm create mode 100644 extended-const/elem/elem.31.wasm create mode 100644 extended-const/elem/elem.32.wasm create mode 100644 extended-const/elem/elem.33.wasm create mode 100644 extended-const/elem/elem.34.wasm create mode 100644 extended-const/elem/elem.35.wasm create mode 100644 extended-const/elem/elem.36.wasm create mode 100644 extended-const/elem/elem.37.wasm create mode 100644 extended-const/elem/elem.38.wasm create mode 100644 extended-const/elem/elem.39.wasm create mode 100644 extended-const/elem/elem.4.wasm create mode 100644 extended-const/elem/elem.40.wasm create mode 100644 extended-const/elem/elem.41.wasm create mode 100644 extended-const/elem/elem.42.wasm create mode 100644 extended-const/elem/elem.43.wasm create mode 100644 extended-const/elem/elem.44.wasm create mode 100644 extended-const/elem/elem.45.wasm create mode 100644 extended-const/elem/elem.46.wasm create mode 100644 extended-const/elem/elem.47.wasm create mode 100644 extended-const/elem/elem.48.wasm create mode 100644 extended-const/elem/elem.49.wasm create mode 100644 extended-const/elem/elem.5.wasm create mode 100644 extended-const/elem/elem.50.wasm create mode 100644 extended-const/elem/elem.51.wasm create mode 100644 extended-const/elem/elem.52.wasm create mode 100644 extended-const/elem/elem.53.wasm create mode 100644 extended-const/elem/elem.54.wasm create mode 100644 extended-const/elem/elem.55.wasm create mode 100644 extended-const/elem/elem.56.wasm create mode 100644 extended-const/elem/elem.57.wasm create mode 100644 extended-const/elem/elem.58.wasm create mode 100644 extended-const/elem/elem.59.wasm create mode 100644 extended-const/elem/elem.6.wasm create mode 100644 extended-const/elem/elem.60.wasm create mode 100644 extended-const/elem/elem.61.wasm create mode 100644 extended-const/elem/elem.62.wasm create mode 100644 extended-const/elem/elem.63.wasm create mode 100644 extended-const/elem/elem.64.wasm create mode 100644 extended-const/elem/elem.65.wasm create mode 100644 extended-const/elem/elem.66.wasm create mode 100644 extended-const/elem/elem.67.wasm create mode 100644 extended-const/elem/elem.68.wasm create mode 100644 extended-const/elem/elem.69.wasm create mode 100644 extended-const/elem/elem.7.wasm create mode 100644 extended-const/elem/elem.8.wasm create mode 100644 extended-const/elem/elem.9.wasm create mode 100644 extended-const/elem/elem.json create mode 100644 extended-const/elem/elem.wast create mode 100644 extended-const/global/global.0.wasm create mode 100644 extended-const/global/global.1.wasm create mode 100644 extended-const/global/global.10.wasm create mode 100644 extended-const/global/global.11.wasm create mode 100644 extended-const/global/global.12.wasm create mode 100644 extended-const/global/global.13.wasm create mode 100644 extended-const/global/global.14.wasm create mode 100644 extended-const/global/global.15.wasm create mode 100644 extended-const/global/global.16.wasm create mode 100644 extended-const/global/global.17.wasm create mode 100644 extended-const/global/global.18.wasm create mode 100644 extended-const/global/global.19.wasm create mode 100644 extended-const/global/global.2.wasm create mode 100644 extended-const/global/global.20.wasm create mode 100644 extended-const/global/global.21.wasm create mode 100644 extended-const/global/global.22.wasm create mode 100644 extended-const/global/global.23.wasm create mode 100644 extended-const/global/global.24.wasm create mode 100644 extended-const/global/global.25.wasm create mode 100644 extended-const/global/global.26.wasm create mode 100644 extended-const/global/global.27.wasm create mode 100644 extended-const/global/global.28.wasm create mode 100644 extended-const/global/global.29.wasm create mode 100644 extended-const/global/global.3.wasm create mode 100644 extended-const/global/global.30.wasm create mode 100644 extended-const/global/global.31.wasm create mode 100644 extended-const/global/global.32.wasm create mode 100644 extended-const/global/global.33.wasm create mode 100644 extended-const/global/global.34.wasm create mode 100644 extended-const/global/global.35.wasm create mode 100644 extended-const/global/global.36.wasm create mode 100644 extended-const/global/global.37.wasm create mode 100644 extended-const/global/global.38.wasm create mode 100644 extended-const/global/global.39.wasm create mode 100644 extended-const/global/global.4.wasm create mode 100644 extended-const/global/global.40.wasm create mode 100644 extended-const/global/global.41.wasm create mode 100644 extended-const/global/global.42.wasm create mode 100644 extended-const/global/global.43.wasm create mode 100644 extended-const/global/global.44.wasm create mode 100644 extended-const/global/global.45.wasm create mode 100644 extended-const/global/global.46.wasm create mode 100644 extended-const/global/global.47.wasm create mode 100644 extended-const/global/global.48.wasm create mode 100644 extended-const/global/global.49.wat create mode 100644 extended-const/global/global.5.wasm create mode 100644 extended-const/global/global.50.wat create mode 100644 extended-const/global/global.51.wat create mode 100644 extended-const/global/global.6.wasm create mode 100644 extended-const/global/global.7.wasm create mode 100644 extended-const/global/global.8.wasm create mode 100644 extended-const/global/global.9.wasm create mode 100644 extended-const/global/global.json create mode 100644 extended-const/global/global.wast diff --git a/extended-const/data/data.0.wasm b/extended-const/data/data.0.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f5dae0f9b5c35ed3466c36efe3f3ecaa6c54d1a2 GIT binary patch literal 179 vcmZQbEY4+QU|?WnW@KRGUd$-L;K;zuz~IQp&61duoC4)Ba5DpWgG34dr#Tsf literal 0 HcmV?d00001 diff --git a/extended-const/data/data.1.wasm b/extended-const/data/data.1.wasm new file mode 100644 index 0000000000000000000000000000000000000000..bed5e7650e6520640e0a86508e41cb9126bef2be GIT binary patch literal 22 dcmZQbEY4+QU|?WnW@KRGW@lt@WZ-5@1OOZ!0uBHG literal 0 HcmV?d00001 diff --git a/extended-const/data/data.10.wasm b/extended-const/data/data.10.wasm new file mode 100644 index 0000000000000000000000000000000000000000..18ed2c825971a1d2439fd728d86ec9363d6c8740 GIT binary patch literal 30 lcmZQbEY4+QU|?WnW@KPwV`HpmaAe@-W@ltjX5eN_1OPEH0>}UW literal 0 HcmV?d00001 diff --git a/extended-const/data/data.11.wasm b/extended-const/data/data.11.wasm new file mode 100644 index 0000000000000000000000000000000000000000..ce9dd9bb46626f6d13139d6241add6161e751415 GIT binary patch literal 30 lcmZQbEY4+QU|?WnW@KRG=4WDXWZ-5@WN`fdpP8F62>?231jhgX literal 0 HcmV?d00001 diff --git a/extended-const/data/data.12.wasm b/extended-const/data/data.12.wasm new file mode 100644 index 0000000000000000000000000000000000000000..35e1076d25127bb6034f9d08c01023b21013373b GIT binary patch literal 47 zcmZQbEY4+QU|?VpVdN+-NKGzDEiPfpP0h_Os$^ndW(!4BQL=8)E^i literal 0 HcmV?d00001 diff --git a/extended-const/data/data.17.wasm b/extended-const/data/data.17.wasm new file mode 100644 index 0000000000000000000000000000000000000000..2f335cb3a7f7e9c3fd316cf3b16cb2343c5e8abb GIT binary patch literal 23 ecmZQbEY4+QU|?WnW@KRG=3r!SY-nKNW&i*o<^r(* literal 0 HcmV?d00001 diff --git a/extended-const/data/data.18.wasm b/extended-const/data/data.18.wasm new file mode 100644 index 0000000000000000000000000000000000000000..16b297870e0e0b38f0eb412bf25f1c3dc686a37a GIT binary patch literal 21 acmZQbEY4+QU|?Wn29n%tj0}zp+zbF2{{gB1 literal 0 HcmV?d00001 diff --git a/extended-const/data/data.19.wasm b/extended-const/data/data.19.wasm new file mode 100644 index 0000000000000000000000000000000000000000..5b30856ef8da738597b6c05e83095bf15f440e8c GIT binary patch literal 38 tcmZQbEY4+QU|?VpVdN+-NKGzDEiPfpP0h_Os$^nd;AUfFaAe?S005;#2h0Ef literal 0 HcmV?d00001 diff --git a/extended-const/data/data.2.wasm b/extended-const/data/data.2.wasm new file mode 100644 index 0000000000000000000000000000000000000000..5bcc160a271dfa69f91b1c6eb00325d6e7a7da95 GIT binary patch literal 39 ucmZQbEY4+QU|?VpVdN+-NKGzDEiPfpP0h_Os$^ndW(!4BQL=8)E^i literal 0 HcmV?d00001 diff --git a/extended-const/data/data.21.wasm b/extended-const/data/data.21.wasm new file mode 100644 index 0000000000000000000000000000000000000000..2b9f8d019cc32dd06e8b5ac33e3b0a6b9e1b96bc GIT binary patch literal 39 ucmZQbEY4+QU|?VpVdN+-NKGzDEiPfpP0h_Os$^nd;AUrJaAe?SOauU}dk8N8 literal 0 HcmV?d00001 diff --git a/extended-const/data/data.22.wasm b/extended-const/data/data.22.wasm new file mode 100644 index 0000000000000000000000000000000000000000..4e16452efe3d4cea1e1a82e17b7dd42580d152ef GIT binary patch literal 40 vcmZQbEY4+QU|?VpW#lL>NKGzDEiPfpP0h_Os$^nhVCH6LWN>8QW=sSCwK51a literal 0 HcmV?d00001 diff --git a/extended-const/data/data.23.wasm b/extended-const/data/data.23.wasm new file mode 100644 index 0000000000000000000000000000000000000000..54addd2cc2a49eedb58a155bce8399eacc644ae0 GIT binary patch literal 62 zcmZQbEY4+QU|?XNKGzDEiPfpP0h_Os$^nhVCH6LWN>8UW=sSCwKfPf literal 0 HcmV?d00001 diff --git a/extended-const/data/data.27.wasm b/extended-const/data/data.27.wasm new file mode 100644 index 0000000000000000000000000000000000000000..4f66c9176ac9a8619c155a24977c9808153560ac GIT binary patch literal 24 fcmZQbEY4+QU|?WnW@KRG=451WWN_5V;${E8WW=vvme8RxZoSc%%;K<6&SOFGH1^}2D B2D<6sW^iQ8 Lc4W%R;bs5;W6}#( literal 0 HcmV?d00001 diff --git a/extended-const/data/data.31.wasm b/extended-const/data/data.31.wasm new file mode 100644 index 0000000000000000000000000000000000000000..7ba207e5527a31fd25e314a68e96576e09994ff5 GIT binary patch literal 22 bcmZQbEY4+QU|?Wn29n(Dj0}zp+>D6;925c# literal 0 HcmV?d00001 diff --git a/extended-const/data/data.32.wasm b/extended-const/data/data.32.wasm new file mode 100644 index 0000000000000000000000000000000000000000..cfb111d1d54bfd771d7932f50c015b185aed48ba GIT binary patch literal 23 ccmZQbEY4+QU|?WnVFXg#?2HVK4BU)~03CV)4*&oF literal 0 HcmV?d00001 diff --git a/extended-const/data/data.33.wasm b/extended-const/data/data.33.wasm new file mode 100644 index 0000000000000000000000000000000000000000..7a81b3901dd866834b113b6da2480dd859e31a14 GIT binary patch literal 23 ecmZQbEY4+QU|?WnVPs@rZ5 literal 0 HcmV?d00001 diff --git a/extended-const/data/data.36.wasm b/extended-const/data/data.36.wasm new file mode 100644 index 0000000000000000000000000000000000000000..22ad3fcb50e9ad0f3ce948faf0b7a3b27afd1ad7 GIT binary patch literal 48 zcmZQbEY4+QU|?X9VB{z+NKGzDEiU0o&&f|p%!$u5He#-4U}Xl%bF(utC^K*~CISEr C1qr7B literal 0 HcmV?d00001 diff --git a/extended-const/data/data.37.wasm b/extended-const/data/data.37.wasm new file mode 100644 index 0000000000000000000000000000000000000000..d614b91246efe6ca66a78c20d0cac7a446370899 GIT binary patch literal 25 gcmZQbEY4+QU|?WnVPs@v;^t&zaBOH`;bu$(049e67ytkO literal 0 HcmV?d00001 diff --git a/extended-const/data/data.38.wasm b/extended-const/data/data.38.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e3714e493c3a36ebcb25381e1ae72551f2a59ca1 GIT binary patch literal 41 wcmZQbEY4+QU|?VpVdN+-NKGzDEiPfpP0h_Os$^ndaAf9YOat*4)4?(s0RD^&qyPW_ literal 0 HcmV?d00001 diff --git a/extended-const/data/data.40.wasm b/extended-const/data/data.40.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6717ce256d0659bb60facce5c88476d1b9379b8d GIT binary patch literal 25 gcmZQbEY4+QU|?WnVPs@t=H_H%aBOJc;ATt&04A^l9smFU literal 0 HcmV?d00001 diff --git a/extended-const/data/data.41.wasm b/extended-const/data/data.41.wasm new file mode 100644 index 0000000000000000000000000000000000000000..af905905783af9afec63fd085172c5ff889c49e8 GIT binary patch literal 22 dcmZQbEY4+QU|?WnW@KRGW@lt@tmkG-1OOfy0*wFw literal 0 HcmV?d00001 diff --git a/extended-const/data/data.42.wasm b/extended-const/data/data.42.wasm new file mode 100644 index 0000000000000000000000000000000000000000..3488bfeecc0f721d17dd6b5413b55d0056125021 GIT binary patch literal 39 ucmZQbEY4+QU|?VpVdN+-NKGzDEiPfpP0h_Os$^nd*TK literal 0 HcmV?d00001 diff --git a/extended-const/data/data.45.wasm b/extended-const/data/data.45.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e00ce9ca76f56574e792405116fcdcf0f03c82c7 GIT binary patch literal 16 XcmZQbEY4+QU|`^8V`Ok-;AQ{-6F>o> literal 0 HcmV?d00001 diff --git a/extended-const/data/data.46.wasm b/extended-const/data/data.46.wasm new file mode 100644 index 0000000000000000000000000000000000000000..8b7546cefe56c83ac45cffeca7a9832d4082dd47 GIT binary patch literal 22 bcmZQbEY4+QU|?Wn29n(Dj7*G<4BQL=8+HM% literal 0 HcmV?d00001 diff --git a/extended-const/data/data.47.wasm b/extended-const/data/data.47.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e00ce9ca76f56574e792405116fcdcf0f03c82c7 GIT binary patch literal 16 XcmZQbEY4+QU|`^8V`Ok-;AQ{-6F>o> literal 0 HcmV?d00001 diff --git a/extended-const/data/data.48.wasm b/extended-const/data/data.48.wasm new file mode 100644 index 0000000000000000000000000000000000000000..450fb730d21e6ab5fc70a9f419685d71d55451ab GIT binary patch literal 17 YcmZQbEY4+QU|`^8XJle@WZ-5102HnPr2qf` literal 0 HcmV?d00001 diff --git a/extended-const/data/data.49.wasm b/extended-const/data/data.49.wasm new file mode 100644 index 0000000000000000000000000000000000000000..d83715169ee2f55cf74e49c38354738cd3ce612f GIT binary patch literal 84 zcmZQbEY4+QU|?Wn29n&aj7*G<4BU1Mj7-cdtZeKYoLt;IynOrufWZ<@AU}R!uVP#|I;N;@w;pO8O5EK#?5fu}ckd%^^k(HBI iP*hS@QB_md(A3h_(bdy8Ff=kYF*P%{u(Yzau>}A&2nmD$ literal 0 HcmV?d00001 diff --git a/extended-const/data/data.51.wasm b/extended-const/data/data.51.wasm new file mode 100644 index 0000000000000000000000000000000000000000..9feb627c16085a231b1998658cd08d11ab08138a GIT binary patch literal 21 ccmZQbEY4+QU|?WnW@KRGW@BVHe#-4U}a`xVC3dtWKae|ZUz9*5(k9< literal 0 HcmV?d00001 diff --git a/extended-const/data/data.56.wasm b/extended-const/data/data.56.wasm new file mode 100644 index 0000000000000000000000000000000000000000..9ec7b41779bf58dbb486415ba2c3b4f7c5c3fdd4 GIT binary patch literal 45 zcmZQbEY4+QU|?VpVPq*uEiU0o&&f|p%+bv>He#-4U}a`xVC3dtWKd>sWZ-510MLpD AqW}N^ literal 0 HcmV?d00001 diff --git a/extended-const/data/data.57.wasm b/extended-const/data/data.57.wasm new file mode 100644 index 0000000000000000000000000000000000000000..22c6f1ff59b190f277ebbe793bc4fc4ffcff2117 GIT binary patch literal 22 dcmZQbEY4+QU|?WnW@KRGW@lt@WXRxV001250u%rM literal 0 HcmV?d00001 diff --git a/extended-const/data/data.58.wasm b/extended-const/data/data.58.wasm new file mode 100644 index 0000000000000000000000000000000000000000..5ecf5fa257a2000a391c97b86d6b813ebcb10e39 GIT binary patch literal 20 YcmZQbEY4+QU|?WnW@KRGW(5%p02iVGY5)KL literal 0 HcmV?d00001 diff --git a/extended-const/data/data.59.wasm b/extended-const/data/data.59.wasm new file mode 100644 index 0000000000000000000000000000000000000000..276373cf1e756eab591398fb626f8667f7dea500 GIT binary patch literal 22 bcmZQbEY4+QU|?WnW@KRGW(N|E4BQL=8*~A! literal 0 HcmV?d00001 diff --git a/extended-const/data/data.6.wasm b/extended-const/data/data.6.wasm new file mode 100644 index 0000000000000000000000000000000000000000..8b63c1adf78fec638794d07e576acef238b2aa94 GIT binary patch literal 62 zcmZQbEY4+QU|?XtWoBexHe#-4U}a`xVB}_FWKd@0W&i-d%?Dus literal 0 HcmV?d00001 diff --git a/extended-const/data/data.64.wasm b/extended-const/data/data.64.wasm new file mode 100644 index 0000000000000000000000000000000000000000..bcf57caebc2b93c23e8421cdb2471a75ca4d19f2 GIT binary patch literal 47 zcmZQbEY4+QU|?X9U}PytEiU0p&&f|p%+bv)Ez!+1He#-4WMyV#VB}_FWKd?{W&i;B C}UW literal 0 HcmV?d00001 diff --git a/extended-const/data/data.json b/extended-const/data/data.json new file mode 100644 index 00000000..dc1d5e3b --- /dev/null +++ b/extended-const/data/data.json @@ -0,0 +1,67 @@ +{"source_filename": "data.wast", + "commands": [ + {"type": "module", "line": 5, "filename": "data.0.wasm"}, + {"type": "module", "line": 35, "filename": "data.1.wasm"}, + {"type": "module", "line": 39, "filename": "data.2.wasm"}, + {"type": "module", "line": 44, "filename": "data.3.wasm"}, + {"type": "module", "line": 52, "filename": "data.4.wasm"}, + {"type": "module", "line": 62, "filename": "data.5.wasm"}, + {"type": "module", "line": 67, "filename": "data.6.wasm"}, + {"type": "module", "line": 73, "filename": "data.7.wasm"}, + {"type": "module", "line": 78, "filename": "data.8.wasm"}, + {"type": "assert_invalid", "line": 85, "filename": "data.9.wasm", "text": "unknown global", "module_type": "binary"}, + {"type": "assert_invalid", "line": 89, "filename": "data.10.wasm", "text": "unknown global", "module_type": "binary"}, + {"type": "module", "line": 96, "filename": "data.11.wasm"}, + {"type": "module", "line": 101, "filename": "data.12.wasm"}, + {"type": "module", "line": 107, "filename": "data.13.wasm"}, + {"type": "module", "line": 112, "filename": "data.14.wasm"}, + {"type": "module", "line": 116, "filename": "data.15.wasm"}, + {"type": "module", "line": 121, "filename": "data.16.wasm"}, + {"type": "module", "line": 126, "filename": "data.17.wasm"}, + {"type": "module", "line": 131, "filename": "data.18.wasm"}, + {"type": "module", "line": 135, "filename": "data.19.wasm"}, + {"type": "module", "line": 140, "filename": "data.20.wasm"}, + {"type": "module", "line": 145, "filename": "data.21.wasm"}, + {"type": "module", "line": 150, "filename": "data.22.wasm"}, + {"type": "module", "line": 155, "filename": "data.23.wasm"}, + {"type": "module", "line": 161, "filename": "data.24.wasm"}, + {"type": "module", "line": 167, "filename": "data.25.wasm"}, + {"type": "module", "line": 172, "filename": "data.26.wasm"}, + {"type": "module", "line": 179, "filename": "data.27.wasm"}, + {"type": "module", "line": 184, "filename": "data.28.wasm"}, + {"type": "module", "line": 189, "filename": "data.29.wasm"}, + {"type": "module", "line": 196, "filename": "data.30.wasm"}, + {"type": "assert_uninstantiable", "line": 212, "filename": "data.31.wasm", "text": "out of bounds memory access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 220, "filename": "data.32.wasm", "text": "out of bounds memory access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 228, "filename": "data.33.wasm", "text": "out of bounds memory access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 235, "filename": "data.34.wasm", "text": "out of bounds memory access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 242, "filename": "data.35.wasm", "text": "out of bounds memory access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 259, "filename": "data.36.wasm", "text": "out of bounds memory access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 268, "filename": "data.37.wasm", "text": "out of bounds memory access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 275, "filename": "data.38.wasm", "text": "out of bounds memory access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 283, "filename": "data.39.wasm", "text": "out of bounds memory access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 291, "filename": "data.40.wasm", "text": "out of bounds memory access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 299, "filename": "data.41.wasm", "text": "out of bounds memory access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 306, "filename": "data.42.wasm", "text": "out of bounds memory access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 314, "filename": "data.43.wasm", "text": "out of bounds memory access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 321, "filename": "data.44.wasm", "text": "out of bounds memory access", "module_type": "binary"}, + {"type": "assert_invalid", "line": 331, "filename": "data.45.wasm", "text": "unknown memory", "module_type": "binary"}, + {"type": "assert_invalid", "line": 339, "filename": "data.46.wasm", "text": "unknown memory 1", "module_type": "binary"}, + {"type": "assert_invalid", "line": 352, "filename": "data.47.wasm", "text": "unknown memory 0", "module_type": "binary"}, + {"type": "assert_invalid", "line": 363, "filename": "data.48.wasm", "text": "unknown memory 1", "module_type": "binary"}, + {"type": "assert_invalid", "line": 375, "filename": "data.49.wasm", "text": "unknown memory 1", "module_type": "binary"}, + {"type": "assert_invalid", "line": 397, "filename": "data.50.wasm", "text": "unknown memory 1", "module_type": "binary"}, + {"type": "assert_invalid", "line": 416, "filename": "data.51.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 424, "filename": "data.52.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 432, "filename": "data.53.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 440, "filename": "data.54.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 448, "filename": "data.55.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 457, "filename": "data.56.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 466, "filename": "data.57.wasm", "text": "constant expression required", "module_type": "binary"}, + {"type": "assert_invalid", "line": 474, "filename": "data.58.wasm", "text": "constant expression required", "module_type": "binary"}, + {"type": "assert_invalid", "line": 482, "filename": "data.59.wasm", "text": "constant expression required", "module_type": "binary"}, + {"type": "assert_invalid", "line": 490, "filename": "data.60.wasm", "text": "constant expression required", "module_type": "binary"}, + {"type": "assert_invalid", "line": 498, "filename": "data.61.wasm", "text": "constant expression required", "module_type": "binary"}, + {"type": "assert_invalid", "line": 507, "filename": "data.62.wasm", "text": "unknown global 0", "module_type": "binary"}, + {"type": "assert_invalid", "line": 515, "filename": "data.63.wasm", "text": "unknown global 1", "module_type": "binary"}, + {"type": "assert_invalid", "line": 524, "filename": "data.64.wasm", "text": "constant expression required", "module_type": "binary"}]} diff --git a/extended-const/data/data.wast b/extended-const/data/data.wast new file mode 100644 index 00000000..1a53d81f --- /dev/null +++ b/extended-const/data/data.wast @@ -0,0 +1,530 @@ +;; Test the data section + +;; Syntax + +(module + (memory $m 1) + (data (i32.const 0)) + (data (i32.const 1) "a" "" "bcd") + (data (offset (i32.const 0))) + (data (offset (i32.const 0)) "" "a" "bc" "") + (data (memory 0) (i32.const 0)) + (data (memory 0x0) (i32.const 1) "a" "" "bcd") + (data (memory 0x000) (offset (i32.const 0))) + (data (memory 0) (offset (i32.const 0)) "" "a" "bc" "") + (data (memory $m) (i32.const 0)) + (data (memory $m) (i32.const 1) "a" "" "bcd") + (data (memory $m) (offset (i32.const 0))) + (data (memory $m) (offset (i32.const 0)) "" "a" "bc" "") + (data $d1 (i32.const 0)) + (data $d2 (i32.const 1) "a" "" "bcd") + (data $d3 (offset (i32.const 0))) + (data $d4 (offset (i32.const 0)) "" "a" "bc" "") + (data $d5 (memory 0) (i32.const 0)) + (data $d6 (memory 0x0) (i32.const 1) "a" "" "bcd") + (data $d7 (memory 0x000) (offset (i32.const 0))) + (data $d8 (memory 0) (offset (i32.const 0)) "" "a" "bc" "") + (data $d9 (memory $m) (i32.const 0)) + (data $d10 (memory $m) (i32.const 1) "a" "" "bcd") + (data $d11 (memory $m) (offset (i32.const 0))) + (data $d12 (memory $m) (offset (i32.const 0)) "" "a" "bc" "") +) + +;; Basic use + +(module + (memory 1) + (data (i32.const 0) "a") +) +(module + (import "spectest" "memory" (memory 1)) + (data (i32.const 0) "a") +) + +(module + (memory 1) + (data (i32.const 0) "a") + (data (i32.const 3) "b") + (data (i32.const 100) "cde") + (data (i32.const 5) "x") + (data (i32.const 3) "c") +) +(module + (import "spectest" "memory" (memory 1)) + (data (i32.const 0) "a") + (data (i32.const 1) "b") + (data (i32.const 2) "cde") + (data (i32.const 3) "f") + (data (i32.const 2) "g") + (data (i32.const 1) "h") +) + +(module + (global (import "spectest" "global_i32") i32) + (memory 1) + (data (global.get 0) "a") +) +(module + (global (import "spectest" "global_i32") i32) + (import "spectest" "memory" (memory 1)) + (data (global.get 0) "a") +) + +(module + (global $g (import "spectest" "global_i32") i32) + (memory 1) + (data (global.get $g) "a") +) +(module + (global $g (import "spectest" "global_i32") i32) + (import "spectest" "memory" (memory 1)) + (data (global.get $g) "a") +) + +(assert_invalid + (module (memory 1) (global i32 (i32.const 0)) (data (global.get 0) "a")) + "unknown global" +) +(assert_invalid + (module (memory 1) (global $g i32 (i32.const 0)) (data (global.get $g) "a")) + "unknown global" +) + + +;; Corner cases + +(module + (memory 1) + (data (i32.const 0) "a") + (data (i32.const 0xffff) "b") +) +(module + (import "spectest" "memory" (memory 1)) + (data (i32.const 0) "a") + (data (i32.const 0xffff) "b") +) + +(module + (memory 2) + (data (i32.const 0x1_ffff) "a") +) + +(module + (memory 0) + (data (i32.const 0)) +) +(module + (import "spectest" "memory" (memory 0)) + (data (i32.const 0)) +) + +(module + (memory 0 0) + (data (i32.const 0)) +) + +(module + (memory 1) + (data (i32.const 0x1_0000) "") +) + +(module + (memory 0) + (data (i32.const 0) "" "") +) +(module + (import "spectest" "memory" (memory 0)) + (data (i32.const 0) "" "") +) + +(module + (memory 0 0) + (data (i32.const 0) "" "") +) + +(module + (import "spectest" "memory" (memory 0)) + (data (i32.const 0) "a") +) + +(module + (import "spectest" "memory" (memory 0 3)) + (data (i32.const 0) "a") +) + +(module + (global (import "spectest" "global_i32") i32) + (import "spectest" "memory" (memory 0)) + (data (global.get 0) "a") +) + +(module + (global (import "spectest" "global_i32") i32) + (import "spectest" "memory" (memory 0 3)) + (data (global.get 0) "a") +) + +(module + (import "spectest" "memory" (memory 0)) + (data (i32.const 1) "a") +) + +(module + (import "spectest" "memory" (memory 0 3)) + (data (i32.const 1) "a") +) + +;; Extended contant expressions + +(module + (memory 1) + (data (i32.add (i32.const 0) (i32.const 42))) +) + +(module + (memory 1) + (data (i32.sub (i32.const 42) (i32.const 0))) +) + +(module + (memory 1) + (data (i32.mul (i32.const 1) (i32.const 2))) +) + +;; Combining add, sub, mul and global.get + +(module + (global (import "spectest" "global_i32") i32) + (memory 1) + (data (i32.mul + (i32.const 2) + (i32.add + (i32.sub (global.get 0) (i32.const 1)) + (i32.const 2) + ) + ) + ) +) + +;; Invalid bounds for data + +(assert_trap + (module + (memory 0) + (data (i32.const 0) "a") + ) + "out of bounds memory access" +) + +(assert_trap + (module + (memory 0 0) + (data (i32.const 0) "a") + ) + "out of bounds memory access" +) + +(assert_trap + (module + (memory 0 1) + (data (i32.const 0) "a") + ) + "out of bounds memory access" +) +(assert_trap + (module + (memory 0) + (data (i32.const 1)) + ) + "out of bounds memory access" +) +(assert_trap + (module + (memory 0 1) + (data (i32.const 1)) + ) + "out of bounds memory access" +) + +;; This seems to cause a time-out on Travis. +(;assert_unlinkable + (module + (memory 0x10000) + (data (i32.const 0xffffffff) "ab") + ) + "" ;; either out of memory or out of bounds +;) + +(assert_trap + (module + (global (import "spectest" "global_i32") i32) + (memory 0) + (data (global.get 0) "a") + ) + "out of bounds memory access" +) + +(assert_trap + (module + (memory 1 2) + (data (i32.const 0x1_0000) "a") + ) + "out of bounds memory access" +) +(assert_trap + (module + (import "spectest" "memory" (memory 1)) + (data (i32.const 0x1_0000) "a") + ) + "out of bounds memory access" +) + +(assert_trap + (module + (memory 2) + (data (i32.const 0x2_0000) "a") + ) + "out of bounds memory access" +) + +(assert_trap + (module + (memory 2 3) + (data (i32.const 0x2_0000) "a") + ) + "out of bounds memory access" +) + +(assert_trap + (module + (memory 1) + (data (i32.const -1) "a") + ) + "out of bounds memory access" +) +(assert_trap + (module + (import "spectest" "memory" (memory 1)) + (data (i32.const -1) "a") + ) + "out of bounds memory access" +) + +(assert_trap + (module + (memory 2) + (data (i32.const -100) "a") + ) + "out of bounds memory access" +) +(assert_trap + (module + (import "spectest" "memory" (memory 1)) + (data (i32.const -100) "a") + ) + "out of bounds memory access" +) + +;; Data without memory + +(assert_invalid + (module + (data (i32.const 0) "") + ) + "unknown memory" +) + +;; Data segment with memory index 1 (only memory 0 available) +(assert_invalid + (module binary + "\00asm" "\01\00\00\00" + "\05\03\01" ;; memory section + "\00\00" ;; memory 0 + "\0b\07\01" ;; data section + "\02\01\41\00\0b" ;; active data segment 0 for memory 1 + "\00" ;; empty vec(byte) + ) + "unknown memory 1" +) + +;; Data segment with memory index 0 (no memory section) +(assert_invalid + (module binary + "\00asm" "\01\00\00\00" + "\0b\06\01" ;; data section + "\00\41\00\0b" ;; active data segment 0 for memory 0 + "\00" ;; empty vec(byte) + ) + "unknown memory 0" +) + +;; Data segment with memory index 1 (no memory section) +(assert_invalid + (module binary + "\00asm" "\01\00\00\00" + "\0b\07\01" ;; data section + "\02\01\41\00\0b" ;; active data segment 0 for memory 1 + "\00" ;; empty vec(byte) + ) + "unknown memory 1" +) + +;; Data segment with memory index 1 and vec(byte) as above, +;; only memory 0 available. +(assert_invalid + (module binary + "\00asm" "\01\00\00\00" + "\05\03\01" ;; memory section + "\00\00" ;; memory 0 + "\0b\45\01" ;; data section + "\02" ;; active segment + "\01" ;; memory index + "\41\00\0b" ;; offset constant expression + "\3e" ;; vec(byte) length + "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f" + "\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f" + "\20\21\22\23\24\25\26\27\28\29\2a\2b\2c\2d\2e\2f" + "\30\31\32\33\34\35\36\37\38\39\3a\3b\3c\3d" + ) + "unknown memory 1" +) + +;; Data segment with memory index 1 and specially crafted vec(byte) after. +;; This is to detect incorrect validation where memory index is interpreted +;; as a flag followed by "\41" interpreted as the size of vec(byte) +;; with the expected number of bytes following. +(assert_invalid + (module binary + "\00asm" "\01\00\00\00" + "\0b\45\01" ;; data section + "\02" ;; active segment + "\01" ;; memory index + "\41\00\0b" ;; offset constant expression + "\3e" ;; vec(byte) length + "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f" + "\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f" + "\20\21\22\23\24\25\26\27\28\29\2a\2b\2c\2d\2e\2f" + "\30\31\32\33\34\35\36\37\38\39\3a\3b\3c\3d" + ) + "unknown memory 1" +) + + +;; Invalid offsets + +(assert_invalid + (module + (memory 1) + (data (i64.const 0)) + ) + "type mismatch" +) + +(assert_invalid + (module + (memory 1) + (data (ref.null func)) + ) + "type mismatch" +) + +(assert_invalid + (module + (memory 1) + (data (offset (;empty instruction sequence;))) + ) + "type mismatch" +) + +(assert_invalid + (module + (memory 1) + (data (offset (i32.const 0) (i32.const 0))) + ) + "type mismatch" +) + +(assert_invalid + (module + (global (import "test" "global-i32") i32) + (memory 1) + (data (offset (global.get 0) (global.get 0))) + ) + "type mismatch" +) + +(assert_invalid + (module + (global (import "test" "global-i32") i32) + (memory 1) + (data (offset (global.get 0) (i32.const 0))) + ) + "type mismatch" +) + +(assert_invalid + (module + (memory 1) + (data (i32.ctz (i32.const 0))) + ) + "constant expression required" +) + +(assert_invalid + (module + (memory 1) + (data (nop)) + ) + "constant expression required" +) + +(assert_invalid + (module + (memory 1) + (data (offset (nop) (i32.const 0))) + ) + "constant expression required" +) + +(assert_invalid + (module + (memory 1) + (data (offset (i32.const 0) (nop))) + ) + "constant expression required" +) + +(assert_invalid + (module + (global $g (import "test" "g") (mut i32)) + (memory 1) + (data (global.get $g)) + ) + "constant expression required" +) + +(assert_invalid + (module + (memory 1) + (data (global.get 0)) + ) + "unknown global 0" +) + +(assert_invalid + (module + (global (import "test" "global-i32") i32) + (memory 1) + (data (global.get 1)) + ) + "unknown global 1" +) + +(assert_invalid + (module + (global (import "test" "global-mut-i32") (mut i32)) + (memory 1) + (data (global.get 0)) + ) + "constant expression required" +) diff --git a/extended-const/elem/elem.0.wasm b/extended-const/elem/elem.0.wasm new file mode 100644 index 0000000000000000000000000000000000000000..253ce7b1514eb904a3a30076725b3bf434c7d55e GIT binary patch literal 457 zcmd6j-3fp&41_N~A~rMm;3hhNP;ey&l1^mW`l4c=g>t0#aUmR*Z6yGtGy@_Gs8U22 zb{QRXQ4`GH5iOCqLr@oLF-$P13)f)zXJJog_MVG%`R)0!*AK4SYU-0dz~9ajpubn` Oj?}7KEcDE|S33bH7%{v6 literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.1.wasm b/extended-const/elem/elem.1.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f689545bb467bdce029bb68524e1c5c78a8344a3 GIT binary patch literal 52 zcmWN<(FuSs5JbVZwewTw F{{oiB1~{pnTF^q+y5#6$juL4F^#MqW0<{1D literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.13.wasm b/extended-const/elem/elem.13.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a1726fbe8a29229ff5f6eacf2767411d5373284c GIT binary patch literal 55 zcmV~$K?;B{3`N2BV@2C;y^uGtN_Gl`UdWqRCA$iR~{pnTF^q+y5#6$QX;LOK1eYFtN;K2 literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.20.wasm b/extended-const/elem/elem.20.wasm new file mode 100644 index 0000000000000000000000000000000000000000..301df73fcc149d6d9c656b6e698bd16018efa2b4 GIT binary patch literal 55 zcmV~$K?;B{3`N2BW5sH>UdWqRCA$iR)t literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.25.wasm b/extended-const/elem/elem.25.wasm new file mode 100644 index 0000000000000000000000000000000000000000..421a5ec78593a47ddc16b34f58a0d36178fb6c1a GIT binary patch literal 22 dcmZQbEY4+QU|?WjVJu)^;ACTDaAf3W001Bj0vP}R literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.26.wasm b/extended-const/elem/elem.26.wasm new file mode 100644 index 0000000000000000000000000000000000000000..3ed8ed32f9a3c42c0b824a49d69d5ae30e00f45f GIT binary patch literal 39 scmV~$fe8R03~{pnTF^q+y5#6$W{I?d`bd=mwg3PC literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.27.wasm b/extended-const/elem/elem.27.wasm new file mode 100644 index 0000000000000000000000000000000000000000..27cb9b70737ffe71472065c5898db05b4df4a67d GIT binary patch literal 55 zcmV~$K?;B{3`N2BV?|B3UdWr+N_Pr{ Hwa92c5S|D- literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.30.wasm b/extended-const/elem/elem.30.wasm new file mode 100644 index 0000000000000000000000000000000000000000..7acf72e1de5658e3d356e8fc750cdc61199a85bf GIT binary patch literal 39 ucmZQbEY4+QU|?WmVN76PU}j=uU}0e_VBq3pXJl}!=VoN!Vqs)r;06FqCj%=0 literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.31.wasm b/extended-const/elem/elem.31.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e1bcd3ee1c8b7a2dc0d302c1b27b47ab89638a3f GIT binary patch literal 55 zcmV~$u?>JQ3`N2BO%RZ@EW{=RcqzISz`Z4t-U IL@hGf4;4BHu>b%7 literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.34.wasm b/extended-const/elem/elem.34.wasm new file mode 100644 index 0000000000000000000000000000000000000000..76f89edf865fa0bf0c2aec1857e47baa0cfc4b13 GIT binary patch literal 63 zcmWN^F%Ezr5JkcFmrYQX#v^$XEh#W0czg@VRKq>H0J$zm$-rHMk~evK+KcuqPC}H! LjHoM%z6$XJ%Gm~J literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.35.wasm b/extended-const/elem/elem.35.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a5fbacdb81502a2a3d4ae7799e2b310933e9f8dd GIT binary patch literal 61 zcmWl{xeb6Y5JkcFcNc+=gp%k4LI)sAP`(3X&2YW90EJF)H;7OtubZMh?L%piBl2!W KsT`9=h4KTt#s(b# literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.36.wasm b/extended-const/elem/elem.36.wasm new file mode 100644 index 0000000000000000000000000000000000000000..57f2049af5fe6e17827ddd81127153b3d5cc0c10 GIT binary patch literal 33 ocmZQbEY4+QU|?WmVN76PU}j=u;ACfHaAe?SWZ+_9WMbe305sqNDF6Tf literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.37.wasm b/extended-const/elem/elem.37.wasm new file mode 100644 index 0000000000000000000000000000000000000000..d0d7cca6cbecd9c7cd4f9bec90d2e819d669ac4a GIT binary patch literal 22 dcmZQbEY4+QU|?WjVJu)^He#-4U}0e_U|{6rU}R7RLT&~C+{_2_ literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.42.wasm b/extended-const/elem/elem.42.wasm new file mode 100644 index 0000000000000000000000000000000000000000..351efbf83e65208242af95f74f4a19ea899cb09e GIT binary patch literal 46 zcmZQbEY4+QU|?VpVPq*uEiU0o&&f|p%+bv>He#-4U}0e_U|{6rU}R8caAe?S007-Y B2oV4P literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.43.wasm b/extended-const/elem/elem.43.wasm new file mode 100644 index 0000000000000000000000000000000000000000..4ae54a1bf063a8dbc508ff1417ca38522aa19a3a GIT binary patch literal 23 ecmZQbEY4+QU|?WjVJu)^tVPPy_VB}jby} literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.48.wasm b/extended-const/elem/elem.48.wasm new file mode 100644 index 0000000000000000000000000000000000000000..bbe414a164d4c0315238d130c24dbe58c221bb57 GIT binary patch literal 22 dcmZQbEY4+QU|?WjVJu)^He#-4U}0e_U|{5AV`NZf%&P~_ literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.5.wasm b/extended-const/elem/elem.5.wasm new file mode 100644 index 0000000000000000000000000000000000000000..dc502877915e289534bafcbdd3391af7def98137 GIT binary patch literal 79 zcmZQbEY4+QU|?WmVN76PU=m^EC@x4%E=eseVJ%5a%1LD`VBlhAVr1ZyXJv5YdCoWME-oEMQ>dCn269+f7z-G<*hLrxk`r@sbo0wni^_{KOG;An7??PD jnHU^7xq*5>BqNt7Gb@ARK?ZIhd5D3V9VjZuz`zXvRHh8@ literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.58.wasm b/extended-const/elem/elem.58.wasm new file mode 100644 index 0000000000000000000000000000000000000000..258518c6fb1ae3ba48e7d83d2c7df59bfa4f1aab GIT binary patch literal 111 zcmWlRF%AMD6b0W03GNb$O*GlUD{zRtiAa870xW?aEj^o_Ol+o@Oa`H60zigtptm~H zu~&}5U5tc#Vyc++L65{6b1J~LI}~qLr^i)Vwsy5kr|6P;~09*rYAFi&D-7P5znI_N8t@h literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.62.wasm b/extended-const/elem/elem.62.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6837acfbf9595bd00c579f5129e4051bdc7acb43 GIT binary patch literal 39 rcmV~$!3_Wq5CFklE)lLOolt;y=sz*Ten-G?K`j#D#olC+GQvWBM~?!c literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.63.wasm b/extended-const/elem/elem.63.wasm new file mode 100644 index 0000000000000000000000000000000000000000..ee41e7b9df232ac70af963ecc2d3165b547115d5 GIT binary patch literal 27 icmZQbEY4+QU|?WjVJu)^ZcJULpvaqMobAbu5(QE-dSC?i6xqbvdlf+I>(jBS-hCqibhfXcu WZz1$44bVE|w#$r&6Sj^bFW3*M`wAfd literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.67.wasm b/extended-const/elem/elem.67.wasm new file mode 100644 index 0000000000000000000000000000000000000000..771fd5981bf114c7641d46f5c1b33bd5b0086927 GIT binary patch literal 43 ycmZQbEY4+QU|?VpVdO}yD9A4=NiAY6NleN~Wz1(_;^byzV{l~P&S$)k&kX?3jR|`I literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.68.wasm b/extended-const/elem/elem.68.wasm new file mode 100644 index 0000000000000000000000000000000000000000..1cd3b682a18007df03126e2e550b14ad541f0530 GIT binary patch literal 42 xcmZQbEY4+QU|?WmWlUgTtY>CoWME@sEMU0Az|GFe$e6~=z{SSM!r-XI4FGND1dIRx literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.69.wasm b/extended-const/elem/elem.69.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a40618e064b0b5a3ce765ff47b3546d37055e0d7 GIT binary patch literal 87 zcmV~$+X;Xm00q!{(-0Mc`e=bxXaOfNNrOO9dVIHf=OEmL0N8T_ziyx^HNH8mJVb-& j2r1cM)XZrQIs3D;dOa!nlv4q;rgX4eV2!4N!wA?PziSTq literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.7.wasm b/extended-const/elem/elem.7.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e377d5f69953a46d2123e9072bec0cb3040c0fca GIT binary patch literal 66 zcmZQbEY4+QU|?WmVN76PV3J_uC@x4%E=ese;Y!cRPfE;*&onk-u4iCoVq{=pWh`KL V!OqFf$e_%?&B(yT!pOwH4FIs;3oHNt literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.8.wasm b/extended-const/elem/elem.8.wasm new file mode 100644 index 0000000000000000000000000000000000000000..2cca27ec6d177c108f8965f54d3d2f90cd288853 GIT binary patch literal 95 zcmZQbEY4+QU|?WmWlUgTtY>Cr0dg2vSQrZ!xY&i6*pd@-a&*lZpbSd}W=>uv21j;o ipdLp~Zbn8fSr%3X$Ab*qK=Kd+H#<;HkO53{f@lCPmI~7V literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.9.wasm b/extended-const/elem/elem.9.wasm new file mode 100644 index 0000000000000000000000000000000000000000..1ceb39c4afc0bf9caaf700b2619dd07644b5e6b4 GIT binary patch literal 105 zcmZQbEY4+QU|?WmWlUgTtY>Cr0dg2vSQrZ!xY>o7*pd@-a&*lZpbSd}W=?S?7DqO2 srV9n!ml(KN967m}E-`Wgd0etAtPG9^8MuMuA)sakM|MF5FwF^~0WC`pHvj+t literal 0 HcmV?d00001 diff --git a/extended-const/elem/elem.json b/extended-const/elem/elem.json new file mode 100644 index 00000000..41d4bf59 --- /dev/null +++ b/extended-const/elem/elem.json @@ -0,0 +1,101 @@ +{"source_filename": "elem.wast", + "commands": [ + {"type": "module", "line": 4, "filename": "elem.0.wasm"}, + {"type": "module", "line": 80, "filename": "elem.1.wasm"}, + {"type": "module", "line": 90, "filename": "elem.2.wasm"}, + {"type": "module", "line": 95, "filename": "elem.3.wasm"}, + {"type": "module", "line": 101, "filename": "elem.4.wasm"}, + {"type": "module", "line": 110, "filename": "elem.5.wasm"}, + {"type": "module", "line": 120, "filename": "elem.6.wasm"}, + {"type": "module", "line": 127, "filename": "elem.7.wasm"}, + {"type": "module", "line": 134, "filename": "elem.8.wasm"}, + {"type": "assert_return", "line": 148, "action": {"type": "invoke", "field": "call-7", "args": []}, "expected": [{"type": "i32", "value": "65"}]}, + {"type": "assert_return", "line": 149, "action": {"type": "invoke", "field": "call-9", "args": []}, "expected": [{"type": "i32", "value": "66"}]}, + {"type": "module", "line": 153, "filename": "elem.9.wasm"}, + {"type": "assert_return", "line": 167, "action": {"type": "invoke", "field": "call-7", "args": []}, "expected": [{"type": "i32", "value": "65"}]}, + {"type": "assert_return", "line": 168, "action": {"type": "invoke", "field": "call-9", "args": []}, "expected": [{"type": "i32", "value": "66"}]}, + {"type": "assert_invalid", "line": 171, "filename": "elem.10.wasm", "text": "unknown global", "module_type": "binary"}, + {"type": "assert_invalid", "line": 175, "filename": "elem.11.wasm", "text": "unknown global", "module_type": "binary"}, + {"type": "module", "line": 182, "filename": "elem.12.wasm"}, + {"type": "module", "line": 187, "filename": "elem.13.wasm"}, + {"type": "module", "line": 193, "filename": "elem.14.wasm"}, + {"type": "module", "line": 197, "filename": "elem.15.wasm"}, + {"type": "module", "line": 202, "filename": "elem.16.wasm"}, + {"type": "module", "line": 207, "filename": "elem.17.wasm"}, + {"type": "module", "line": 212, "filename": "elem.18.wasm"}, + {"type": "module", "line": 218, "filename": "elem.19.wasm"}, + {"type": "module", "line": 224, "filename": "elem.20.wasm"}, + {"type": "module", "line": 230, "filename": "elem.21.wasm"}, + {"type": "assert_uninstantiable", "line": 239, "filename": "elem.22.wasm", "text": "out of bounds table access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 248, "filename": "elem.23.wasm", "text": "out of bounds table access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 257, "filename": "elem.24.wasm", "text": "out of bounds table access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 266, "filename": "elem.25.wasm", "text": "out of bounds table access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 273, "filename": "elem.26.wasm", "text": "out of bounds table access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 281, "filename": "elem.27.wasm", "text": "out of bounds table access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 290, "filename": "elem.28.wasm", "text": "out of bounds table access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 298, "filename": "elem.29.wasm", "text": "out of bounds table access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 307, "filename": "elem.30.wasm", "text": "out of bounds table access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 315, "filename": "elem.31.wasm", "text": "out of bounds table access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 324, "filename": "elem.32.wasm", "text": "out of bounds table access", "module_type": "binary"}, + {"type": "assert_uninstantiable", "line": 332, "filename": "elem.33.wasm", "text": "out of bounds table access", "module_type": "binary"}, + {"type": "module", "line": 342, "filename": "elem.34.wasm"}, + {"type": "assert_trap", "line": 350, "action": {"type": "invoke", "field": "init", "args": []}, "text": "out of bounds table access", "expected": []}, + {"type": "module", "line": 352, "filename": "elem.35.wasm"}, + {"type": "assert_trap", "line": 360, "action": {"type": "invoke", "field": "init", "args": []}, "text": "out of bounds table access", "expected": []}, + {"type": "assert_invalid", "line": 365, "filename": "elem.36.wasm", "text": "unknown table", "module_type": "binary"}, + {"type": "assert_invalid", "line": 375, "filename": "elem.37.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 383, "filename": "elem.38.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 391, "filename": "elem.39.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 399, "filename": "elem.40.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 407, "filename": "elem.41.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 416, "filename": "elem.42.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 426, "filename": "elem.43.wasm", "text": "constant expression required", "module_type": "binary"}, + {"type": "assert_invalid", "line": 434, "filename": "elem.44.wasm", "text": "constant expression required", "module_type": "binary"}, + {"type": "assert_invalid", "line": 442, "filename": "elem.45.wasm", "text": "constant expression required", "module_type": "binary"}, + {"type": "assert_invalid", "line": 450, "filename": "elem.46.wasm", "text": "constant expression required", "module_type": "binary"}, + {"type": "assert_invalid", "line": 458, "filename": "elem.47.wasm", "text": "constant expression required", "module_type": "binary"}, + {"type": "assert_invalid", "line": 467, "filename": "elem.48.wasm", "text": "unknown global 0", "module_type": "binary"}, + {"type": "assert_invalid", "line": 475, "filename": "elem.49.wasm", "text": "unknown global 1", "module_type": "binary"}, + {"type": "assert_invalid", "line": 484, "filename": "elem.50.wasm", "text": "constant expression required", "module_type": "binary"}, + {"type": "assert_invalid", "line": 495, "filename": "elem.51.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 503, "filename": "elem.52.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 511, "filename": "elem.53.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 519, "filename": "elem.54.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 527, "filename": "elem.55.wasm", "text": "constant expression required", "module_type": "binary"}, + {"type": "assert_invalid", "line": 536, "filename": "elem.56.wasm", "text": "constant expression required", "module_type": "binary"}, + {"type": "module", "line": 546, "filename": "elem.57.wasm"}, + {"type": "assert_return", "line": 557, "action": {"type": "invoke", "field": "call-overwritten", "args": []}, "expected": [{"type": "i32", "value": "66"}]}, + {"type": "module", "line": 559, "filename": "elem.58.wasm"}, + {"type": "assert_return", "line": 570, "action": {"type": "invoke", "field": "call-overwritten-element", "args": []}, "expected": [{"type": "i32", "value": "66"}]}, + {"type": "module", "line": 574, "name": "$module1", "filename": "elem.59.wasm"}, + {"type": "register", "line": 592, "name": "$module1", "as": "module1"}, + {"type": "assert_trap", "line": 594, "action": {"type": "invoke", "module": "$module1", "field": "call-7", "args": []}, "text": "uninitialized element", "expected": [{"type": "i32"}]}, + {"type": "assert_return", "line": 595, "action": {"type": "invoke", "module": "$module1", "field": "call-8", "args": []}, "expected": [{"type": "i32", "value": "65"}]}, + {"type": "assert_return", "line": 596, "action": {"type": "invoke", "module": "$module1", "field": "call-9", "args": []}, "expected": [{"type": "i32", "value": "66"}]}, + {"type": "module", "line": 598, "name": "$module2", "filename": "elem.60.wasm"}, + {"type": "assert_return", "line": 607, "action": {"type": "invoke", "module": "$module1", "field": "call-7", "args": []}, "expected": [{"type": "i32", "value": "67"}]}, + {"type": "assert_return", "line": 608, "action": {"type": "invoke", "module": "$module1", "field": "call-8", "args": []}, "expected": [{"type": "i32", "value": "68"}]}, + {"type": "assert_return", "line": 609, "action": {"type": "invoke", "module": "$module1", "field": "call-9", "args": []}, "expected": [{"type": "i32", "value": "66"}]}, + {"type": "module", "line": 611, "name": "$module3", "filename": "elem.61.wasm"}, + {"type": "assert_return", "line": 620, "action": {"type": "invoke", "module": "$module1", "field": "call-7", "args": []}, "expected": [{"type": "i32", "value": "67"}]}, + {"type": "assert_return", "line": 621, "action": {"type": "invoke", "module": "$module1", "field": "call-8", "args": []}, "expected": [{"type": "i32", "value": "69"}]}, + {"type": "assert_return", "line": 622, "action": {"type": "invoke", "module": "$module1", "field": "call-9", "args": []}, "expected": [{"type": "i32", "value": "70"}]}, + {"type": "assert_invalid", "line": 627, "filename": "elem.62.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 632, "filename": "elem.63.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 637, "filename": "elem.64.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "assert_invalid", "line": 646, "filename": "elem.65.wasm", "text": "type mismatch", "module_type": "binary"}, + {"type": "module", "line": 655, "name": "$m", "filename": "elem.66.wasm"}, + {"type": "register", "line": 662, "name": "$m", "as": "exporter"}, + {"type": "assert_return", "line": 664, "action": {"type": "invoke", "module": "$m", "field": "get", "args": [{"type": "i32", "value": "0"}]}, "expected": [{"type": "externref", "value": "null"}]}, + {"type": "assert_return", "line": 665, "action": {"type": "invoke", "module": "$m", "field": "get", "args": [{"type": "i32", "value": "1"}]}, "expected": [{"type": "externref", "value": "null"}]}, + {"type": "assert_return", "line": 667, "action": {"type": "invoke", "module": "$m", "field": "set", "args": [{"type": "i32", "value": "0"}, {"type": "externref", "value": "42"}]}, "expected": []}, + {"type": "assert_return", "line": 668, "action": {"type": "invoke", "module": "$m", "field": "set", "args": [{"type": "i32", "value": "1"}, {"type": "externref", "value": "137"}]}, "expected": []}, + {"type": "assert_return", "line": 670, "action": {"type": "invoke", "module": "$m", "field": "get", "args": [{"type": "i32", "value": "0"}]}, "expected": [{"type": "externref", "value": "42"}]}, + {"type": "assert_return", "line": 671, "action": {"type": "invoke", "module": "$m", "field": "get", "args": [{"type": "i32", "value": "1"}]}, "expected": [{"type": "externref", "value": "137"}]}, + {"type": "module", "line": 673, "filename": "elem.67.wasm"}, + {"type": "assert_return", "line": 677, "action": {"type": "invoke", "module": "$m", "field": "get", "args": [{"type": "i32", "value": "0"}]}, "expected": [{"type": "externref", "value": "null"}]}, + {"type": "assert_return", "line": 678, "action": {"type": "invoke", "module": "$m", "field": "get", "args": [{"type": "i32", "value": "1"}]}, "expected": [{"type": "externref", "value": "137"}]}, + {"type": "module", "line": 682, "name": "$module4", "filename": "elem.68.wasm"}, + {"type": "register", "line": 689, "name": "$module4", "as": "module4"}, + {"type": "module", "line": 691, "filename": "elem.69.wasm"}, + {"type": "assert_return", "line": 701, "action": {"type": "invoke", "field": "call_imported_elem", "args": []}, "expected": [{"type": "i32", "value": "42"}]}]} diff --git a/extended-const/elem/elem.wast b/extended-const/elem/elem.wast new file mode 100644 index 00000000..6e7a33af --- /dev/null +++ b/extended-const/elem/elem.wast @@ -0,0 +1,701 @@ +;; Test the element section + +;; Syntax +(module + (table $t 10 funcref) + (func $f) + (func $g) + + ;; Passive + (elem funcref) + (elem funcref (ref.func $f) (item ref.func $f) (item (ref.null func)) (ref.func $g)) + (elem func) + (elem func $f $f $g $g) + + (elem $p1 funcref) + (elem $p2 funcref (ref.func $f) (ref.func $f) (ref.null func) (ref.func $g)) + (elem $p3 func) + (elem $p4 func $f $f $g $g) + + ;; Active + (elem (table $t) (i32.const 0) funcref) + (elem (table $t) (i32.const 0) funcref (ref.func $f) (ref.null func)) + (elem (table $t) (i32.const 0) func) + (elem (table $t) (i32.const 0) func $f $g) + (elem (table $t) (offset (i32.const 0)) funcref) + (elem (table $t) (offset (i32.const 0)) func $f $g) + (elem (table 0) (i32.const 0) func) + (elem (table 0x0) (i32.const 0) func $f $f) + (elem (table 0x000) (offset (i32.const 0)) func) + (elem (table 0) (offset (i32.const 0)) func $f $f) + (elem (table $t) (i32.const 0) func) + (elem (table $t) (i32.const 0) func $f $f) + (elem (table $t) (offset (i32.const 0)) func) + (elem (table $t) (offset (i32.const 0)) func $f $f) + (elem (offset (i32.const 0))) + (elem (offset (i32.const 0)) funcref (ref.func $f) (ref.null func)) + (elem (offset (i32.const 0)) func $f $f) + (elem (offset (i32.const 0)) $f $f) + (elem (i32.const 0)) + (elem (i32.const 0) funcref (ref.func $f) (ref.null func)) + (elem (i32.const 0) func $f $f) + (elem (i32.const 0) $f $f) + (elem (i32.const 0) funcref (item (ref.func $f)) (item (ref.null func))) + + (elem $a1 (table $t) (i32.const 0) funcref) + (elem $a2 (table $t) (i32.const 0) funcref (ref.func $f) (ref.null func)) + (elem $a3 (table $t) (i32.const 0) func) + (elem $a4 (table $t) (i32.const 0) func $f $g) + (elem $a9 (table $t) (offset (i32.const 0)) funcref) + (elem $a10 (table $t) (offset (i32.const 0)) func $f $g) + (elem $a11 (table 0) (i32.const 0) func) + (elem $a12 (table 0x0) (i32.const 0) func $f $f) + (elem $a13 (table 0x000) (offset (i32.const 0)) func) + (elem $a14 (table 0) (offset (i32.const 0)) func $f $f) + (elem $a15 (table $t) (i32.const 0) func) + (elem $a16 (table $t) (i32.const 0) func $f $f) + (elem $a17 (table $t) (offset (i32.const 0)) func) + (elem $a18 (table $t) (offset (i32.const 0)) func $f $f) + (elem $a19 (offset (i32.const 0))) + (elem $a20 (offset (i32.const 0)) funcref (ref.func $f) (ref.null func)) + (elem $a21 (offset (i32.const 0)) func $f $f) + (elem $a22 (offset (i32.const 0)) $f $f) + (elem $a23 (i32.const 0)) + (elem $a24 (i32.const 0) funcref (ref.func $f) (ref.null func)) + (elem $a25 (i32.const 0) func $f $f) + (elem $a26 (i32.const 0) $f $f) + + ;; Declarative + (elem declare funcref) + (elem declare funcref (ref.func $f) (ref.func $f) (ref.null func) (ref.func $g)) + (elem declare func) + (elem declare func $f $f $g $g) + + (elem $d1 declare funcref) + (elem $d2 declare funcref (ref.func $f) (ref.func $f) (ref.null func) (ref.func $g)) + (elem $d3 declare func) + (elem $d4 declare func $f $f $g $g) +) + +(module + (func $f) + (func $g) + + (table $t funcref (elem (ref.func $f) (ref.null func) (ref.func $g))) +) + + +;; Basic use + +(module + (table 10 funcref) + (func $f) + (elem (i32.const 0) $f) +) +(module + (import "spectest" "table" (table 10 funcref)) + (func $f) + (elem (i32.const 0) $f) +) + +(module + (table 10 funcref) + (func $f) + (elem (i32.const 0) $f) + (elem (i32.const 3) $f) + (elem (i32.const 7) $f) + (elem (i32.const 5) $f) + (elem (i32.const 3) $f) +) +(module + (import "spectest" "table" (table 10 funcref)) + (func $f) + (elem (i32.const 9) $f) + (elem (i32.const 3) $f) + (elem (i32.const 7) $f) + (elem (i32.const 3) $f) + (elem (i32.const 5) $f) +) + +(module + (global (import "spectest" "global_i32") i32) + (table 1000 funcref) + (func $f) + (elem (global.get 0) $f) +) + +(module + (global $g (import "spectest" "global_i32") i32) + (table 1000 funcref) + (func $f) + (elem (global.get $g) $f) +) + +(module + (type $out-i32 (func (result i32))) + (table 10 funcref) + (elem (i32.const 7) $const-i32-a) + (elem (i32.const 9) $const-i32-b) + (func $const-i32-a (type $out-i32) (i32.const 65)) + (func $const-i32-b (type $out-i32) (i32.const 66)) + (func (export "call-7") (type $out-i32) + (call_indirect (type $out-i32) (i32.const 7)) + ) + (func (export "call-9") (type $out-i32) + (call_indirect (type $out-i32) (i32.const 9)) + ) +) +(assert_return (invoke "call-7") (i32.const 65)) +(assert_return (invoke "call-9") (i32.const 66)) + +;; Same as the above, but use ref.null to ensure the elements use exprs. +;; Note: some tools like wast2json avoid using exprs when possible. +(module + (type $out-i32 (func (result i32))) + (table 11 funcref) + (elem (i32.const 6) funcref (ref.null func) (ref.func $const-i32-a)) + (elem (i32.const 9) funcref (ref.func $const-i32-b) (ref.null func)) + (func $const-i32-a (type $out-i32) (i32.const 65)) + (func $const-i32-b (type $out-i32) (i32.const 66)) + (func (export "call-7") (type $out-i32) + (call_indirect (type $out-i32) (i32.const 7)) + ) + (func (export "call-9") (type $out-i32) + (call_indirect (type $out-i32) (i32.const 9)) + ) +) +(assert_return (invoke "call-7") (i32.const 65)) +(assert_return (invoke "call-9") (i32.const 66)) + +(assert_invalid + (module (table 1 funcref) (global i32 (i32.const 0)) (elem (global.get 0) $f) (func $f)) + "unknown global" +) +(assert_invalid + (module (table 1 funcref) (global $g i32 (i32.const 0)) (elem (global.get $g) $f) (func $f)) + "unknown global" +) + + +;; Corner cases + +(module + (table 10 funcref) + (func $f) + (elem (i32.const 9) $f) +) +(module + (import "spectest" "table" (table 10 funcref)) + (func $f) + (elem (i32.const 9) $f) +) + +(module + (table 0 funcref) + (elem (i32.const 0)) +) +(module + (import "spectest" "table" (table 0 funcref)) + (elem (i32.const 0)) +) + +(module + (table 0 0 funcref) + (elem (i32.const 0)) +) + +(module + (table 20 funcref) + (elem (i32.const 20)) +) + +(module + (import "spectest" "table" (table 0 funcref)) + (func $f) + (elem (i32.const 0) $f) +) + +(module + (import "spectest" "table" (table 0 100 funcref)) + (func $f) + (elem (i32.const 0) $f) +) + +(module + (import "spectest" "table" (table 0 funcref)) + (func $f) + (elem (i32.const 1) $f) +) + +(module + (import "spectest" "table" (table 0 30 funcref)) + (func $f) + (elem (i32.const 1) $f) +) + +;; Invalid bounds for elements + +(assert_trap + (module + (table 0 funcref) + (func $f) + (elem (i32.const 0) $f) + ) + "out of bounds table access" +) + +(assert_trap + (module + (table 0 0 funcref) + (func $f) + (elem (i32.const 0) $f) + ) + "out of bounds table access" +) + +(assert_trap + (module + (table 0 1 funcref) + (func $f) + (elem (i32.const 0) $f) + ) + "out of bounds table access" +) + +(assert_trap + (module + (table 0 funcref) + (elem (i32.const 1)) + ) + "out of bounds table access" +) +(assert_trap + (module + (table 10 funcref) + (func $f) + (elem (i32.const 10) $f) + ) + "out of bounds table access" +) +(assert_trap + (module + (import "spectest" "table" (table 10 funcref)) + (func $f) + (elem (i32.const 10) $f) + ) + "out of bounds table access" +) + +(assert_trap + (module + (table 10 20 funcref) + (func $f) + (elem (i32.const 10) $f) + ) + "out of bounds table access" +) +(assert_trap + (module + (import "spectest" "table" (table 10 funcref)) + (func $f) + (elem (i32.const 10) $f) + ) + "out of bounds table access" +) + +(assert_trap + (module + (table 10 funcref) + (func $f) + (elem (i32.const -1) $f) + ) + "out of bounds table access" +) +(assert_trap + (module + (import "spectest" "table" (table 10 funcref)) + (func $f) + (elem (i32.const -1) $f) + ) + "out of bounds table access" +) + +(assert_trap + (module + (table 10 funcref) + (func $f) + (elem (i32.const -10) $f) + ) + "out of bounds table access" +) +(assert_trap + (module + (import "spectest" "table" (table 10 funcref)) + (func $f) + (elem (i32.const -10) $f) + ) + "out of bounds table access" +) + +;; Implicitly dropped elements + +(module + (table 10 funcref) + (elem $e (i32.const 0) func $f) + (func $f) + (func (export "init") + (table.init $e (i32.const 0) (i32.const 0) (i32.const 1)) + ) +) +(assert_trap (invoke "init") "out of bounds table access") + +(module + (table 10 funcref) + (elem $e declare func $f) + (func $f) + (func (export "init") + (table.init $e (i32.const 0) (i32.const 0) (i32.const 1)) + ) +) +(assert_trap (invoke "init") "out of bounds table access") + +;; Element without table + +(assert_invalid + (module + (func $f) + (elem (i32.const 0) $f) + ) + "unknown table" +) + +;; Invalid offsets + +(assert_invalid + (module + (table 1 funcref) + (elem (i64.const 0)) + ) + "type mismatch" +) + +(assert_invalid + (module + (table 1 funcref) + (elem (ref.null func)) + ) + "type mismatch" +) + +(assert_invalid + (module + (table 1 funcref) + (elem (offset (;empty instruction sequence;))) + ) + "type mismatch" +) + +(assert_invalid + (module + (table 1 funcref) + (elem (offset (i32.const 0) (i32.const 0))) + ) + "type mismatch" +) + +(assert_invalid + (module + (global (import "test" "global-i32") i32) + (table 1 funcref) + (elem (offset (global.get 0) (global.get 0))) + ) + "type mismatch" +) + +(assert_invalid + (module + (global (import "test" "global-i32") i32) + (table 1 funcref) + (elem (offset (global.get 0) (i32.const 0))) + ) + "type mismatch" +) + + +(assert_invalid + (module + (table 1 funcref) + (elem (i32.ctz (i32.const 0))) + ) + "constant expression required" +) + +(assert_invalid + (module + (table 1 funcref) + (elem (nop)) + ) + "constant expression required" +) + +(assert_invalid + (module + (table 1 funcref) + (elem (offset (nop) (i32.const 0))) + ) + "constant expression required" +) + +(assert_invalid + (module + (table 1 funcref) + (elem (offset (i32.const 0) (nop))) + ) + "constant expression required" +) + +(assert_invalid + (module + (global $g (import "test" "g") (mut i32)) + (table 1 funcref) + (elem (global.get $g)) + ) + "constant expression required" +) + +(assert_invalid + (module + (table 1 funcref) + (elem (global.get 0)) + ) + "unknown global 0" +) + +(assert_invalid + (module + (global (import "test" "global-i32") i32) + (table 1 funcref) + (elem (global.get 1)) + ) + "unknown global 1" +) + +(assert_invalid + (module + (global (import "test" "global-mut-i32") (mut i32)) + (table 1 funcref) + (elem (global.get 0)) + ) + "constant expression required" +) + +;; Invalid elements + +(assert_invalid + (module + (table 1 funcref) + (elem (i32.const 0) funcref (ref.null extern)) + ) + "type mismatch" +) + +(assert_invalid + (module + (table 1 funcref) + (elem (i32.const 0) funcref (item (ref.null func) (ref.null func))) + ) + "type mismatch" +) + +(assert_invalid + (module + (table 1 funcref) + (elem (i32.const 0) funcref (i32.const 0)) + ) + "type mismatch" +) + +(assert_invalid + (module + (table 1 funcref) + (elem (i32.const 0) funcref (item (i32.const 0))) + ) + "type mismatch" +) + +(assert_invalid + (module + (table 1 funcref) + (elem (i32.const 0) funcref (item (call $f))) + (func $f (result funcref) (ref.null func)) + ) + "constant expression required" +) + +(assert_invalid + (module + (func $f (result i32) (i32.const 9)) + (table 1 funcref) + (elem (i32.const 0) funcref (item (call $f))) + ) + "constant expression required" +) + +;; Two elements target the same slot + +(module + (type $out-i32 (func (result i32))) + (table 10 funcref) + (elem (i32.const 9) $const-i32-a) + (elem (i32.const 9) $const-i32-b) + (func $const-i32-a (type $out-i32) (i32.const 65)) + (func $const-i32-b (type $out-i32) (i32.const 66)) + (func (export "call-overwritten") (type $out-i32) + (call_indirect (type $out-i32) (i32.const 9)) + ) +) +(assert_return (invoke "call-overwritten") (i32.const 66)) + +(module + (type $out-i32 (func (result i32))) + (import "spectest" "table" (table 10 funcref)) + (elem (i32.const 9) $const-i32-a) + (elem (i32.const 9) $const-i32-b) + (func $const-i32-a (type $out-i32) (i32.const 65)) + (func $const-i32-b (type $out-i32) (i32.const 66)) + (func (export "call-overwritten-element") (type $out-i32) + (call_indirect (type $out-i32) (i32.const 9)) + ) +) +(assert_return (invoke "call-overwritten-element") (i32.const 66)) + +;; Element sections across multiple modules change the same table + +(module $module1 + (type $out-i32 (func (result i32))) + (table (export "shared-table") 10 funcref) + (elem (i32.const 8) $const-i32-a) + (elem (i32.const 9) $const-i32-b) + (func $const-i32-a (type $out-i32) (i32.const 65)) + (func $const-i32-b (type $out-i32) (i32.const 66)) + (func (export "call-7") (type $out-i32) + (call_indirect (type $out-i32) (i32.const 7)) + ) + (func (export "call-8") (type $out-i32) + (call_indirect (type $out-i32) (i32.const 8)) + ) + (func (export "call-9") (type $out-i32) + (call_indirect (type $out-i32) (i32.const 9)) + ) +) + +(register "module1" $module1) + +(assert_trap (invoke $module1 "call-7") "uninitialized element") +(assert_return (invoke $module1 "call-8") (i32.const 65)) +(assert_return (invoke $module1 "call-9") (i32.const 66)) + +(module $module2 + (type $out-i32 (func (result i32))) + (import "module1" "shared-table" (table 10 funcref)) + (elem (i32.const 7) $const-i32-c) + (elem (i32.const 8) $const-i32-d) + (func $const-i32-c (type $out-i32) (i32.const 67)) + (func $const-i32-d (type $out-i32) (i32.const 68)) +) + +(assert_return (invoke $module1 "call-7") (i32.const 67)) +(assert_return (invoke $module1 "call-8") (i32.const 68)) +(assert_return (invoke $module1 "call-9") (i32.const 66)) + +(module $module3 + (type $out-i32 (func (result i32))) + (import "module1" "shared-table" (table 10 funcref)) + (elem (i32.const 8) $const-i32-e) + (elem (i32.const 9) $const-i32-f) + (func $const-i32-e (type $out-i32) (i32.const 69)) + (func $const-i32-f (type $out-i32) (i32.const 70)) +) + +(assert_return (invoke $module1 "call-7") (i32.const 67)) +(assert_return (invoke $module1 "call-8") (i32.const 69)) +(assert_return (invoke $module1 "call-9") (i32.const 70)) + +;; Element segments must match element type of table + +(assert_invalid + (module (func $f) (table 1 externref) (elem (i32.const 0) $f)) + "type mismatch" +) + +(assert_invalid + (module (table 1 funcref) (elem (i32.const 0) externref (ref.null extern))) + "type mismatch" +) + +(assert_invalid + (module + (func $f) + (table $t 1 externref) + (elem $e funcref (ref.func $f)) + (func (table.init $t $e (i32.const 0) (i32.const 0) (i32.const 1)))) + "type mismatch" +) + +(assert_invalid + (module + (table $t 1 funcref) + (elem $e externref (ref.null extern)) + (func (table.init $t $e (i32.const 0) (i32.const 0) (i32.const 1)))) + "type mismatch" +) + +;; Initializing a table with an externref-type element segment + +(module $m + (table $t (export "table") 2 externref) + (func (export "get") (param $i i32) (result externref) + (table.get $t (local.get $i))) + (func (export "set") (param $i i32) (param $x externref) + (table.set $t (local.get $i) (local.get $x)))) + +(register "exporter" $m) + +(assert_return (invoke $m "get" (i32.const 0)) (ref.null extern)) +(assert_return (invoke $m "get" (i32.const 1)) (ref.null extern)) + +(assert_return (invoke $m "set" (i32.const 0) (ref.extern 42))) +(assert_return (invoke $m "set" (i32.const 1) (ref.extern 137))) + +(assert_return (invoke $m "get" (i32.const 0)) (ref.extern 42)) +(assert_return (invoke $m "get" (i32.const 1)) (ref.extern 137)) + +(module + (import "exporter" "table" (table $t 2 externref)) + (elem (i32.const 0) externref (ref.null extern))) + +(assert_return (invoke $m "get" (i32.const 0)) (ref.null extern)) +(assert_return (invoke $m "get" (i32.const 1)) (ref.extern 137)) + +;; Initializing a table with imported funcref global + +(module $module4 + (func (result i32) + i32.const 42 + ) + (global (export "f") funcref (ref.func 0)) +) + +(register "module4" $module4) + +(module + (import "module4" "f" (global funcref)) + (type $out-i32 (func (result i32))) + (table 10 funcref) + (elem (offset (i32.const 0)) funcref (global.get 0)) + (func (export "call_imported_elem") (type $out-i32) + (call_indirect (type $out-i32) (i32.const 0)) + ) +) + +(assert_return (invoke "call_imported_elem") (i32.const 42)) diff --git a/extended-const/global/global.0.wasm b/extended-const/global/global.0.wasm new file mode 100644 index 0000000000000000000000000000000000000000..7858f7ae4356b65187e7ddfaf294574482d89e35 GIT binary patch literal 1508 zcmZWp*>(~^5UuW6Sej*s!7c8@ElSi7iH|nwlP~^(3}F({fyQB?Mu9oUFVl1U0AKtc ztEvYRPvA`5y0^BjW`S@v762gjs(qPdBI^S`OGMKb8T7>x9|Oo2_{{rafqae}0rTY} zS)5Iy{WO}T<-^zv!uai|v*ToNR_^XPOK|qOLOPC+_U(Fpp;#!E%1WGm0TP8$1wmBM z3gLQUir_f{g#TSMGSEx4fENJIf2cXU#4Yd@{7_5ieN&mxsagn(zWJ%TW1Ff*6BdeI=fJ^&QmB`rwhuPVY@F-VLXPa zPaNCVxNQgOjJpsp?m>g`8LV-^9-L!*2J7{3)}BQ%eqQZ^Q8G*6eDy>bkA`recEaNj z6E0FhY|Jz-xTIE`(l1w5jFUI0|LCB-ZzjW0Ix-WuQnpI^E}FpAoJ8>~f@?Hski5lo zdz9-m$qL-;M#J(n9K=zcb2B)taoVl(DD8(ae(!K-aR}B&ZTj&{8`a=xK?5?rEpxZzu&$*7Ad9&{XUPO=2sb zm{I|DaI>JPrH95*ssdWLSmtTT1l$Z`lv)Fcx|UVYPTf+PnbT?>t>NFKQp6}|nTrel zE7#DV4C=;5K20^AhNHZg=<a(m=zpRMD^w> X>lQHI^l=qRf5rV;eoTlvzgB+%bI(4z literal 0 HcmV?d00001 diff --git a/extended-const/global/global.1.wasm b/extended-const/global/global.1.wasm new file mode 100644 index 0000000000000000000000000000000000000000..51b90abd0147fcb4ddcbe5edb18c0b04530b3f8a GIT binary patch literal 42 tcmZQbEY4+QU|?WmVN76PU}j=uVB=)0WpD-xF>rHnGjf8M4fZMw+yGcL1KI!p literal 0 HcmV?d00001 diff --git a/extended-const/global/global.10.wasm b/extended-const/global/global.10.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a9daf3465012c0e4843e6efb2a24f3eaff1c37a7 GIT binary patch literal 15 WcmZQbEY4+QU|?WlWvpjlslu literal 0 HcmV?d00001 diff --git a/extended-const/global/global.11.wasm b/extended-const/global/global.11.wasm new file mode 100644 index 0000000000000000000000000000000000000000..20256f8a52ef4bb2fe0574be8c07be6a14c33bd5 GIT binary patch literal 19 YcmZQbEY4+QU|?Y5WUOa!1~M490UMzLAOHXW literal 0 HcmV?d00001 diff --git a/extended-const/global/global.12.wasm b/extended-const/global/global.12.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a0742e8e505e6425a61be5cca406422ec09838b7 GIT binary patch literal 18 XcmZQbEY4+QU|?Y5V610w1VU~A8ax7C literal 0 HcmV?d00001 diff --git a/extended-const/global/global.13.wasm b/extended-const/global/global.13.wasm new file mode 100644 index 0000000000000000000000000000000000000000..1989dd44d4b7a844a2bc585ecdbe1ff7f5541b87 GIT binary patch literal 14 VcmZQbEY4+QU|?WlVXSB11^^J;0oVWl literal 0 HcmV?d00001 diff --git a/extended-const/global/global.14.wasm b/extended-const/global/global.14.wasm new file mode 100644 index 0000000000000000000000000000000000000000..0c44cc1b907012fec00fb320fe8e7e1e0a4617e7 GIT binary patch literal 24 dcmZQbEY4+QU|?Wk1Cq@73~X$S1q{jz+yEoF0%-sM literal 0 HcmV?d00001 diff --git a/extended-const/global/global.15.wasm b/extended-const/global/global.15.wasm new file mode 100644 index 0000000000000000000000000000000000000000..1e93160091b195e69021d6c9ef882edce214cf23 GIT binary patch literal 40 tcmZQbEY4+QU|?VpVPq*uEiU0o&&f|p%+bv>He#-4VB=t{XHW)0ZUCHe#-4VB=t{XK-XtX5a<@ucHVP literal 0 HcmV?d00001 diff --git a/extended-const/global/global.17.wasm b/extended-const/global/global.17.wasm new file mode 100644 index 0000000000000000000000000000000000000000..c208085293ea1fdc67f50c1c58cf60945a52f9ea GIT binary patch literal 16 XcmZQbEY4+QU|?WlW2|RTX5a<@6zu{1 literal 0 HcmV?d00001 diff --git a/extended-const/global/global.18.wasm b/extended-const/global/global.18.wasm new file mode 100644 index 0000000000000000000000000000000000000000..82f6b95ccfbd69e500d54b79bdd19316f6bea2f0 GIT binary patch literal 21 ccmZQbEY4+QU|?Y5W~yg!WZH03vk)&j0`b literal 0 HcmV?d00001 diff --git a/extended-const/global/global.21.wasm b/extended-const/global/global.21.wasm new file mode 100644 index 0000000000000000000000000000000000000000..07b59aac3da649477ad8364bc6419a0fc364adab GIT binary patch literal 38 tcmZQbEY4+QU|?VpVPq*uEiU0o&&f|p%+bv>He#-4U}IyfXHaJ11^}N72hsol literal 0 HcmV?d00001 diff --git a/extended-const/global/global.22.wasm b/extended-const/global/global.22.wasm new file mode 100644 index 0000000000000000000000000000000000000000..8c2284f76d5f2f5fac83a366af95094628c772f2 GIT binary patch literal 42 xcmZQbEY4+QU|?X9U}PytEiU0p&&f|p%+bv)Ez!+1He#-4WMgBjXHaI~1_01!30wdG literal 0 HcmV?d00001 diff --git a/extended-const/global/global.23.wasm b/extended-const/global/global.23.wasm new file mode 100644 index 0000000000000000000000000000000000000000..4b98efd14b173d643e98efc83afd0d1e830e5df5 GIT binary patch literal 34 pcmZQbEY4+QU|?X9VB{z+NKGzDEiU0o&&f|p%!$u5He#-4004~c2>Sp4 literal 0 HcmV?d00001 diff --git a/extended-const/global/global.24.wasm b/extended-const/global/global.24.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f6e96259bea2503c56cde1a71079bf8d4efbfcc1 GIT binary patch literal 38 tcmZQbEY4+QU|?XH(a_Mqz{pWtkeXbQT3o`Fo|B)Hm=m9AY{Xp81OUlo3jF{8 literal 0 HcmV?d00001 diff --git a/extended-const/global/global.25.wasm b/extended-const/global/global.25.wasm new file mode 100644 index 0000000000000000000000000000000000000000..dd30818b0bfc676d60ef214166c17d1f02d843fb GIT binary patch literal 38 tcmZQbEY4+QU|?XH(a_Mqz{pWtkeXbQT3o`Fo|B)Hm=m9AY{Xpu9{|c>3;F;6 literal 0 HcmV?d00001 diff --git a/extended-const/global/global.26.wasm b/extended-const/global/global.26.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f634698e68557f1aad524a462d3e405dbe102fa6 GIT binary patch literal 16 XcmZQbEY4+QU|?WlW2|RzWZ(t>6-NRa literal 0 HcmV?d00001 diff --git a/extended-const/global/global.27.wasm b/extended-const/global/global.27.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e49f668459477fad226d3d3b02140ca5e026df89 GIT binary patch literal 20 bcmZQbEY4+QU|?WtYiMX-V610yWZ(t>EsF#l literal 0 HcmV?d00001 diff --git a/extended-const/global/global.28.wasm b/extended-const/global/global.28.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f7f54b88e6da7cdf92cc4aa6b3732250bba9fed4 GIT binary patch literal 20 bcmZQbEY4+QU|?WtYiMX-V66Y|$iNK%F@FUb literal 0 HcmV?d00001 diff --git a/extended-const/global/global.29.wasm b/extended-const/global/global.29.wasm new file mode 100644 index 0000000000000000000000000000000000000000..95d1e5508462ec0fab49ea8b12d53aad18b5a275 GIT binary patch literal 27 icmZQbEY4+QU|?WmWlUgTtY>CoWZ+_BWMNQd;06FK$^vr$ literal 0 HcmV?d00001 diff --git a/extended-const/global/global.3.wasm b/extended-const/global/global.3.wasm new file mode 100644 index 0000000000000000000000000000000000000000..638420f569f0f7cb02baa756193261fd02fe9d35 GIT binary patch literal 26 fcmZQbEY4+QU|?Y5WUOU$1~M49*;yGG6PXzREAj%7 literal 0 HcmV?d00001 diff --git a/extended-const/global/global.30.wasm b/extended-const/global/global.30.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a7193d187322694ed372fe1c463a1540a82eeb43 GIT binary patch literal 35 qcmZQbEY4+QU|?WmWlUgTtY>CoWME@stY>g!;O1guWMNQdrFU}OW*Dooq}eYOh9 literal 0 HcmV?d00001 diff --git a/extended-const/global/global.37.wasm b/extended-const/global/global.37.wasm new file mode 100644 index 0000000000000000000000000000000000000000..9596b6f605cdb06f64850369fb40f888d8af1427 GIT binary patch literal 34 pcmZQbEY4+QU|?WmVN76PU}j=uU}IyfXLMxX=3--HVNhY<1^_*N0?Ysa literal 0 HcmV?d00001 diff --git a/extended-const/global/global.38.wasm b/extended-const/global/global.38.wasm new file mode 100644 index 0000000000000000000000000000000000000000..812b82c133d52a6ebf3c164c8146d03239bd2518 GIT binary patch literal 39 ucmZQbEY4+QU|?WmVN76PU}j=uU}IyfXLMxX=Hh1LWN>6)a!_I5<^}*xivwf; literal 0 HcmV?d00001 diff --git a/extended-const/global/global.39.wasm b/extended-const/global/global.39.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f1f2afdf5fc92622d8db7661a08f0342157cc51c GIT binary patch literal 39 ucmZQbEY4+QU|?WmVN76PU}j=uU}IyfXLMxX=Hh1LWN>6)c2Hs9<^}*xkppD_ literal 0 HcmV?d00001 diff --git a/extended-const/global/global.4.wasm b/extended-const/global/global.4.wasm new file mode 100644 index 0000000000000000000000000000000000000000..638420f569f0f7cb02baa756193261fd02fe9d35 GIT binary patch literal 26 fcmZQbEY4+QU|?Y5WUOU$1~M49*;yGG6PXzREAj%7 literal 0 HcmV?d00001 diff --git a/extended-const/global/global.40.wasm b/extended-const/global/global.40.wasm new file mode 100644 index 0000000000000000000000000000000000000000..2be598960fc1408b51b6572097e8423e71568740 GIT binary patch literal 41 ucmZQbEY4+QU|?WmVN76PU}j=uU}IyfXLMxX=Hg}KW^e>T76%muZf*cpqXVk| literal 0 HcmV?d00001 diff --git a/extended-const/global/global.41.wasm b/extended-const/global/global.41.wasm new file mode 100644 index 0000000000000000000000000000000000000000..3b5313becd43bdd967d12be333d85a68bec911b2 GIT binary patch literal 44 xcmZQbEY4+QU|?WmVN76PU}j=uU}IyfXLMxX<`Q7!V{imQmU>49Ruu+rZUAL21U3Kw literal 0 HcmV?d00001 diff --git a/extended-const/global/global.42.wasm b/extended-const/global/global.42.wasm new file mode 100644 index 0000000000000000000000000000000000000000..57031c8822885edf4aa76a9bec5a0db8477fd680 GIT binary patch literal 41 wcmZQbEY4+QU|?WmVN76PU}j=uU}IyfXLMxX=Hg}KW^iO+a!_I5Vc_Nl09A_vbN~PV literal 0 HcmV?d00001 diff --git a/extended-const/global/global.43.wasm b/extended-const/global/global.43.wasm new file mode 100644 index 0000000000000000000000000000000000000000..d61c881207dec3e70e777935808c1a8cf03c956f GIT binary patch literal 41 wcmZQbEY4+QU|?WmVN76PU}j=uU}IyfXLMxX=Hg}KW^iO+a!_I5W#Hxp09B6zbpQYW literal 0 HcmV?d00001 diff --git a/extended-const/global/global.44.wasm b/extended-const/global/global.44.wasm new file mode 100644 index 0000000000000000000000000000000000000000..c466c9fac18e606cd00b83c0d013e903f1025f9f GIT binary patch literal 42 xcmZQbEY4+QU|?WmVN76PU}j=uU}IyfXLMxX=Hg@IVQ^$%a!_I5V_@Ls1^`(P19$)c literal 0 HcmV?d00001 diff --git a/extended-const/global/global.45.wasm b/extended-const/global/global.45.wasm new file mode 100644 index 0000000000000000000000000000000000000000..908519ffc342e06f8534e01a7f0d74825010e4e4 GIT binary patch literal 35 qcmZQbEY4+QU|?WmVN76PU}j=uU}IyfXLMxX=3-}LWl&+@=LP^kYXaQ> literal 0 HcmV?d00001 diff --git a/extended-const/global/global.46.wasm b/extended-const/global/global.46.wasm new file mode 100644 index 0000000000000000000000000000000000000000..b9c97f0fe187578cd921b734ff33e1fea49af5cb GIT binary patch literal 39 ucmZQbEY4+QU|?WmVN76PU}j=uU}IyfXLMxX=Hh1LWKdynWOQVb<^}*xd;@j> literal 0 HcmV?d00001 diff --git a/extended-const/global/global.47.wasm b/extended-const/global/global.47.wasm new file mode 100644 index 0000000000000000000000000000000000000000..550efbe28db4723fb8a29f3445736839ea8ab1fb GIT binary patch literal 47 zcmZQbEY4+QU|?Y6WJ+LQNMNjItY>CsVqj!r12P>MxVd#hJB%`ws(;1~UKv literal 0 HcmV?d00001 diff --git a/extended-const/global/global.49.wat b/extended-const/global/global.49.wat new file mode 100644 index 00000000..f0be4a59 --- /dev/null +++ b/extended-const/global/global.49.wat @@ -0,0 +1 @@ +(global $foo i32 (i32.const 0))(global $foo i32 (i32.const 0)) \ No newline at end of file diff --git a/extended-const/global/global.5.wasm b/extended-const/global/global.5.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e1371f428c8458a7852fcdf1e1ee92b0bddc0efb GIT binary patch literal 20 ZcmZQbEY4+QU|?Y5VytCw1~M3WxB(u=0;>Q3 literal 0 HcmV?d00001 diff --git a/extended-const/global/global.50.wat b/extended-const/global/global.50.wat new file mode 100644 index 00000000..7a706870 --- /dev/null +++ b/extended-const/global/global.50.wat @@ -0,0 +1 @@ +(import "" "" (global $foo i32))(global $foo i32 (i32.const 0)) \ No newline at end of file diff --git a/extended-const/global/global.51.wat b/extended-const/global/global.51.wat new file mode 100644 index 00000000..7c7a305e --- /dev/null +++ b/extended-const/global/global.51.wat @@ -0,0 +1 @@ +(import "" "" (global $foo i32))(import "" "" (global $foo i32)) \ No newline at end of file diff --git a/extended-const/global/global.6.wasm b/extended-const/global/global.6.wasm new file mode 100644 index 0000000000000000000000000000000000000000..649521673c94afa21af7fc2cb6833233015590c7 GIT binary patch literal 16 XcmZQbEY4+QU|?WlW2|LRVBiJ-6xsp! literal 0 HcmV?d00001 diff --git a/extended-const/global/global.7.wasm b/extended-const/global/global.7.wasm new file mode 100644 index 0000000000000000000000000000000000000000..c56bd29734902b7484986e6ee8f370495f07f566 GIT binary patch literal 20 bcmZQbEY4+QU|?Y5VytCwW?*Qr@8JdjA%p{J literal 0 HcmV?d00001 diff --git a/extended-const/global/global.8.wasm b/extended-const/global/global.8.wasm new file mode 100644 index 0000000000000000000000000000000000000000..b94d1e44646bcee82d96a6075c4188f88951372b GIT binary patch literal 17 YcmZQbEY4+QU|?WlXRK#%WMJe502g5b9RL6T literal 0 HcmV?d00001 diff --git a/extended-const/global/global.9.wasm b/extended-const/global/global.9.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a5d518ec95ef34c2e0f4a9610fbaed8a5ec9a9c9 GIT binary patch literal 17 YcmZQbEY4+QU|?WlXRK#%WXRwK02nU