wasmtime 9.0.4 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1933) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +184 -101
  3. data/ext/Cargo.toml +6 -6
  4. data/ext/build.rs +2 -2
  5. data/ext/cargo-vendor/cranelift-bforest-0.97.1/.cargo-checksum.json +1 -0
  6. data/ext/cargo-vendor/cranelift-bforest-0.97.1/Cargo.toml +31 -0
  7. data/ext/cargo-vendor/cranelift-codegen-0.97.1/.cargo-checksum.json +1 -0
  8. data/ext/cargo-vendor/cranelift-codegen-0.97.1/Cargo.toml +158 -0
  9. data/ext/cargo-vendor/cranelift-codegen-0.97.1/benches/x64-evex-encoding.rs +52 -0
  10. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/ir/trapcode.rs +144 -0
  11. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/aarch64/abi.rs +1294 -0
  12. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/aarch64/inst/emit.rs +3684 -0
  13. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/aarch64/inst/emit_tests.rs +7895 -0
  14. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/aarch64/inst/imms.rs +1210 -0
  15. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/aarch64/inst/mod.rs +2966 -0
  16. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/aarch64/inst.isle +4037 -0
  17. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/aarch64/lower/isle.rs +816 -0
  18. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/aarch64/lower.isle +2906 -0
  19. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/aarch64/mod.rs +238 -0
  20. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/mod.rs +424 -0
  21. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/abi.rs +825 -0
  22. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst/args.rs +1812 -0
  23. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst/emit.rs +3008 -0
  24. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst/emit_tests.rs +2338 -0
  25. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst/encode.rs +262 -0
  26. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst/imms.rs +250 -0
  27. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst/mod.rs +1963 -0
  28. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst/regs.rs +223 -0
  29. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst/unwind/systemv.rs +174 -0
  30. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst/vector.rs +669 -0
  31. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst.isle +2915 -0
  32. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst_vector.isle +760 -0
  33. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/lower/isle.rs +553 -0
  34. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/lower.isle +1409 -0
  35. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/mod.rs +216 -0
  36. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/s390x/abi.rs +957 -0
  37. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/s390x/inst/emit.rs +3707 -0
  38. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/s390x/inst/emit_tests.rs +13409 -0
  39. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/s390x/inst/mod.rs +3426 -0
  40. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/s390x/inst.isle +5046 -0
  41. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/s390x/lower.isle +3991 -0
  42. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/s390x/mod.rs +213 -0
  43. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/abi.rs +985 -0
  44. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/encoding/evex.rs +749 -0
  45. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/encoding/rex.rs +588 -0
  46. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/encoding/vex.rs +492 -0
  47. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/inst/args.rs +2193 -0
  48. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/inst/emit.rs +4090 -0
  49. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/inst/emit_tests.rs +5674 -0
  50. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/inst/mod.rs +2667 -0
  51. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/inst.isle +5104 -0
  52. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/lower/isle.rs +1148 -0
  53. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/lower.isle +4481 -0
  54. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/lower.rs +328 -0
  55. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/mod.rs +251 -0
  56. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isle_prelude.rs +862 -0
  57. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/machinst/abi.rs +2455 -0
  58. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/machinst/buffer.rs +2277 -0
  59. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/machinst/compile.rs +92 -0
  60. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/machinst/isle.rs +827 -0
  61. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/machinst/lower.rs +1388 -0
  62. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/machinst/mod.rs +549 -0
  63. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/machinst/reg.rs +537 -0
  64. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/machinst/vcode.rs +1580 -0
  65. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/prelude.isle +578 -0
  66. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/prelude_lower.isle +1012 -0
  67. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/settings.rs +600 -0
  68. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/verifier/mod.rs +1884 -0
  69. data/ext/cargo-vendor/cranelift-codegen-meta-0.97.1/.cargo-checksum.json +1 -0
  70. data/ext/cargo-vendor/cranelift-codegen-meta-0.97.1/Cargo.toml +23 -0
  71. data/ext/cargo-vendor/cranelift-codegen-meta-0.97.1/src/isa/x86.rs +444 -0
  72. data/ext/cargo-vendor/cranelift-codegen-meta-0.97.1/src/shared/settings.rs +348 -0
  73. data/ext/cargo-vendor/cranelift-codegen-shared-0.97.1/.cargo-checksum.json +1 -0
  74. data/ext/cargo-vendor/cranelift-codegen-shared-0.97.1/Cargo.toml +22 -0
  75. data/ext/cargo-vendor/cranelift-control-0.97.1/.cargo-checksum.json +1 -0
  76. data/ext/cargo-vendor/cranelift-control-0.97.1/Cargo.toml +30 -0
  77. data/ext/cargo-vendor/cranelift-control-0.97.1/src/chaos.rs +125 -0
  78. data/ext/cargo-vendor/cranelift-control-0.97.1/src/lib.rs +45 -0
  79. data/ext/cargo-vendor/cranelift-control-0.97.1/src/zero_sized.rs +53 -0
  80. data/ext/cargo-vendor/cranelift-entity-0.97.1/.cargo-checksum.json +1 -0
  81. data/ext/cargo-vendor/cranelift-entity-0.97.1/Cargo.toml +35 -0
  82. data/ext/cargo-vendor/cranelift-entity-0.97.1/src/list.rs +955 -0
  83. data/ext/cargo-vendor/cranelift-frontend-0.97.1/.cargo-checksum.json +1 -0
  84. data/ext/cargo-vendor/cranelift-frontend-0.97.1/Cargo.toml +53 -0
  85. data/ext/cargo-vendor/cranelift-isle-0.97.1/.cargo-checksum.json +1 -0
  86. data/ext/cargo-vendor/cranelift-isle-0.97.1/Cargo.toml +37 -0
  87. data/ext/cargo-vendor/cranelift-native-0.97.1/.cargo-checksum.json +1 -0
  88. data/ext/cargo-vendor/cranelift-native-0.97.1/Cargo.toml +38 -0
  89. data/ext/cargo-vendor/cranelift-native-0.97.1/src/lib.rs +215 -0
  90. data/ext/cargo-vendor/cranelift-wasm-0.97.1/.cargo-checksum.json +1 -0
  91. data/ext/cargo-vendor/cranelift-wasm-0.97.1/Cargo.toml +85 -0
  92. data/ext/cargo-vendor/cranelift-wasm-0.97.1/src/code_translator.rs +3538 -0
  93. data/ext/cargo-vendor/cranelift-wasm-0.97.1/src/environ/dummy.rs +924 -0
  94. data/ext/cargo-vendor/cranelift-wasm-0.97.1/src/environ/spec.rs +834 -0
  95. data/ext/cargo-vendor/cranelift-wasm-0.97.1/src/func_translator.rs +440 -0
  96. data/ext/cargo-vendor/cranelift-wasm-0.97.1/src/sections_translator.rs +417 -0
  97. data/ext/cargo-vendor/cranelift-wasm-0.97.1/src/translation_utils.rs +99 -0
  98. data/ext/cargo-vendor/encoding_rs-0.8.32/.cargo-checksum.json +1 -0
  99. data/ext/cargo-vendor/encoding_rs-0.8.32/CONTRIBUTING.md +48 -0
  100. data/ext/cargo-vendor/encoding_rs-0.8.32/COPYRIGHT +17 -0
  101. data/ext/cargo-vendor/encoding_rs-0.8.32/Cargo.toml +84 -0
  102. data/ext/cargo-vendor/encoding_rs-0.8.32/Ideas.md +106 -0
  103. data/ext/cargo-vendor/encoding_rs-0.8.32/LICENSE-APACHE +202 -0
  104. data/ext/cargo-vendor/encoding_rs-0.8.32/LICENSE-MIT +25 -0
  105. data/ext/cargo-vendor/encoding_rs-0.8.32/LICENSE-WHATWG +26 -0
  106. data/ext/cargo-vendor/encoding_rs-0.8.32/README.md +827 -0
  107. data/ext/cargo-vendor/encoding_rs-0.8.32/ci/miri.sh +14 -0
  108. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/Big5.txt +16 -0
  109. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/EUC-JP.txt +12 -0
  110. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/EUC-KR.txt +10 -0
  111. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/GBK.txt +16 -0
  112. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/IBM866.txt +8 -0
  113. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-2022-JP.txt +10 -0
  114. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-10.txt +8 -0
  115. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-13.txt +8 -0
  116. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-14.txt +8 -0
  117. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-15.txt +7 -0
  118. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-16.txt +8 -0
  119. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-2.txt +6 -0
  120. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-3.txt +6 -0
  121. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-4.txt +6 -0
  122. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-5.txt +6 -0
  123. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-6.txt +7 -0
  124. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-7.txt +11 -0
  125. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-8-I.txt +9 -0
  126. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-8.txt +9 -0
  127. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/KOI8-R.txt +6 -0
  128. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/KOI8-U.txt +6 -0
  129. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/Shift_JIS.txt +8 -0
  130. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/UTF-16BE.txt +8 -0
  131. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/UTF-16LE.txt +8 -0
  132. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/UTF-8.txt +5 -0
  133. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/gb18030.txt +9 -0
  134. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/macintosh.txt +7 -0
  135. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/replacement.txt +10 -0
  136. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-1250.txt +6 -0
  137. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-1251.txt +6 -0
  138. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-1252.txt +7 -0
  139. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-1253.txt +8 -0
  140. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-1254.txt +7 -0
  141. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-1255.txt +8 -0
  142. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-1256.txt +6 -0
  143. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-1257.txt +7 -0
  144. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-1258.txt +11 -0
  145. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-874.txt +7 -0
  146. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/x-mac-cyrillic.txt +6 -0
  147. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/x-user-defined.txt +6 -0
  148. data/ext/cargo-vendor/encoding_rs-0.8.32/generate-encoding-data.py +2008 -0
  149. data/ext/cargo-vendor/encoding_rs-0.8.32/rustfmt.toml +1 -0
  150. data/ext/cargo-vendor/encoding_rs-0.8.32/src/ascii.rs +1546 -0
  151. data/ext/cargo-vendor/encoding_rs-0.8.32/src/big5.rs +427 -0
  152. data/ext/cargo-vendor/encoding_rs-0.8.32/src/data.rs +114378 -0
  153. data/ext/cargo-vendor/encoding_rs-0.8.32/src/euc_jp.rs +469 -0
  154. data/ext/cargo-vendor/encoding_rs-0.8.32/src/euc_kr.rs +442 -0
  155. data/ext/cargo-vendor/encoding_rs-0.8.32/src/gb18030.rs +767 -0
  156. data/ext/cargo-vendor/encoding_rs-0.8.32/src/handles.rs +1969 -0
  157. data/ext/cargo-vendor/encoding_rs-0.8.32/src/iso_2022_jp.rs +1068 -0
  158. data/ext/cargo-vendor/encoding_rs-0.8.32/src/lib.rs +6133 -0
  159. data/ext/cargo-vendor/encoding_rs-0.8.32/src/macros.rs +1622 -0
  160. data/ext/cargo-vendor/encoding_rs-0.8.32/src/mem.rs +3354 -0
  161. data/ext/cargo-vendor/encoding_rs-0.8.32/src/replacement.rs +104 -0
  162. data/ext/cargo-vendor/encoding_rs-0.8.32/src/shift_jis.rs +426 -0
  163. data/ext/cargo-vendor/encoding_rs-0.8.32/src/simd_funcs.rs +453 -0
  164. data/ext/cargo-vendor/encoding_rs-0.8.32/src/single_byte.rs +714 -0
  165. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/big5_in.txt +19787 -0
  166. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/big5_in_ref.txt +19787 -0
  167. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/big5_out.txt +14601 -0
  168. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/big5_out_ref.txt +14601 -0
  169. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/euc_kr_in.txt +23945 -0
  170. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/euc_kr_in_ref.txt +23945 -0
  171. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/euc_kr_out.txt +17053 -0
  172. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/euc_kr_out_ref.txt +17053 -0
  173. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/gb18030_in.txt +23945 -0
  174. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/gb18030_in_ref.txt +23945 -0
  175. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/gb18030_out.txt +23944 -0
  176. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/gb18030_out_ref.txt +23944 -0
  177. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/iso_2022_jp_in.txt +8841 -0
  178. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/iso_2022_jp_in_ref.txt +8841 -0
  179. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/iso_2022_jp_out.txt +7404 -0
  180. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/iso_2022_jp_out_ref.txt +7404 -0
  181. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/jis0208_in.txt +8841 -0
  182. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/jis0208_in_ref.txt +8841 -0
  183. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/jis0208_out.txt +7341 -0
  184. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/jis0208_out_ref.txt +7341 -0
  185. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/jis0212_in.txt +8841 -0
  186. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/jis0212_in_ref.txt +8841 -0
  187. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/shift_jis_in.txt +11285 -0
  188. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/shift_jis_in_ref.txt +11285 -0
  189. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/shift_jis_out.txt +7355 -0
  190. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/shift_jis_out_ref.txt +7355 -0
  191. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_labels_names.rs +242 -0
  192. data/ext/cargo-vendor/encoding_rs-0.8.32/src/testing.rs +262 -0
  193. data/ext/cargo-vendor/encoding_rs-0.8.32/src/utf_16.rs +472 -0
  194. data/ext/cargo-vendor/encoding_rs-0.8.32/src/utf_8.rs +1629 -0
  195. data/ext/cargo-vendor/encoding_rs-0.8.32/src/variant.rs +400 -0
  196. data/ext/cargo-vendor/encoding_rs-0.8.32/src/x_user_defined.rs +249 -0
  197. data/ext/cargo-vendor/equivalent-1.0.1/.cargo-checksum.json +1 -0
  198. data/ext/cargo-vendor/equivalent-1.0.1/Cargo.toml +27 -0
  199. data/ext/cargo-vendor/equivalent-1.0.1/LICENSE-APACHE +201 -0
  200. data/ext/cargo-vendor/equivalent-1.0.1/LICENSE-MIT +25 -0
  201. data/ext/cargo-vendor/equivalent-1.0.1/README.md +25 -0
  202. data/ext/cargo-vendor/equivalent-1.0.1/src/lib.rs +113 -0
  203. data/ext/cargo-vendor/file-per-thread-logger-0.2.0/.cargo-checksum.json +1 -0
  204. data/ext/cargo-vendor/file-per-thread-logger-0.2.0/Cargo.toml +36 -0
  205. data/ext/cargo-vendor/file-per-thread-logger-0.2.0/run-tests.sh +12 -0
  206. data/ext/cargo-vendor/file-per-thread-logger-0.2.0/src/lib.rs +200 -0
  207. data/ext/cargo-vendor/file-per-thread-logger-0.2.0/tests/test.rs +323 -0
  208. data/ext/cargo-vendor/hashbrown-0.14.0/.cargo-checksum.json +1 -0
  209. data/ext/cargo-vendor/hashbrown-0.14.0/CHANGELOG.md +475 -0
  210. data/ext/cargo-vendor/hashbrown-0.14.0/Cargo.toml +131 -0
  211. data/ext/cargo-vendor/hashbrown-0.14.0/LICENSE-APACHE +201 -0
  212. data/ext/cargo-vendor/hashbrown-0.14.0/LICENSE-MIT +25 -0
  213. data/ext/cargo-vendor/hashbrown-0.14.0/README.md +125 -0
  214. data/ext/cargo-vendor/hashbrown-0.14.0/benches/bench.rs +331 -0
  215. data/ext/cargo-vendor/hashbrown-0.14.0/benches/insert_unique_unchecked.rs +32 -0
  216. data/ext/cargo-vendor/hashbrown-0.14.0/clippy.toml +1 -0
  217. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/mod.rs +6 -0
  218. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/rayon/helpers.rs +27 -0
  219. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/rayon/map.rs +731 -0
  220. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/rayon/mod.rs +4 -0
  221. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/rayon/raw.rs +231 -0
  222. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/rayon/set.rs +659 -0
  223. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/rkyv/hash_map.rs +125 -0
  224. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/rkyv/hash_set.rs +123 -0
  225. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/rkyv/mod.rs +2 -0
  226. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/serde.rs +201 -0
  227. data/ext/cargo-vendor/hashbrown-0.14.0/src/lib.rs +165 -0
  228. data/ext/cargo-vendor/hashbrown-0.14.0/src/macros.rs +70 -0
  229. data/ext/cargo-vendor/hashbrown-0.14.0/src/map.rs +8506 -0
  230. data/ext/cargo-vendor/hashbrown-0.14.0/src/raw/alloc.rs +86 -0
  231. data/ext/cargo-vendor/hashbrown-0.14.0/src/raw/bitmask.rs +133 -0
  232. data/ext/cargo-vendor/hashbrown-0.14.0/src/raw/generic.rs +157 -0
  233. data/ext/cargo-vendor/hashbrown-0.14.0/src/raw/mod.rs +3378 -0
  234. data/ext/cargo-vendor/hashbrown-0.14.0/src/raw/neon.rs +124 -0
  235. data/ext/cargo-vendor/hashbrown-0.14.0/src/raw/sse2.rs +149 -0
  236. data/ext/cargo-vendor/hashbrown-0.14.0/src/rustc_entry.rs +630 -0
  237. data/ext/cargo-vendor/hashbrown-0.14.0/src/scopeguard.rs +72 -0
  238. data/ext/cargo-vendor/hashbrown-0.14.0/src/set.rs +2903 -0
  239. data/ext/cargo-vendor/hashbrown-0.14.0/tests/equivalent_trait.rs +53 -0
  240. data/ext/cargo-vendor/hashbrown-0.14.0/tests/hasher.rs +65 -0
  241. data/ext/cargo-vendor/hashbrown-0.14.0/tests/raw.rs +11 -0
  242. data/ext/cargo-vendor/hashbrown-0.14.0/tests/rayon.rs +535 -0
  243. data/ext/cargo-vendor/hashbrown-0.14.0/tests/serde.rs +65 -0
  244. data/ext/cargo-vendor/hashbrown-0.14.0/tests/set.rs +34 -0
  245. data/ext/cargo-vendor/indexmap-2.0.0/.cargo-checksum.json +1 -0
  246. data/ext/cargo-vendor/indexmap-2.0.0/Cargo.toml +112 -0
  247. data/ext/cargo-vendor/indexmap-2.0.0/LICENSE-APACHE +201 -0
  248. data/ext/cargo-vendor/indexmap-2.0.0/LICENSE-MIT +25 -0
  249. data/ext/cargo-vendor/indexmap-2.0.0/README.md +55 -0
  250. data/ext/cargo-vendor/indexmap-2.0.0/RELEASES.md +424 -0
  251. data/ext/cargo-vendor/indexmap-2.0.0/benches/bench.rs +763 -0
  252. data/ext/cargo-vendor/indexmap-2.0.0/benches/faststring.rs +185 -0
  253. data/ext/cargo-vendor/indexmap-2.0.0/src/arbitrary.rs +77 -0
  254. data/ext/cargo-vendor/indexmap-2.0.0/src/lib.rs +278 -0
  255. data/ext/cargo-vendor/indexmap-2.0.0/src/macros.rs +178 -0
  256. data/ext/cargo-vendor/indexmap-2.0.0/src/map/core/raw.rs +217 -0
  257. data/ext/cargo-vendor/indexmap-2.0.0/src/map/core.rs +742 -0
  258. data/ext/cargo-vendor/indexmap-2.0.0/src/map/iter.rs +541 -0
  259. data/ext/cargo-vendor/indexmap-2.0.0/src/map/serde_seq.rs +138 -0
  260. data/ext/cargo-vendor/indexmap-2.0.0/src/map/slice.rs +471 -0
  261. data/ext/cargo-vendor/indexmap-2.0.0/src/map/tests.rs +449 -0
  262. data/ext/cargo-vendor/indexmap-2.0.0/src/map.rs +1223 -0
  263. data/ext/cargo-vendor/indexmap-2.0.0/src/mutable_keys.rs +91 -0
  264. data/ext/cargo-vendor/indexmap-2.0.0/src/rayon/map.rs +679 -0
  265. data/ext/cargo-vendor/indexmap-2.0.0/src/rayon/mod.rs +27 -0
  266. data/ext/cargo-vendor/indexmap-2.0.0/src/rayon/set.rs +774 -0
  267. data/ext/cargo-vendor/indexmap-2.0.0/src/rustc.rs +158 -0
  268. data/ext/cargo-vendor/indexmap-2.0.0/src/serde.rs +151 -0
  269. data/ext/cargo-vendor/indexmap-2.0.0/src/set/iter.rs +543 -0
  270. data/ext/cargo-vendor/indexmap-2.0.0/src/set/slice.rs +278 -0
  271. data/ext/cargo-vendor/indexmap-2.0.0/src/set/tests.rs +545 -0
  272. data/ext/cargo-vendor/indexmap-2.0.0/src/set.rs +1011 -0
  273. data/ext/cargo-vendor/indexmap-2.0.0/src/util.rs +53 -0
  274. data/ext/cargo-vendor/indexmap-2.0.0/tests/equivalent_trait.rs +53 -0
  275. data/ext/cargo-vendor/indexmap-2.0.0/tests/macros_full_path.rs +19 -0
  276. data/ext/cargo-vendor/indexmap-2.0.0/tests/quick.rs +579 -0
  277. data/ext/cargo-vendor/indexmap-2.0.0/tests/tests.rs +28 -0
  278. data/ext/cargo-vendor/regalloc2-0.9.2/.cargo-checksum.json +1 -0
  279. data/ext/cargo-vendor/regalloc2-0.9.2/Cargo.toml +72 -0
  280. data/ext/cargo-vendor/regalloc2-0.9.2/deny.toml +28 -0
  281. data/ext/cargo-vendor/regalloc2-0.9.2/src/checker.rs +1089 -0
  282. data/ext/cargo-vendor/regalloc2-0.9.2/src/fuzzing/func.rs +702 -0
  283. data/ext/cargo-vendor/regalloc2-0.9.2/src/index.rs +268 -0
  284. data/ext/cargo-vendor/regalloc2-0.9.2/src/ion/data_structures.rs +857 -0
  285. data/ext/cargo-vendor/regalloc2-0.9.2/src/ion/liveranges.rs +961 -0
  286. data/ext/cargo-vendor/regalloc2-0.9.2/src/ion/merge.rs +368 -0
  287. data/ext/cargo-vendor/regalloc2-0.9.2/src/ion/mod.rs +150 -0
  288. data/ext/cargo-vendor/regalloc2-0.9.2/src/ion/moves.rs +1017 -0
  289. data/ext/cargo-vendor/regalloc2-0.9.2/src/ion/process.rs +1307 -0
  290. data/ext/cargo-vendor/regalloc2-0.9.2/src/ion/requirement.rs +174 -0
  291. data/ext/cargo-vendor/regalloc2-0.9.2/src/ion/spill.rs +165 -0
  292. data/ext/cargo-vendor/regalloc2-0.9.2/src/ion/stackmap.rs +79 -0
  293. data/ext/cargo-vendor/regalloc2-0.9.2/src/lib.rs +1526 -0
  294. data/ext/cargo-vendor/regalloc2-0.9.2/src/moves.rs +439 -0
  295. data/ext/cargo-vendor/regalloc2-0.9.2/src/serialize.rs +311 -0
  296. data/ext/cargo-vendor/semver-1.0.18/.cargo-checksum.json +1 -0
  297. data/ext/cargo-vendor/semver-1.0.18/Cargo.toml +47 -0
  298. data/ext/cargo-vendor/semver-1.0.18/LICENSE-APACHE +176 -0
  299. data/ext/cargo-vendor/semver-1.0.18/LICENSE-MIT +23 -0
  300. data/ext/cargo-vendor/semver-1.0.18/README.md +84 -0
  301. data/ext/cargo-vendor/semver-1.0.18/benches/parse.rs +24 -0
  302. data/ext/cargo-vendor/semver-1.0.18/build.rs +75 -0
  303. data/ext/cargo-vendor/semver-1.0.18/src/backport.rs +23 -0
  304. data/ext/cargo-vendor/semver-1.0.18/src/display.rs +165 -0
  305. data/ext/cargo-vendor/semver-1.0.18/src/error.rs +126 -0
  306. data/ext/cargo-vendor/semver-1.0.18/src/eval.rs +181 -0
  307. data/ext/cargo-vendor/semver-1.0.18/src/identifier.rs +422 -0
  308. data/ext/cargo-vendor/semver-1.0.18/src/impls.rs +156 -0
  309. data/ext/cargo-vendor/semver-1.0.18/src/lib.rs +533 -0
  310. data/ext/cargo-vendor/semver-1.0.18/src/parse.rs +409 -0
  311. data/ext/cargo-vendor/semver-1.0.18/src/serde.rs +109 -0
  312. data/ext/cargo-vendor/semver-1.0.18/tests/node/mod.rs +43 -0
  313. data/ext/cargo-vendor/semver-1.0.18/tests/test_autotrait.rs +14 -0
  314. data/ext/cargo-vendor/semver-1.0.18/tests/test_identifier.rs +45 -0
  315. data/ext/cargo-vendor/semver-1.0.18/tests/test_version.rs +238 -0
  316. data/ext/cargo-vendor/semver-1.0.18/tests/test_version_req.rs +443 -0
  317. data/ext/cargo-vendor/semver-1.0.18/tests/util/mod.rs +39 -0
  318. data/ext/cargo-vendor/sptr-0.3.2/.cargo-checksum.json +1 -0
  319. data/ext/cargo-vendor/sptr-0.3.2/Cargo.toml +28 -0
  320. data/ext/cargo-vendor/sptr-0.3.2/README.md +73 -0
  321. data/ext/cargo-vendor/sptr-0.3.2/src/func.rs +83 -0
  322. data/ext/cargo-vendor/sptr-0.3.2/src/int.rs +364 -0
  323. data/ext/cargo-vendor/sptr-0.3.2/src/lib.rs +756 -0
  324. data/ext/cargo-vendor/wasi-cap-std-sync-10.0.0/.cargo-checksum.json +1 -0
  325. data/ext/cargo-vendor/wasi-cap-std-sync-10.0.0/Cargo.toml +90 -0
  326. data/ext/cargo-vendor/wasi-cap-std-sync-10.0.0/src/dir.rs +464 -0
  327. data/ext/cargo-vendor/wasi-cap-std-sync-10.0.0/src/lib.rs +141 -0
  328. data/ext/cargo-vendor/wasi-common-10.0.0/.cargo-checksum.json +1 -0
  329. data/ext/cargo-vendor/wasi-common-10.0.0/Cargo.toml +87 -0
  330. data/ext/cargo-vendor/wasi-common-10.0.0/src/ctx.rs +128 -0
  331. data/ext/cargo-vendor/wasi-common-10.0.0/src/file.rs +262 -0
  332. data/ext/cargo-vendor/wasi-common-10.0.0/src/snapshots/preview_1.rs +1490 -0
  333. data/ext/cargo-vendor/wasm-encoder-0.29.0/.cargo-checksum.json +1 -0
  334. data/ext/cargo-vendor/wasm-encoder-0.29.0/Cargo.toml +33 -0
  335. data/ext/cargo-vendor/wasm-encoder-0.29.0/README.md +80 -0
  336. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/aliases.rs +160 -0
  337. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/canonicals.rs +159 -0
  338. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/components.rs +29 -0
  339. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/exports.rs +127 -0
  340. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/imports.rs +200 -0
  341. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/instances.rs +200 -0
  342. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/modules.rs +29 -0
  343. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/names.rs +149 -0
  344. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/start.rs +52 -0
  345. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/types.rs +759 -0
  346. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component.rs +160 -0
  347. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/code.rs +2913 -0
  348. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/custom.rs +55 -0
  349. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/data.rs +185 -0
  350. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/dump.rs +627 -0
  351. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/elements.rs +224 -0
  352. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/exports.rs +85 -0
  353. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/functions.rs +63 -0
  354. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/globals.rs +90 -0
  355. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/imports.rs +142 -0
  356. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/linking.rs +263 -0
  357. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/memories.rs +99 -0
  358. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/names.rs +265 -0
  359. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/producers.rs +180 -0
  360. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/start.rs +39 -0
  361. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/tables.rs +104 -0
  362. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/tags.rs +85 -0
  363. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/types.rs +246 -0
  364. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core.rs +168 -0
  365. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/lib.rs +215 -0
  366. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/raw.rs +30 -0
  367. data/ext/cargo-vendor/wasmparser-0.107.0/.cargo-checksum.json +1 -0
  368. data/ext/cargo-vendor/wasmparser-0.107.0/Cargo.lock +621 -0
  369. data/ext/cargo-vendor/wasmparser-0.107.0/Cargo.toml +54 -0
  370. data/ext/cargo-vendor/wasmparser-0.107.0/benches/benchmark.rs +351 -0
  371. data/ext/cargo-vendor/wasmparser-0.107.0/src/binary_reader.rs +1706 -0
  372. data/ext/cargo-vendor/wasmparser-0.107.0/src/lib.rs +723 -0
  373. data/ext/cargo-vendor/wasmparser-0.107.0/src/parser.rs +1535 -0
  374. data/ext/cargo-vendor/wasmparser-0.107.0/src/readers/component/canonicals.rs +119 -0
  375. data/ext/cargo-vendor/wasmparser-0.107.0/src/readers/component/exports.rs +117 -0
  376. data/ext/cargo-vendor/wasmparser-0.107.0/src/readers/component/imports.rs +137 -0
  377. data/ext/cargo-vendor/wasmparser-0.107.0/src/readers/component/instances.rs +163 -0
  378. data/ext/cargo-vendor/wasmparser-0.107.0/src/readers/component/types.rs +548 -0
  379. data/ext/cargo-vendor/wasmparser-0.107.0/src/readers/core/coredumps.rs +243 -0
  380. data/ext/cargo-vendor/wasmparser-0.107.0/src/readers/core/producers.rs +83 -0
  381. data/ext/cargo-vendor/wasmparser-0.107.0/src/readers/core/types.rs +874 -0
  382. data/ext/cargo-vendor/wasmparser-0.107.0/src/readers/core.rs +35 -0
  383. data/ext/cargo-vendor/wasmparser-0.107.0/src/validator/component.rs +3082 -0
  384. data/ext/cargo-vendor/wasmparser-0.107.0/src/validator/core.rs +1334 -0
  385. data/ext/cargo-vendor/wasmparser-0.107.0/src/validator/names.rs +606 -0
  386. data/ext/cargo-vendor/wasmparser-0.107.0/src/validator/operators.rs +3463 -0
  387. data/ext/cargo-vendor/wasmparser-0.107.0/src/validator/types.rs +3070 -0
  388. data/ext/cargo-vendor/wasmparser-0.107.0/src/validator.rs +1589 -0
  389. data/ext/cargo-vendor/wasmparser-0.111.0/.cargo-checksum.json +1 -0
  390. data/ext/cargo-vendor/wasmparser-0.111.0/Cargo.lock +644 -0
  391. data/ext/cargo-vendor/wasmparser-0.111.0/Cargo.toml +54 -0
  392. data/ext/cargo-vendor/wasmparser-0.111.0/README.md +36 -0
  393. data/ext/cargo-vendor/wasmparser-0.111.0/benches/benchmark.rs +349 -0
  394. data/ext/cargo-vendor/wasmparser-0.111.0/examples/simple.rs +37 -0
  395. data/ext/cargo-vendor/wasmparser-0.111.0/src/binary_reader.rs +1706 -0
  396. data/ext/cargo-vendor/wasmparser-0.111.0/src/lib.rs +726 -0
  397. data/ext/cargo-vendor/wasmparser-0.111.0/src/limits.rs +59 -0
  398. data/ext/cargo-vendor/wasmparser-0.111.0/src/parser.rs +1612 -0
  399. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/component/aliases.rs +119 -0
  400. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/component/canonicals.rs +120 -0
  401. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/component/exports.rs +117 -0
  402. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/component/imports.rs +137 -0
  403. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/component/instances.rs +163 -0
  404. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/component/names.rs +102 -0
  405. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/component/start.rs +30 -0
  406. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/component/types.rs +548 -0
  407. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/component.rs +17 -0
  408. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/code.rs +146 -0
  409. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/coredumps.rs +243 -0
  410. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/custom.rs +63 -0
  411. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/data.rs +96 -0
  412. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/dylink0.rs +132 -0
  413. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/elements.rs +152 -0
  414. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/exports.rs +65 -0
  415. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/functions.rs +17 -0
  416. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/globals.rs +49 -0
  417. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/imports.rs +76 -0
  418. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/init.rs +51 -0
  419. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/memories.rs +56 -0
  420. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/names.rs +153 -0
  421. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/operators.rs +354 -0
  422. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/producers.rs +83 -0
  423. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/tables.rs +87 -0
  424. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/tags.rs +32 -0
  425. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/types.rs +1141 -0
  426. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core.rs +37 -0
  427. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers.rs +316 -0
  428. data/ext/cargo-vendor/wasmparser-0.111.0/src/resources.rs +398 -0
  429. data/ext/cargo-vendor/wasmparser-0.111.0/src/validator/component.rs +3148 -0
  430. data/ext/cargo-vendor/wasmparser-0.111.0/src/validator/core.rs +1314 -0
  431. data/ext/cargo-vendor/wasmparser-0.111.0/src/validator/func.rs +348 -0
  432. data/ext/cargo-vendor/wasmparser-0.111.0/src/validator/names.rs +606 -0
  433. data/ext/cargo-vendor/wasmparser-0.111.0/src/validator/operators.rs +3466 -0
  434. data/ext/cargo-vendor/wasmparser-0.111.0/src/validator/types.rs +3283 -0
  435. data/ext/cargo-vendor/wasmparser-0.111.0/src/validator.rs +1568 -0
  436. data/ext/cargo-vendor/wasmparser-0.111.0/tests/big-module.rs +33 -0
  437. data/ext/cargo-vendor/wasmprinter-0.2.63/.cargo-checksum.json +1 -0
  438. data/ext/cargo-vendor/wasmprinter-0.2.63/Cargo.toml +39 -0
  439. data/ext/cargo-vendor/wasmprinter-0.2.63/README.md +47 -0
  440. data/ext/cargo-vendor/wasmprinter-0.2.63/src/lib.rs +2962 -0
  441. data/ext/cargo-vendor/wasmprinter-0.2.63/src/operator.rs +873 -0
  442. data/ext/cargo-vendor/wasmprinter-0.2.63/tests/all.rs +278 -0
  443. data/ext/cargo-vendor/wasmtime-10.0.0/.cargo-checksum.json +1 -0
  444. data/ext/cargo-vendor/wasmtime-10.0.0/Cargo.toml +183 -0
  445. data/ext/cargo-vendor/wasmtime-10.0.0/src/compiler.rs +710 -0
  446. data/ext/cargo-vendor/wasmtime-10.0.0/src/component/component.rs +382 -0
  447. data/ext/cargo-vendor/wasmtime-10.0.0/src/component/instance.rs +727 -0
  448. data/ext/cargo-vendor/wasmtime-10.0.0/src/component/matching.rs +112 -0
  449. data/ext/cargo-vendor/wasmtime-10.0.0/src/component/mod.rs +313 -0
  450. data/ext/cargo-vendor/wasmtime-10.0.0/src/config.rs +2066 -0
  451. data/ext/cargo-vendor/wasmtime-10.0.0/src/engine/serialization.rs +622 -0
  452. data/ext/cargo-vendor/wasmtime-10.0.0/src/engine.rs +757 -0
  453. data/ext/cargo-vendor/wasmtime-10.0.0/src/externals.rs +763 -0
  454. data/ext/cargo-vendor/wasmtime-10.0.0/src/func/typed.rs +638 -0
  455. data/ext/cargo-vendor/wasmtime-10.0.0/src/func.rs +2355 -0
  456. data/ext/cargo-vendor/wasmtime-10.0.0/src/instance.rs +905 -0
  457. data/ext/cargo-vendor/wasmtime-10.0.0/src/lib.rs +486 -0
  458. data/ext/cargo-vendor/wasmtime-10.0.0/src/linker.rs +1479 -0
  459. data/ext/cargo-vendor/wasmtime-10.0.0/src/memory.rs +950 -0
  460. data/ext/cargo-vendor/wasmtime-10.0.0/src/module.rs +1274 -0
  461. data/ext/cargo-vendor/wasmtime-10.0.0/src/ref.rs +109 -0
  462. data/ext/cargo-vendor/wasmtime-10.0.0/src/store/context.rs +243 -0
  463. data/ext/cargo-vendor/wasmtime-10.0.0/src/store/func_refs.rs +85 -0
  464. data/ext/cargo-vendor/wasmtime-10.0.0/src/store.rs +2166 -0
  465. data/ext/cargo-vendor/wasmtime-10.0.0/src/trampoline/func.rs +133 -0
  466. data/ext/cargo-vendor/wasmtime-10.0.0/src/trampoline/global.rs +67 -0
  467. data/ext/cargo-vendor/wasmtime-10.0.0/src/types/matching.rs +312 -0
  468. data/ext/cargo-vendor/wasmtime-10.0.0/src/types.rs +572 -0
  469. data/ext/cargo-vendor/wasmtime-10.0.0/src/values.rs +290 -0
  470. data/ext/cargo-vendor/wasmtime-asm-macros-10.0.0/.cargo-checksum.json +1 -0
  471. data/ext/cargo-vendor/wasmtime-asm-macros-10.0.0/Cargo.toml +22 -0
  472. data/ext/cargo-vendor/wasmtime-cache-10.0.0/.cargo-checksum.json +1 -0
  473. data/ext/cargo-vendor/wasmtime-cache-10.0.0/Cargo.toml +73 -0
  474. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/.cargo-checksum.json +1 -0
  475. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/Cargo.toml +58 -0
  476. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/src/bindgen.rs +316 -0
  477. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/char.wit +13 -0
  478. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/conventions.wit +39 -0
  479. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/direct-import.wit +5 -0
  480. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/empty.wit +2 -0
  481. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/flags.wit +55 -0
  482. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/floats.wit +13 -0
  483. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/function-new.wit +4 -0
  484. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/integers.wit +40 -0
  485. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/lists.wit +85 -0
  486. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/many-arguments.wit +52 -0
  487. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/multi-return.wit +14 -0
  488. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/records.wit +61 -0
  489. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/rename.wit +16 -0
  490. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/share-types.wit +21 -0
  491. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/simple-functions.wit +17 -0
  492. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/simple-lists.wit +13 -0
  493. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/simple-wasi.wit +23 -0
  494. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/small-anonymous.wit +15 -0
  495. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/smoke-default.wit +5 -0
  496. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/smoke-export.wit +7 -0
  497. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/smoke.wit +7 -0
  498. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/strings.wit +12 -0
  499. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/unions.wit +66 -0
  500. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/use-paths.wit +29 -0
  501. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/variants.wit +147 -0
  502. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/worlds-with-types.wit +16 -0
  503. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen.rs +24 -0
  504. data/ext/cargo-vendor/wasmtime-component-util-10.0.0/.cargo-checksum.json +1 -0
  505. data/ext/cargo-vendor/wasmtime-component-util-10.0.0/Cargo.toml +25 -0
  506. data/ext/cargo-vendor/wasmtime-cranelift-10.0.0/.cargo-checksum.json +1 -0
  507. data/ext/cargo-vendor/wasmtime-cranelift-10.0.0/Cargo.toml +90 -0
  508. data/ext/cargo-vendor/wasmtime-cranelift-10.0.0/src/compiler.rs +1200 -0
  509. data/ext/cargo-vendor/wasmtime-cranelift-10.0.0/src/debug/transform/simulate.rs +410 -0
  510. data/ext/cargo-vendor/wasmtime-cranelift-10.0.0/src/func_environ.rs +2206 -0
  511. data/ext/cargo-vendor/wasmtime-cranelift-10.0.0/src/lib.rs +178 -0
  512. data/ext/cargo-vendor/wasmtime-cranelift-shared-10.0.0/.cargo-checksum.json +1 -0
  513. data/ext/cargo-vendor/wasmtime-cranelift-shared-10.0.0/Cargo.toml +57 -0
  514. data/ext/cargo-vendor/wasmtime-cranelift-shared-10.0.0/src/lib.rs +120 -0
  515. data/ext/cargo-vendor/wasmtime-environ-10.0.0/.cargo-checksum.json +1 -0
  516. data/ext/cargo-vendor/wasmtime-environ-10.0.0/Cargo.lock +681 -0
  517. data/ext/cargo-vendor/wasmtime-environ-10.0.0/Cargo.toml +116 -0
  518. data/ext/cargo-vendor/wasmtime-environ-10.0.0/src/component/compiler.rs +84 -0
  519. data/ext/cargo-vendor/wasmtime-environ-10.0.0/src/component/translate/inline.rs +1067 -0
  520. data/ext/cargo-vendor/wasmtime-environ-10.0.0/src/component/translate.rs +1070 -0
  521. data/ext/cargo-vendor/wasmtime-environ-10.0.0/src/component/types.rs +1916 -0
  522. data/ext/cargo-vendor/wasmtime-environ-10.0.0/src/fact.rs +623 -0
  523. data/ext/cargo-vendor/wasmtime-environ-10.0.0/src/module.rs +1083 -0
  524. data/ext/cargo-vendor/wasmtime-environ-10.0.0/src/module_environ.rs +884 -0
  525. data/ext/cargo-vendor/wasmtime-environ-10.0.0/src/trap_encoding.rs +238 -0
  526. data/ext/cargo-vendor/wasmtime-fiber-10.0.0/.cargo-checksum.json +1 -0
  527. data/ext/cargo-vendor/wasmtime-fiber-10.0.0/Cargo.toml +46 -0
  528. data/ext/cargo-vendor/wasmtime-fiber-10.0.0/src/lib.rs +305 -0
  529. data/ext/cargo-vendor/wasmtime-fiber-10.0.0/src/unix.rs +212 -0
  530. data/ext/cargo-vendor/wasmtime-fiber-10.0.0/src/windows.rs +161 -0
  531. data/ext/cargo-vendor/wasmtime-jit-10.0.0/.cargo-checksum.json +1 -0
  532. data/ext/cargo-vendor/wasmtime-jit-10.0.0/Cargo.toml +104 -0
  533. data/ext/cargo-vendor/wasmtime-jit-10.0.0/src/instantiate.rs +760 -0
  534. data/ext/cargo-vendor/wasmtime-jit-10.0.0/src/lib.rs +38 -0
  535. data/ext/cargo-vendor/wasmtime-jit-10.0.0/src/profiling/jitdump.rs +66 -0
  536. data/ext/cargo-vendor/wasmtime-jit-10.0.0/src/profiling/perfmap.rs +47 -0
  537. data/ext/cargo-vendor/wasmtime-jit-10.0.0/src/profiling/vtune.rs +80 -0
  538. data/ext/cargo-vendor/wasmtime-jit-10.0.0/src/profiling.rs +108 -0
  539. data/ext/cargo-vendor/wasmtime-jit-debug-10.0.0/.cargo-checksum.json +1 -0
  540. data/ext/cargo-vendor/wasmtime-jit-debug-10.0.0/Cargo.toml +55 -0
  541. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-10.0.0/.cargo-checksum.json +1 -0
  542. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-10.0.0/Cargo.toml +37 -0
  543. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/.cargo-checksum.json +1 -0
  544. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/Cargo.toml +110 -0
  545. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/component.rs +701 -0
  546. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/cow.rs +1060 -0
  547. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/debug_builtins.rs +58 -0
  548. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/externref.rs +1073 -0
  549. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/instance/allocator/pooling.rs +1368 -0
  550. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/instance/allocator.rs +531 -0
  551. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/instance.rs +1345 -0
  552. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/lib.rs +285 -0
  553. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/libcalls.rs +578 -0
  554. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/memory.rs +958 -0
  555. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/mmap/miri.rs +94 -0
  556. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/mmap/unix.rs +148 -0
  557. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/mmap/windows.rs +208 -0
  558. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/send_sync_ptr.rs +69 -0
  559. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/table.rs +595 -0
  560. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/traphandlers/unix.rs +387 -0
  561. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/traphandlers.rs +749 -0
  562. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/vmcontext/vm_host_func_context.rs +137 -0
  563. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/vmcontext.rs +1221 -0
  564. data/ext/cargo-vendor/wasmtime-types-10.0.1/.cargo-checksum.json +1 -0
  565. data/ext/cargo-vendor/wasmtime-types-10.0.1/Cargo.toml +34 -0
  566. data/ext/cargo-vendor/wasmtime-types-10.0.1/src/lib.rs +462 -0
  567. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/.cargo-checksum.json +1 -0
  568. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/Cargo.toml +153 -0
  569. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/lib.rs +130 -0
  570. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/clocks/host.rs +73 -0
  571. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/clocks.rs +17 -0
  572. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/ctx.rs +206 -0
  573. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/error.rs +16 -0
  574. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/filesystem.rs +269 -0
  575. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/mod.rs +44 -0
  576. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/pipe.rs +233 -0
  577. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/preview1/mod.rs +1860 -0
  578. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/preview2/clocks.rs +80 -0
  579. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/preview2/env.rs +48 -0
  580. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/preview2/exit.rs +12 -0
  581. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/preview2/filesystem.rs +1020 -0
  582. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/preview2/io.rs +215 -0
  583. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/preview2/mod.rs +7 -0
  584. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/preview2/poll.rs +84 -0
  585. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/preview2/random.rs +41 -0
  586. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/random.rs +58 -0
  587. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/sched/subscription.rs +104 -0
  588. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/sched/sync.rs +156 -0
  589. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/sched.rs +105 -0
  590. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/stdio.rs +176 -0
  591. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/stream.rs +210 -0
  592. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/table.rs +107 -0
  593. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/wasi/command.rs +43 -0
  594. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/wasi/mod.rs +30 -0
  595. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/clocks/monotonic-clock.wit +34 -0
  596. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/clocks/timezone.wit +63 -0
  597. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/clocks/wall-clock.wit +43 -0
  598. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/filesystem/filesystem.wit +782 -0
  599. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/http/incoming-handler.wit +24 -0
  600. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/http/outgoing-handler.wit +18 -0
  601. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/http/types.wit +159 -0
  602. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/io/streams.wit +215 -0
  603. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/logging/handler.wit +34 -0
  604. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/poll/poll.wit +41 -0
  605. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/preview/command-extended.wit +36 -0
  606. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/preview/command.wit +26 -0
  607. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/preview/proxy.wit +9 -0
  608. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/preview/reactor.wit +24 -0
  609. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/random/insecure-seed.wit +24 -0
  610. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/random/insecure.wit +21 -0
  611. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/random/random.wit +25 -0
  612. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/sockets/instance-network.wit +9 -0
  613. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/sockets/ip-name-lookup.wit +69 -0
  614. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/sockets/network.wit +187 -0
  615. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/sockets/tcp-create-socket.wit +27 -0
  616. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/sockets/tcp.wit +255 -0
  617. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/sockets/udp-create-socket.wit +27 -0
  618. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/sockets/udp.wit +211 -0
  619. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/wasi-cli-base/environment.wit +16 -0
  620. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/wasi-cli-base/exit.wit +4 -0
  621. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/wasi-cli-base/preopens.wit +7 -0
  622. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/wasi-cli-base/stdio.wit +17 -0
  623. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/main.wit +1 -0
  624. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/test.wit +19 -0
  625. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/witx/typenames.witx +750 -0
  626. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/witx/wasi_snapshot_preview1.witx +521 -0
  627. data/ext/cargo-vendor/wasmtime-winch-10.0.0/.cargo-checksum.json +1 -0
  628. data/ext/cargo-vendor/wasmtime-winch-10.0.0/Cargo.toml +63 -0
  629. data/ext/cargo-vendor/wasmtime-winch-10.0.0/src/compiler.rs +220 -0
  630. data/ext/cargo-vendor/wasmtime-wit-bindgen-10.0.0/.cargo-checksum.json +1 -0
  631. data/ext/cargo-vendor/wasmtime-wit-bindgen-10.0.0/Cargo.toml +29 -0
  632. data/ext/cargo-vendor/wasmtime-wit-bindgen-10.0.0/src/lib.rs +1631 -0
  633. data/ext/cargo-vendor/wasmtime-wit-bindgen-10.0.0/src/types.rs +179 -0
  634. data/ext/cargo-vendor/wiggle-10.0.0/.cargo-checksum.json +1 -0
  635. data/ext/cargo-vendor/wiggle-10.0.0/Cargo.toml +106 -0
  636. data/ext/cargo-vendor/wiggle-10.0.0/LICENSE +220 -0
  637. data/ext/cargo-vendor/wiggle-10.0.0/README.md +18 -0
  638. data/ext/cargo-vendor/wiggle-generate-10.0.0/.cargo-checksum.json +1 -0
  639. data/ext/cargo-vendor/wiggle-generate-10.0.0/Cargo.toml +58 -0
  640. data/ext/cargo-vendor/wiggle-generate-10.0.0/LICENSE +220 -0
  641. data/ext/cargo-vendor/wiggle-macro-10.0.0/.cargo-checksum.json +1 -0
  642. data/ext/cargo-vendor/wiggle-macro-10.0.0/Cargo.toml +55 -0
  643. data/ext/cargo-vendor/wiggle-macro-10.0.0/LICENSE +220 -0
  644. data/ext/cargo-vendor/wiggle-macro-10.0.0/src/lib.rs +210 -0
  645. data/ext/cargo-vendor/winch-codegen-0.8.0/.cargo-checksum.json +1 -0
  646. data/ext/cargo-vendor/winch-codegen-0.8.0/Cargo.toml +62 -0
  647. data/ext/cargo-vendor/winch-codegen-0.8.0/src/abi/local.rs +70 -0
  648. data/ext/cargo-vendor/winch-codegen-0.8.0/src/abi/mod.rs +237 -0
  649. data/ext/cargo-vendor/winch-codegen-0.8.0/src/codegen/call.rs +225 -0
  650. data/ext/cargo-vendor/winch-codegen-0.8.0/src/codegen/context.rs +270 -0
  651. data/ext/cargo-vendor/winch-codegen-0.8.0/src/codegen/env.rs +52 -0
  652. data/ext/cargo-vendor/winch-codegen-0.8.0/src/codegen/mod.rs +214 -0
  653. data/ext/cargo-vendor/winch-codegen-0.8.0/src/frame/mod.rs +172 -0
  654. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/aarch64/abi.rs +243 -0
  655. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/aarch64/asm.rs +300 -0
  656. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/aarch64/masm.rs +230 -0
  657. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/aarch64/mod.rs +127 -0
  658. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/aarch64/regs.rs +166 -0
  659. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/mod.rs +215 -0
  660. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/x64/abi.rs +369 -0
  661. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/x64/address.rs +17 -0
  662. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/x64/asm.rs +576 -0
  663. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/x64/masm.rs +288 -0
  664. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/x64/mod.rs +149 -0
  665. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/x64/regs.rs +192 -0
  666. data/ext/cargo-vendor/winch-codegen-0.8.0/src/lib.rs +21 -0
  667. data/ext/cargo-vendor/winch-codegen-0.8.0/src/masm.rs +255 -0
  668. data/ext/cargo-vendor/winch-codegen-0.8.0/src/regalloc.rs +70 -0
  669. data/ext/cargo-vendor/winch-codegen-0.8.0/src/stack.rs +235 -0
  670. data/ext/cargo-vendor/winch-codegen-0.8.0/src/trampoline.rs +494 -0
  671. data/ext/cargo-vendor/winch-codegen-0.8.0/src/visitor.rs +353 -0
  672. data/ext/cargo-vendor/wit-parser-0.8.0/.cargo-checksum.json +1 -0
  673. data/ext/cargo-vendor/wit-parser-0.8.0/Cargo.toml +62 -0
  674. data/ext/cargo-vendor/wit-parser-0.8.0/src/ast/lex.rs +679 -0
  675. data/ext/cargo-vendor/wit-parser-0.8.0/src/ast/resolve.rs +1122 -0
  676. data/ext/cargo-vendor/wit-parser-0.8.0/src/ast.rs +1207 -0
  677. data/ext/cargo-vendor/wit-parser-0.8.0/src/lib.rs +622 -0
  678. data/ext/cargo-vendor/wit-parser-0.8.0/src/live.rs +111 -0
  679. data/ext/cargo-vendor/wit-parser-0.8.0/src/resolve.rs +1307 -0
  680. data/ext/cargo-vendor/wit-parser-0.8.0/tests/all.rs +168 -0
  681. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/comments.wit +25 -0
  682. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/diamond1/deps/dep1/types.wit +2 -0
  683. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/diamond1/deps/dep2/types.wit +2 -0
  684. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/diamond1/join.wit +6 -0
  685. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/disambiguate-diamond/shared1.wit +3 -0
  686. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/disambiguate-diamond/shared2.wit +3 -0
  687. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/disambiguate-diamond/world.wit +13 -0
  688. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/embedded.wit.md +34 -0
  689. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/empty.wit +1 -0
  690. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/foreign-deps/deps/another-pkg/other-doc.wit +3 -0
  691. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/foreign-deps/deps/corp/saas.wit +4 -0
  692. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/foreign-deps/deps/different-pkg/the-doc.wit +2 -0
  693. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/foreign-deps/deps/foreign-pkg/the-doc.wit +5 -0
  694. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/foreign-deps/deps/some-pkg/some-doc.wit +13 -0
  695. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/foreign-deps/deps/wasi/clocks.wit +5 -0
  696. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/foreign-deps/deps/wasi/filesystem.wit +7 -0
  697. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/foreign-deps/root.wit +44 -0
  698. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/functions.wit +14 -0
  699. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/many-names/a.wit +2 -0
  700. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/many-names/b.wit +5 -0
  701. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/multi-file/bar.wit +21 -0
  702. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/multi-file/cycle-a.wit +7 -0
  703. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/multi-file/cycle-b.wit +3 -0
  704. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/multi-file/foo.wit +31 -0
  705. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/package-syntax1.wit +1 -0
  706. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/package-syntax3.wit +1 -0
  707. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/package-syntax4.wit +1 -0
  708. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/alias-no-type.wit.result +1 -0
  709. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-function.wit +7 -0
  710. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-function.wit.result +5 -0
  711. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-function2.wit +7 -0
  712. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-function2.wit.result +5 -0
  713. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg1/root.wit +5 -0
  714. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg1.wit.result +8 -0
  715. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg2/deps/bar/empty.wit +1 -0
  716. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg2/root.wit +5 -0
  717. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg2.wit.result +5 -0
  718. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg3/deps/bar/baz.wit +2 -0
  719. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg3/root.wit +5 -0
  720. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg3.wit.result +5 -0
  721. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg4/deps/bar/baz.wit +4 -0
  722. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg4/root.wit +4 -0
  723. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg4.wit.result +5 -0
  724. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg5/deps/bar/baz.wit +3 -0
  725. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg5/root.wit +4 -0
  726. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg5.wit.result +5 -0
  727. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg6/deps/bar/baz.wit +4 -0
  728. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg6/root.wit +4 -0
  729. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg6.wit.result +5 -0
  730. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-world-type1.wit +5 -0
  731. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-world-type1.wit.result +5 -0
  732. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/conflicting-package/a.wit +1 -0
  733. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/conflicting-package/b.wit +1 -0
  734. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/conflicting-package.wit.result +8 -0
  735. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle.wit +6 -0
  736. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle.wit.result +5 -0
  737. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle2.wit +7 -0
  738. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle2.wit.result +5 -0
  739. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle3.wit +7 -0
  740. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle3.wit.result +5 -0
  741. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle4.wit +7 -0
  742. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle4.wit.result +5 -0
  743. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle5.wit +7 -0
  744. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle5.wit.result +5 -0
  745. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/duplicate-functions.wit +8 -0
  746. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/duplicate-functions.wit.result +5 -0
  747. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/duplicate-interface.wit +6 -0
  748. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/duplicate-interface.wit.result +5 -0
  749. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/duplicate-interface2/foo.wit +3 -0
  750. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/duplicate-interface2/foo2.wit +3 -0
  751. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/duplicate-interface2.wit.result +8 -0
  752. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/duplicate-type.wit +7 -0
  753. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/duplicate-type.wit.result +5 -0
  754. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/empty-enum.wit +6 -0
  755. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/empty-enum.wit.result +5 -0
  756. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/empty-union.wit +6 -0
  757. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/empty-union.wit.result +5 -0
  758. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/empty-variant1.wit +6 -0
  759. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/empty-variant1.wit.result +5 -0
  760. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/export-twice.wit +8 -0
  761. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/export-twice.wit.result +5 -0
  762. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/import-export-overlap1.wit +5 -0
  763. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/import-export-overlap1.wit.result +5 -0
  764. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/import-export-overlap2.wit +5 -0
  765. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/import-export-overlap2.wit.result +5 -0
  766. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/import-twice.wit +8 -0
  767. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/import-twice.wit.result +5 -0
  768. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/invalid-md.wit.result +5 -0
  769. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/invalid-type-reference.wit +10 -0
  770. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/invalid-type-reference.wit.result +5 -0
  771. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/invalid-type-reference2.wit +6 -0
  772. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/invalid-type-reference2.wit.result +5 -0
  773. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/missing-package.wit.result +1 -0
  774. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/no-access-to-sibling-use/bar.wit +1 -0
  775. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/no-access-to-sibling-use/foo.wit +5 -0
  776. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/no-access-to-sibling-use.wit.result +8 -0
  777. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/pkg-cycle/deps/a1/root.wit +4 -0
  778. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/pkg-cycle/root.wit +4 -0
  779. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/pkg-cycle.wit.result +5 -0
  780. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/pkg-cycle2/deps/a1/root.wit +4 -0
  781. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/pkg-cycle2/deps/a2/root.wit +4 -0
  782. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/pkg-cycle2/root.wit +4 -0
  783. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/pkg-cycle2.wit.result +5 -0
  784. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/undefined-typed.wit +6 -0
  785. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/undefined-typed.wit.result +5 -0
  786. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unknown-interface.wit +7 -0
  787. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unknown-interface.wit.result +5 -0
  788. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-interface1.wit +7 -0
  789. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-interface1.wit.result +5 -0
  790. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-interface2.wit +8 -0
  791. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-interface2.wit.result +5 -0
  792. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-interface3.wit +5 -0
  793. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-interface3.wit.result +5 -0
  794. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-interface4.wit +7 -0
  795. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-interface4.wit.result +5 -0
  796. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use1.wit +7 -0
  797. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use1.wit.result +5 -0
  798. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use10/bar.wit +5 -0
  799. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use10.wit.result +8 -0
  800. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use2.wit +10 -0
  801. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use2.wit.result +5 -0
  802. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use3.wit +11 -0
  803. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use3.wit.result +5 -0
  804. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use7.wit +10 -0
  805. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use7.wit.result +5 -0
  806. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use8.wit +9 -0
  807. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use8.wit.result +5 -0
  808. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use9.wit +9 -0
  809. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use9.wit.result +5 -0
  810. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-conflict.wit +11 -0
  811. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-conflict.wit.result +5 -0
  812. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-conflict2.wit +13 -0
  813. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-conflict2.wit.result +5 -0
  814. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-conflict3.wit +13 -0
  815. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-conflict3.wit.result +5 -0
  816. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-cycle1.wit +7 -0
  817. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-cycle1.wit.result +5 -0
  818. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-cycle4.wit +14 -0
  819. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-cycle4.wit.result +5 -0
  820. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-shadow1.wit +7 -0
  821. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-shadow1.wit.result +5 -0
  822. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-interface-clash.wit +3 -0
  823. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-interface-clash.wit.result +5 -0
  824. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-same-fields2.wit +8 -0
  825. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-same-fields2.wit.result +5 -0
  826. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-same-fields3.wit +8 -0
  827. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-same-fields3.wit.result +5 -0
  828. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-top-level-func.wit +5 -0
  829. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-top-level-func.wit.result +5 -0
  830. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-top-level-func2.wit +4 -0
  831. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-top-level-func2.wit.result +5 -0
  832. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/shared-types.wit +10 -0
  833. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/type-then-eof.wit +5 -0
  834. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/types.wit +61 -0
  835. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/use-chain.wit +11 -0
  836. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/use.wit +34 -0
  837. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/versions/deps/a1/foo.wit +5 -0
  838. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/versions/deps/a2/foo.wit +5 -0
  839. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/versions/foo.wit +7 -0
  840. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/wasi.wit +178 -0
  841. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/world-diamond.wit +22 -0
  842. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/world-iface-no-collide.wit +11 -0
  843. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/world-implicit-import1.wit +12 -0
  844. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/world-implicit-import2.wit +11 -0
  845. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/world-implicit-import3.wit +11 -0
  846. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/world-same-fields4.wit +13 -0
  847. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/world-top-level-funcs.wit +9 -0
  848. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/worlds-same-fields5.wit +17 -0
  849. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/worlds-with-types.wit +34 -0
  850. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/worlds.wit +37 -0
  851. data/ext/src/ruby_api/global.rs +3 -3
  852. data/ext/src/ruby_api/memory/unsafe_slice.rs +9 -3
  853. data/ext/src/ruby_api/params.rs +14 -12
  854. data/ext/src/ruby_api/table.rs +1 -1
  855. data/lib/wasmtime/version.rb +1 -1
  856. metadata +1418 -1079
  857. data/ext/cargo-vendor/cranelift-bforest-0.96.4/.cargo-checksum.json +0 -1
  858. data/ext/cargo-vendor/cranelift-bforest-0.96.4/Cargo.toml +0 -31
  859. data/ext/cargo-vendor/cranelift-codegen-0.96.4/.cargo-checksum.json +0 -1
  860. data/ext/cargo-vendor/cranelift-codegen-0.96.4/Cargo.toml +0 -159
  861. data/ext/cargo-vendor/cranelift-codegen-0.96.4/benches/x64-evex-encoding.rs +0 -53
  862. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/ir/trapcode.rs +0 -138
  863. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/aarch64/abi.rs +0 -1281
  864. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/aarch64/inst/emit.rs +0 -3658
  865. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/aarch64/inst/emit_tests.rs +0 -7868
  866. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/aarch64/inst/imms.rs +0 -1215
  867. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/aarch64/inst/mod.rs +0 -2945
  868. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/aarch64/inst.isle +0 -4035
  869. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/aarch64/lower/isle.rs +0 -813
  870. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/aarch64/lower.isle +0 -2906
  871. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/aarch64/mod.rs +0 -240
  872. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/mod.rs +0 -420
  873. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/abi.rs +0 -726
  874. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst/args.rs +0 -1822
  875. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst/emit.rs +0 -2914
  876. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst/emit_tests.rs +0 -2317
  877. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst/encode.rs +0 -188
  878. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst/imms.rs +0 -244
  879. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst/mod.rs +0 -1823
  880. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst/regs.rs +0 -231
  881. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst/unwind/systemv.rs +0 -177
  882. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst/vector.rs +0 -354
  883. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst.isle +0 -2746
  884. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst_vector.isle +0 -224
  885. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/lower/isle.rs +0 -544
  886. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/lower.isle +0 -1012
  887. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/mod.rs +0 -219
  888. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/s390x/abi.rs +0 -947
  889. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/s390x/inst/emit.rs +0 -3697
  890. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/s390x/inst/emit_tests.rs +0 -13397
  891. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/s390x/inst/mod.rs +0 -3409
  892. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/s390x/inst.isle +0 -5045
  893. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/s390x/lower.isle +0 -3991
  894. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/s390x/mod.rs +0 -215
  895. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/abi.rs +0 -978
  896. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/encoding/evex.rs +0 -403
  897. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/encoding/rex.rs +0 -565
  898. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/encoding/vex.rs +0 -498
  899. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/inst/args.rs +0 -2168
  900. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/inst/emit.rs +0 -3938
  901. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/inst/emit_tests.rs +0 -5669
  902. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/inst/mod.rs +0 -2763
  903. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/inst.isle +0 -5186
  904. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/lower/isle.rs +0 -1158
  905. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/lower.isle +0 -4262
  906. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/lower.rs +0 -328
  907. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/mod.rs +0 -250
  908. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isle_prelude.rs +0 -818
  909. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/machinst/abi.rs +0 -2410
  910. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/machinst/buffer.rs +0 -2219
  911. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/machinst/compile.rs +0 -92
  912. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/machinst/isle.rs +0 -827
  913. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/machinst/lower.rs +0 -1366
  914. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/machinst/mod.rs +0 -538
  915. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/machinst/reg.rs +0 -532
  916. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/machinst/vcode.rs +0 -1571
  917. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/prelude.isle +0 -552
  918. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/prelude_lower.isle +0 -1012
  919. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/settings.rs +0 -599
  920. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/verifier/mod.rs +0 -1881
  921. data/ext/cargo-vendor/cranelift-codegen-meta-0.96.4/.cargo-checksum.json +0 -1
  922. data/ext/cargo-vendor/cranelift-codegen-meta-0.96.4/Cargo.toml +0 -23
  923. data/ext/cargo-vendor/cranelift-codegen-meta-0.96.4/src/isa/x86.rs +0 -445
  924. data/ext/cargo-vendor/cranelift-codegen-meta-0.96.4/src/shared/settings.rs +0 -331
  925. data/ext/cargo-vendor/cranelift-codegen-shared-0.96.4/.cargo-checksum.json +0 -1
  926. data/ext/cargo-vendor/cranelift-codegen-shared-0.96.4/Cargo.toml +0 -22
  927. data/ext/cargo-vendor/cranelift-control-0.96.4/.cargo-checksum.json +0 -1
  928. data/ext/cargo-vendor/cranelift-control-0.96.4/Cargo.toml +0 -30
  929. data/ext/cargo-vendor/cranelift-control-0.96.4/src/chaos.rs +0 -78
  930. data/ext/cargo-vendor/cranelift-control-0.96.4/src/lib.rs +0 -30
  931. data/ext/cargo-vendor/cranelift-control-0.96.4/src/zero_sized.rs +0 -42
  932. data/ext/cargo-vendor/cranelift-entity-0.96.4/.cargo-checksum.json +0 -1
  933. data/ext/cargo-vendor/cranelift-entity-0.96.4/Cargo.toml +0 -35
  934. data/ext/cargo-vendor/cranelift-entity-0.96.4/src/list.rs +0 -868
  935. data/ext/cargo-vendor/cranelift-frontend-0.96.4/.cargo-checksum.json +0 -1
  936. data/ext/cargo-vendor/cranelift-frontend-0.96.4/Cargo.toml +0 -53
  937. data/ext/cargo-vendor/cranelift-isle-0.96.4/.cargo-checksum.json +0 -1
  938. data/ext/cargo-vendor/cranelift-isle-0.96.4/Cargo.toml +0 -37
  939. data/ext/cargo-vendor/cranelift-native-0.96.4/.cargo-checksum.json +0 -1
  940. data/ext/cargo-vendor/cranelift-native-0.96.4/Cargo.toml +0 -38
  941. data/ext/cargo-vendor/cranelift-native-0.96.4/src/lib.rs +0 -216
  942. data/ext/cargo-vendor/cranelift-wasm-0.96.4/.cargo-checksum.json +0 -1
  943. data/ext/cargo-vendor/cranelift-wasm-0.96.4/Cargo.toml +0 -85
  944. data/ext/cargo-vendor/cranelift-wasm-0.96.4/src/code_translator.rs +0 -3479
  945. data/ext/cargo-vendor/cranelift-wasm-0.96.4/src/environ/dummy.rs +0 -901
  946. data/ext/cargo-vendor/cranelift-wasm-0.96.4/src/environ/spec.rs +0 -807
  947. data/ext/cargo-vendor/cranelift-wasm-0.96.4/src/func_translator.rs +0 -419
  948. data/ext/cargo-vendor/cranelift-wasm-0.96.4/src/sections_translator.rs +0 -429
  949. data/ext/cargo-vendor/cranelift-wasm-0.96.4/src/translation_utils.rs +0 -108
  950. data/ext/cargo-vendor/file-per-thread-logger-0.1.6/.cargo-checksum.json +0 -1
  951. data/ext/cargo-vendor/file-per-thread-logger-0.1.6/Cargo.toml +0 -36
  952. data/ext/cargo-vendor/file-per-thread-logger-0.1.6/run-tests.sh +0 -11
  953. data/ext/cargo-vendor/file-per-thread-logger-0.1.6/src/lib.rs +0 -162
  954. data/ext/cargo-vendor/file-per-thread-logger-0.1.6/tests/test.rs +0 -267
  955. data/ext/cargo-vendor/regalloc2-0.8.1/.cargo-checksum.json +0 -1
  956. data/ext/cargo-vendor/regalloc2-0.8.1/Cargo.toml +0 -72
  957. data/ext/cargo-vendor/regalloc2-0.8.1/deny.toml +0 -28
  958. data/ext/cargo-vendor/regalloc2-0.8.1/src/checker.rs +0 -1089
  959. data/ext/cargo-vendor/regalloc2-0.8.1/src/fuzzing/func.rs +0 -673
  960. data/ext/cargo-vendor/regalloc2-0.8.1/src/index.rs +0 -188
  961. data/ext/cargo-vendor/regalloc2-0.8.1/src/ion/data_structures.rs +0 -688
  962. data/ext/cargo-vendor/regalloc2-0.8.1/src/ion/liveranges.rs +0 -1012
  963. data/ext/cargo-vendor/regalloc2-0.8.1/src/ion/merge.rs +0 -394
  964. data/ext/cargo-vendor/regalloc2-0.8.1/src/ion/mod.rs +0 -152
  965. data/ext/cargo-vendor/regalloc2-0.8.1/src/ion/moves.rs +0 -985
  966. data/ext/cargo-vendor/regalloc2-0.8.1/src/ion/process.rs +0 -1322
  967. data/ext/cargo-vendor/regalloc2-0.8.1/src/ion/requirement.rs +0 -174
  968. data/ext/cargo-vendor/regalloc2-0.8.1/src/ion/spill.rs +0 -198
  969. data/ext/cargo-vendor/regalloc2-0.8.1/src/ion/stackmap.rs +0 -74
  970. data/ext/cargo-vendor/regalloc2-0.8.1/src/lib.rs +0 -1523
  971. data/ext/cargo-vendor/regalloc2-0.8.1/src/moves.rs +0 -438
  972. data/ext/cargo-vendor/wasi-cap-std-sync-9.0.4/.cargo-checksum.json +0 -1
  973. data/ext/cargo-vendor/wasi-cap-std-sync-9.0.4/Cargo.toml +0 -89
  974. data/ext/cargo-vendor/wasi-cap-std-sync-9.0.4/src/dir.rs +0 -465
  975. data/ext/cargo-vendor/wasi-cap-std-sync-9.0.4/src/lib.rs +0 -140
  976. data/ext/cargo-vendor/wasi-common-9.0.4/.cargo-checksum.json +0 -1
  977. data/ext/cargo-vendor/wasi-common-9.0.4/Cargo.toml +0 -86
  978. data/ext/cargo-vendor/wasi-common-9.0.4/src/ctx.rs +0 -127
  979. data/ext/cargo-vendor/wasi-common-9.0.4/src/file.rs +0 -260
  980. data/ext/cargo-vendor/wasi-common-9.0.4/src/snapshots/preview_1.rs +0 -1490
  981. data/ext/cargo-vendor/wasmparser-0.103.0/.cargo-checksum.json +0 -1
  982. data/ext/cargo-vendor/wasmparser-0.103.0/Cargo.lock +0 -692
  983. data/ext/cargo-vendor/wasmparser-0.103.0/Cargo.toml +0 -54
  984. data/ext/cargo-vendor/wasmparser-0.103.0/benches/benchmark.rs +0 -350
  985. data/ext/cargo-vendor/wasmparser-0.103.0/src/binary_reader.rs +0 -1682
  986. data/ext/cargo-vendor/wasmparser-0.103.0/src/lib.rs +0 -712
  987. data/ext/cargo-vendor/wasmparser-0.103.0/src/parser.rs +0 -1496
  988. data/ext/cargo-vendor/wasmparser-0.103.0/src/readers/component/canonicals.rs +0 -95
  989. data/ext/cargo-vendor/wasmparser-0.103.0/src/readers/component/exports.rs +0 -105
  990. data/ext/cargo-vendor/wasmparser-0.103.0/src/readers/component/imports.rs +0 -109
  991. data/ext/cargo-vendor/wasmparser-0.103.0/src/readers/component/instances.rs +0 -164
  992. data/ext/cargo-vendor/wasmparser-0.103.0/src/readers/component/types.rs +0 -508
  993. data/ext/cargo-vendor/wasmparser-0.103.0/src/readers/core/producers.rs +0 -78
  994. data/ext/cargo-vendor/wasmparser-0.103.0/src/readers/core/types.rs +0 -511
  995. data/ext/cargo-vendor/wasmparser-0.103.0/src/readers/core.rs +0 -33
  996. data/ext/cargo-vendor/wasmparser-0.103.0/src/validator/component.rs +0 -2097
  997. data/ext/cargo-vendor/wasmparser-0.103.0/src/validator/core.rs +0 -1278
  998. data/ext/cargo-vendor/wasmparser-0.103.0/src/validator/operators.rs +0 -3456
  999. data/ext/cargo-vendor/wasmparser-0.103.0/src/validator/types.rs +0 -2159
  1000. data/ext/cargo-vendor/wasmparser-0.103.0/src/validator.rs +0 -1514
  1001. data/ext/cargo-vendor/wasmtime-9.0.4/.cargo-checksum.json +0 -1
  1002. data/ext/cargo-vendor/wasmtime-9.0.4/Cargo.toml +0 -183
  1003. data/ext/cargo-vendor/wasmtime-9.0.4/build.rs +0 -20
  1004. data/ext/cargo-vendor/wasmtime-9.0.4/src/component/component.rs +0 -519
  1005. data/ext/cargo-vendor/wasmtime-9.0.4/src/component/instance.rs +0 -728
  1006. data/ext/cargo-vendor/wasmtime-9.0.4/src/component/matching.rs +0 -112
  1007. data/ext/cargo-vendor/wasmtime-9.0.4/src/component/mod.rs +0 -313
  1008. data/ext/cargo-vendor/wasmtime-9.0.4/src/config.rs +0 -2036
  1009. data/ext/cargo-vendor/wasmtime-9.0.4/src/engine/serialization.rs +0 -613
  1010. data/ext/cargo-vendor/wasmtime-9.0.4/src/engine.rs +0 -729
  1011. data/ext/cargo-vendor/wasmtime-9.0.4/src/externals.rs +0 -762
  1012. data/ext/cargo-vendor/wasmtime-9.0.4/src/func/typed.rs +0 -638
  1013. data/ext/cargo-vendor/wasmtime-9.0.4/src/func.rs +0 -2385
  1014. data/ext/cargo-vendor/wasmtime-9.0.4/src/instance.rs +0 -905
  1015. data/ext/cargo-vendor/wasmtime-9.0.4/src/lib.rs +0 -481
  1016. data/ext/cargo-vendor/wasmtime-9.0.4/src/linker.rs +0 -1479
  1017. data/ext/cargo-vendor/wasmtime-9.0.4/src/memory.rs +0 -948
  1018. data/ext/cargo-vendor/wasmtime-9.0.4/src/module.rs +0 -1542
  1019. data/ext/cargo-vendor/wasmtime-9.0.4/src/ref.rs +0 -108
  1020. data/ext/cargo-vendor/wasmtime-9.0.4/src/store/context.rs +0 -243
  1021. data/ext/cargo-vendor/wasmtime-9.0.4/src/store/func_refs.rs +0 -110
  1022. data/ext/cargo-vendor/wasmtime-9.0.4/src/store.rs +0 -2059
  1023. data/ext/cargo-vendor/wasmtime-9.0.4/src/trampoline/func.rs +0 -171
  1024. data/ext/cargo-vendor/wasmtime-9.0.4/src/trampoline/global.rs +0 -71
  1025. data/ext/cargo-vendor/wasmtime-9.0.4/src/types/matching.rs +0 -254
  1026. data/ext/cargo-vendor/wasmtime-9.0.4/src/types.rs +0 -551
  1027. data/ext/cargo-vendor/wasmtime-9.0.4/src/values.rs +0 -290
  1028. data/ext/cargo-vendor/wasmtime-asm-macros-9.0.4/.cargo-checksum.json +0 -1
  1029. data/ext/cargo-vendor/wasmtime-asm-macros-9.0.4/Cargo.toml +0 -22
  1030. data/ext/cargo-vendor/wasmtime-cache-9.0.4/.cargo-checksum.json +0 -1
  1031. data/ext/cargo-vendor/wasmtime-cache-9.0.4/Cargo.toml +0 -73
  1032. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/.cargo-checksum.json +0 -1
  1033. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/Cargo.toml +0 -58
  1034. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/src/bindgen.rs +0 -316
  1035. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/char.wit +0 -11
  1036. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/conventions.wit +0 -38
  1037. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/direct-import.wit +0 -3
  1038. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/empty.wit +0 -1
  1039. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/flags.wit +0 -53
  1040. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/floats.wit +0 -11
  1041. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/function-new.wit +0 -3
  1042. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/integers.wit +0 -38
  1043. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/lists.wit +0 -83
  1044. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/many-arguments.wit +0 -50
  1045. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/multi-return.wit +0 -12
  1046. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/records.wit +0 -59
  1047. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/rename.wit +0 -14
  1048. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/share-types.wit +0 -19
  1049. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/simple-functions.wit +0 -15
  1050. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/simple-lists.wit +0 -11
  1051. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/simple-wasi.wit +0 -21
  1052. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/small-anonymous.wit +0 -13
  1053. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/smoke-default.wit +0 -3
  1054. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/smoke-export.wit +0 -5
  1055. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/smoke.wit +0 -5
  1056. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/strings.wit +0 -10
  1057. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/unions.wit +0 -64
  1058. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/use-paths.wit +0 -27
  1059. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/variants.wit +0 -145
  1060. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/worlds-with-types.wit +0 -14
  1061. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen.rs +0 -30
  1062. data/ext/cargo-vendor/wasmtime-component-util-9.0.4/.cargo-checksum.json +0 -1
  1063. data/ext/cargo-vendor/wasmtime-component-util-9.0.4/Cargo.toml +0 -25
  1064. data/ext/cargo-vendor/wasmtime-cranelift-9.0.4/.cargo-checksum.json +0 -1
  1065. data/ext/cargo-vendor/wasmtime-cranelift-9.0.4/Cargo.toml +0 -90
  1066. data/ext/cargo-vendor/wasmtime-cranelift-9.0.4/src/compiler.rs +0 -1200
  1067. data/ext/cargo-vendor/wasmtime-cranelift-9.0.4/src/debug/transform/simulate.rs +0 -411
  1068. data/ext/cargo-vendor/wasmtime-cranelift-9.0.4/src/func_environ.rs +0 -2162
  1069. data/ext/cargo-vendor/wasmtime-cranelift-9.0.4/src/lib.rs +0 -177
  1070. data/ext/cargo-vendor/wasmtime-cranelift-shared-9.0.4/.cargo-checksum.json +0 -1
  1071. data/ext/cargo-vendor/wasmtime-cranelift-shared-9.0.4/Cargo.toml +0 -57
  1072. data/ext/cargo-vendor/wasmtime-cranelift-shared-9.0.4/src/lib.rs +0 -119
  1073. data/ext/cargo-vendor/wasmtime-environ-9.0.4/.cargo-checksum.json +0 -1
  1074. data/ext/cargo-vendor/wasmtime-environ-9.0.4/Cargo.lock +0 -735
  1075. data/ext/cargo-vendor/wasmtime-environ-9.0.4/Cargo.toml +0 -116
  1076. data/ext/cargo-vendor/wasmtime-environ-9.0.4/src/component/compiler.rs +0 -84
  1077. data/ext/cargo-vendor/wasmtime-environ-9.0.4/src/component/translate/inline.rs +0 -1064
  1078. data/ext/cargo-vendor/wasmtime-environ-9.0.4/src/component/translate.rs +0 -1066
  1079. data/ext/cargo-vendor/wasmtime-environ-9.0.4/src/component/types.rs +0 -1903
  1080. data/ext/cargo-vendor/wasmtime-environ-9.0.4/src/fact.rs +0 -622
  1081. data/ext/cargo-vendor/wasmtime-environ-9.0.4/src/module.rs +0 -1043
  1082. data/ext/cargo-vendor/wasmtime-environ-9.0.4/src/module_environ.rs +0 -841
  1083. data/ext/cargo-vendor/wasmtime-environ-9.0.4/src/trap_encoding.rs +0 -234
  1084. data/ext/cargo-vendor/wasmtime-fiber-9.0.4/.cargo-checksum.json +0 -1
  1085. data/ext/cargo-vendor/wasmtime-fiber-9.0.4/Cargo.toml +0 -46
  1086. data/ext/cargo-vendor/wasmtime-fiber-9.0.4/src/lib.rs +0 -293
  1087. data/ext/cargo-vendor/wasmtime-fiber-9.0.4/src/unix.rs +0 -199
  1088. data/ext/cargo-vendor/wasmtime-fiber-9.0.4/src/windows.rs +0 -156
  1089. data/ext/cargo-vendor/wasmtime-jit-9.0.4/.cargo-checksum.json +0 -1
  1090. data/ext/cargo-vendor/wasmtime-jit-9.0.4/Cargo.toml +0 -100
  1091. data/ext/cargo-vendor/wasmtime-jit-9.0.4/src/instantiate.rs +0 -786
  1092. data/ext/cargo-vendor/wasmtime-jit-9.0.4/src/lib.rs +0 -39
  1093. data/ext/cargo-vendor/wasmtime-jit-9.0.4/src/profiling/jitdump_disabled.rs +0 -32
  1094. data/ext/cargo-vendor/wasmtime-jit-9.0.4/src/profiling/jitdump_linux.rs +0 -444
  1095. data/ext/cargo-vendor/wasmtime-jit-9.0.4/src/profiling/perfmap_disabled.rs +0 -28
  1096. data/ext/cargo-vendor/wasmtime-jit-9.0.4/src/profiling/perfmap_linux.rs +0 -104
  1097. data/ext/cargo-vendor/wasmtime-jit-9.0.4/src/profiling/vtune.rs +0 -147
  1098. data/ext/cargo-vendor/wasmtime-jit-9.0.4/src/profiling/vtune_disabled.rs +0 -32
  1099. data/ext/cargo-vendor/wasmtime-jit-9.0.4/src/profiling.rs +0 -74
  1100. data/ext/cargo-vendor/wasmtime-jit-debug-9.0.4/.cargo-checksum.json +0 -1
  1101. data/ext/cargo-vendor/wasmtime-jit-debug-9.0.4/Cargo.toml +0 -55
  1102. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-9.0.4/.cargo-checksum.json +0 -1
  1103. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-9.0.4/Cargo.toml +0 -37
  1104. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/.cargo-checksum.json +0 -1
  1105. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/Cargo.toml +0 -107
  1106. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/component.rs +0 -724
  1107. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/cow.rs +0 -1063
  1108. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/debug_builtins.rs +0 -56
  1109. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/externref.rs +0 -1078
  1110. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/instance/allocator/pooling.rs +0 -1371
  1111. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/instance/allocator.rs +0 -528
  1112. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/instance.rs +0 -1267
  1113. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/lib.rs +0 -286
  1114. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/libcalls.rs +0 -597
  1115. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/memory.rs +0 -945
  1116. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/mmap/miri.rs +0 -93
  1117. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/mmap/unix.rs +0 -147
  1118. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/mmap/windows.rs +0 -207
  1119. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/table.rs +0 -573
  1120. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/traphandlers/unix.rs +0 -387
  1121. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/traphandlers.rs +0 -664
  1122. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/vmcontext/vm_host_func_context.rs +0 -147
  1123. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/vmcontext.rs +0 -1244
  1124. data/ext/cargo-vendor/wasmtime-types-9.0.4/.cargo-checksum.json +0 -1
  1125. data/ext/cargo-vendor/wasmtime-types-9.0.4/Cargo.toml +0 -34
  1126. data/ext/cargo-vendor/wasmtime-types-9.0.4/src/lib.rs +0 -413
  1127. data/ext/cargo-vendor/wasmtime-wasi-9.0.4/.cargo-checksum.json +0 -1
  1128. data/ext/cargo-vendor/wasmtime-wasi-9.0.4/Cargo.toml +0 -67
  1129. data/ext/cargo-vendor/wasmtime-wasi-9.0.4/src/lib.rs +0 -128
  1130. data/ext/cargo-vendor/wasmtime-winch-9.0.4/.cargo-checksum.json +0 -1
  1131. data/ext/cargo-vendor/wasmtime-winch-9.0.4/Cargo.toml +0 -66
  1132. data/ext/cargo-vendor/wasmtime-winch-9.0.4/src/compiler.rs +0 -191
  1133. data/ext/cargo-vendor/wasmtime-wit-bindgen-9.0.4/.cargo-checksum.json +0 -1
  1134. data/ext/cargo-vendor/wasmtime-wit-bindgen-9.0.4/Cargo.toml +0 -29
  1135. data/ext/cargo-vendor/wasmtime-wit-bindgen-9.0.4/src/lib.rs +0 -1488
  1136. data/ext/cargo-vendor/wasmtime-wit-bindgen-9.0.4/src/types.rs +0 -178
  1137. data/ext/cargo-vendor/wiggle-9.0.4/.cargo-checksum.json +0 -1
  1138. data/ext/cargo-vendor/wiggle-9.0.4/Cargo.toml +0 -106
  1139. data/ext/cargo-vendor/wiggle-9.0.4/README.md +0 -18
  1140. data/ext/cargo-vendor/wiggle-generate-9.0.4/.cargo-checksum.json +0 -1
  1141. data/ext/cargo-vendor/wiggle-generate-9.0.4/Cargo.toml +0 -58
  1142. data/ext/cargo-vendor/wiggle-macro-9.0.4/.cargo-checksum.json +0 -1
  1143. data/ext/cargo-vendor/wiggle-macro-9.0.4/Cargo.toml +0 -55
  1144. data/ext/cargo-vendor/wiggle-macro-9.0.4/src/lib.rs +0 -210
  1145. data/ext/cargo-vendor/winch-codegen-0.7.4/.cargo-checksum.json +0 -1
  1146. data/ext/cargo-vendor/winch-codegen-0.7.4/Cargo.toml +0 -59
  1147. data/ext/cargo-vendor/winch-codegen-0.7.4/src/abi/local.rs +0 -69
  1148. data/ext/cargo-vendor/winch-codegen-0.7.4/src/abi/mod.rs +0 -223
  1149. data/ext/cargo-vendor/winch-codegen-0.7.4/src/codegen/call.rs +0 -215
  1150. data/ext/cargo-vendor/winch-codegen-0.7.4/src/codegen/context.rs +0 -259
  1151. data/ext/cargo-vendor/winch-codegen-0.7.4/src/codegen/env.rs +0 -19
  1152. data/ext/cargo-vendor/winch-codegen-0.7.4/src/codegen/mod.rs +0 -183
  1153. data/ext/cargo-vendor/winch-codegen-0.7.4/src/frame/mod.rs +0 -166
  1154. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/aarch64/abi.rs +0 -221
  1155. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/aarch64/asm.rs +0 -244
  1156. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/aarch64/masm.rs +0 -221
  1157. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/aarch64/mod.rs +0 -122
  1158. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/aarch64/regs.rs +0 -160
  1159. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/mod.rs +0 -202
  1160. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/x64/abi.rs +0 -337
  1161. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/x64/address.rs +0 -17
  1162. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/x64/asm.rs +0 -499
  1163. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/x64/masm.rs +0 -267
  1164. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/x64/mod.rs +0 -135
  1165. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/x64/regs.rs +0 -178
  1166. data/ext/cargo-vendor/winch-codegen-0.7.4/src/lib.rs +0 -20
  1167. data/ext/cargo-vendor/winch-codegen-0.7.4/src/masm.rs +0 -213
  1168. data/ext/cargo-vendor/winch-codegen-0.7.4/src/regalloc.rs +0 -61
  1169. data/ext/cargo-vendor/winch-codegen-0.7.4/src/stack.rs +0 -230
  1170. data/ext/cargo-vendor/winch-codegen-0.7.4/src/trampoline.rs +0 -206
  1171. data/ext/cargo-vendor/winch-codegen-0.7.4/src/visitor.rs +0 -215
  1172. data/ext/cargo-vendor/winch-environ-0.7.4/.cargo-checksum.json +0 -1
  1173. data/ext/cargo-vendor/winch-environ-0.7.4/Cargo.toml +0 -28
  1174. data/ext/cargo-vendor/winch-environ-0.7.4/src/lib.rs +0 -41
  1175. data/ext/cargo-vendor/wit-parser-0.7.1/.cargo-checksum.json +0 -1
  1176. data/ext/cargo-vendor/wit-parser-0.7.1/Cargo.toml +0 -59
  1177. data/ext/cargo-vendor/wit-parser-0.7.1/src/ast/lex.rs +0 -662
  1178. data/ext/cargo-vendor/wit-parser-0.7.1/src/ast/resolve.rs +0 -1072
  1179. data/ext/cargo-vendor/wit-parser-0.7.1/src/ast.rs +0 -1099
  1180. data/ext/cargo-vendor/wit-parser-0.7.1/src/lib.rs +0 -617
  1181. data/ext/cargo-vendor/wit-parser-0.7.1/src/live.rs +0 -123
  1182. data/ext/cargo-vendor/wit-parser-0.7.1/src/resolve.rs +0 -1478
  1183. data/ext/cargo-vendor/wit-parser-0.7.1/tests/all.rs +0 -168
  1184. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/comments.wit +0 -23
  1185. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/disambiguate-diamond/shared1.wit +0 -3
  1186. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/disambiguate-diamond/shared2.wit +0 -3
  1187. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/disambiguate-diamond/world.wit +0 -11
  1188. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/embedded.wit.md +0 -32
  1189. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/foreign-deps/deps/another-pkg/other-doc.wit +0 -1
  1190. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/foreign-deps/deps/corp/saas.wit +0 -2
  1191. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/foreign-deps/deps/different-pkg/the-doc.wit +0 -1
  1192. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/foreign-deps/deps/foreign-pkg/the-doc.wit +0 -3
  1193. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/foreign-deps/deps/some-pkg/some-doc.wit +0 -11
  1194. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/foreign-deps/deps/wasi/clocks.wit +0 -3
  1195. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/foreign-deps/deps/wasi/filesystem.wit +0 -5
  1196. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/foreign-deps/root.wit +0 -31
  1197. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/functions.wit +0 -12
  1198. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/multi-file/bar.wit +0 -19
  1199. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/multi-file/foo.wit +0 -15
  1200. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/alias-no-type.wit.result +0 -5
  1201. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-diamond/a.wit +0 -9
  1202. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-diamond/b.wit +0 -9
  1203. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-diamond/join.wit +0 -4
  1204. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-diamond.wit.result +0 -8
  1205. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-function.wit +0 -5
  1206. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-function.wit.result +0 -5
  1207. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-function2.wit +0 -5
  1208. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-function2.wit.result +0 -5
  1209. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg1/root.wit +0 -3
  1210. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg1.wit.result +0 -5
  1211. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg2/root.wit +0 -3
  1212. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg2.wit.result +0 -5
  1213. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg3/deps/bar/baz.wit +0 -0
  1214. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg3/root.wit +0 -3
  1215. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg3.wit.result +0 -5
  1216. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg4/deps/bar/baz.wit +0 -3
  1217. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg4/root.wit +0 -3
  1218. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg4.wit.result +0 -5
  1219. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg5/deps/bar/baz.wit +0 -2
  1220. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg5/root.wit +0 -3
  1221. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg5.wit.result +0 -5
  1222. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg6/deps/bar/baz.wit +0 -0
  1223. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg6/root.wit +0 -3
  1224. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg6.wit.result +0 -5
  1225. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-world-type1.wit +0 -4
  1226. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-world-type1.wit.result +0 -5
  1227. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-world-type2.wit +0 -9
  1228. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-world-type2.wit.result +0 -5
  1229. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle.wit +0 -5
  1230. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle.wit.result +0 -5
  1231. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle2.wit +0 -6
  1232. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle2.wit.result +0 -5
  1233. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle3.wit +0 -6
  1234. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle3.wit.result +0 -5
  1235. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle4.wit +0 -6
  1236. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle4.wit.result +0 -5
  1237. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle5.wit +0 -6
  1238. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle5.wit.result +0 -5
  1239. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/default-interface1.wit +0 -3
  1240. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/default-interface1.wit.result +0 -5
  1241. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/default-world1.wit +0 -3
  1242. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/default-world1.wit.result +0 -5
  1243. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/duplicate-functions.wit +0 -6
  1244. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/duplicate-functions.wit.result +0 -5
  1245. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/duplicate-interface.wit +0 -4
  1246. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/duplicate-interface.wit.result +0 -5
  1247. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/duplicate-type.wit +0 -6
  1248. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/duplicate-type.wit.result +0 -5
  1249. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/empty-enum.wit +0 -5
  1250. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/empty-enum.wit.result +0 -5
  1251. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/empty-union.wit +0 -5
  1252. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/empty-union.wit.result +0 -5
  1253. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/empty-variant1.wit +0 -5
  1254. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/empty-variant1.wit.result +0 -5
  1255. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/import-export-overlap1.wit +0 -4
  1256. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/import-export-overlap1.wit.result +0 -5
  1257. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/import-export-overlap2.wit +0 -4
  1258. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/import-export-overlap2.wit.result +0 -5
  1259. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/import-export-overlap3.wit +0 -11
  1260. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/import-export-overlap3.wit.result +0 -6
  1261. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/invalid-md.wit.result +0 -5
  1262. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/invalid-type-reference.wit +0 -8
  1263. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/invalid-type-reference.wit.result +0 -5
  1264. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/invalid-type-reference2.wit +0 -4
  1265. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/invalid-type-reference2.wit.result +0 -5
  1266. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/invalid@filename.wit +0 -0
  1267. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/invalid@filename.wit.result +0 -4
  1268. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/pkg-cycle/deps/a1/root.wit +0 -3
  1269. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/pkg-cycle/root.wit +0 -3
  1270. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/pkg-cycle.wit.result +0 -5
  1271. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/pkg-cycle2/deps/a1/root.wit +0 -3
  1272. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/pkg-cycle2/deps/a2/root.wit +0 -3
  1273. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/pkg-cycle2/root.wit +0 -3
  1274. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/pkg-cycle2.wit.result +0 -5
  1275. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/undefined-typed.wit +0 -5
  1276. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/undefined-typed.wit.result +0 -5
  1277. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unknown-interface.wit +0 -5
  1278. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unknown-interface.wit.result +0 -5
  1279. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface1.wit +0 -5
  1280. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface1.wit.result +0 -5
  1281. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface2.wit +0 -6
  1282. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface2.wit.result +0 -5
  1283. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface3.wit +0 -5
  1284. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface3.wit.result +0 -5
  1285. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface4.wit +0 -5
  1286. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface4.wit.result +0 -5
  1287. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface5.wit +0 -5
  1288. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface5.wit.result +0 -5
  1289. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use1.wit +0 -5
  1290. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use1.wit.result +0 -5
  1291. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use10/bar.wit +0 -3
  1292. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use10.wit.result +0 -8
  1293. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use11/bar.wit +0 -3
  1294. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use11/foo.wit +0 -2
  1295. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use11.wit.result +0 -8
  1296. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use2.wit +0 -8
  1297. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use2.wit.result +0 -5
  1298. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use3.wit +0 -9
  1299. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use3.wit.result +0 -5
  1300. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use4.wit +0 -5
  1301. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use4.wit.result +0 -5
  1302. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use5.wit +0 -6
  1303. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use5.wit.result +0 -5
  1304. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use6.wit +0 -5
  1305. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use6.wit.result +0 -5
  1306. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use7.wit +0 -8
  1307. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use7.wit.result +0 -5
  1308. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use8.wit +0 -7
  1309. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use8.wit.result +0 -5
  1310. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use9.wit +0 -7
  1311. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use9.wit.result +0 -5
  1312. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-conflict.wit +0 -9
  1313. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-conflict.wit.result +0 -5
  1314. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-conflict2.wit +0 -11
  1315. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-conflict2.wit.result +0 -5
  1316. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-conflict3.wit +0 -11
  1317. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-conflict3.wit.result +0 -5
  1318. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-cycle1.wit +0 -5
  1319. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-cycle1.wit.result +0 -5
  1320. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-cycle2.wit +0 -5
  1321. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-cycle2.wit.result +0 -5
  1322. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-cycle3.wit +0 -6
  1323. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-cycle3.wit.result +0 -5
  1324. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-cycle4.wit +0 -13
  1325. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-cycle4.wit.result +0 -5
  1326. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-from-package-world.wit +0 -8
  1327. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-from-package-world.wit.result +0 -5
  1328. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-from-package-world2/bar.wit +0 -3
  1329. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-from-package-world2/foo.wit +0 -2
  1330. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-from-package-world2.wit.result +0 -8
  1331. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-implicit-import1.wit +0 -10
  1332. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-implicit-import1.wit.result +0 -6
  1333. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-implicit-import2.wit +0 -9
  1334. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-implicit-import2.wit.result +0 -5
  1335. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-implicit-import3.wit +0 -9
  1336. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-implicit-import3.wit.result +0 -5
  1337. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-interface-clash.wit +0 -2
  1338. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-interface-clash.wit.result +0 -5
  1339. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-fields.wit +0 -9
  1340. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-fields.wit.result +0 -5
  1341. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-fields2.wit +0 -6
  1342. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-fields2.wit.result +0 -5
  1343. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-fields3.wit +0 -6
  1344. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-fields3.wit.result +0 -5
  1345. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-fields4.wit +0 -11
  1346. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-fields4.wit.result +0 -8
  1347. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-import.wit +0 -6
  1348. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-import.wit.result +0 -5
  1349. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-top-level-func.wit +0 -4
  1350. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-top-level-func.wit.result +0 -5
  1351. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-top-level-func2.wit +0 -3
  1352. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-top-level-func2.wit.result +0 -5
  1353. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/worlds-same-fields5.wit +0 -16
  1354. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/worlds-same-fields5.wit.result +0 -9
  1355. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/shared-types.wit +0 -8
  1356. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/type-then-eof.wit +0 -3
  1357. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/types.wit +0 -59
  1358. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/use.wit +0 -33
  1359. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/wasi.wit +0 -176
  1360. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/world-diamond.wit +0 -20
  1361. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/world-top-level-funcs.wit +0 -7
  1362. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/worlds-with-types.wit +0 -32
  1363. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/worlds.wit +0 -40
  1364. /data/ext/cargo-vendor/{cranelift-bforest-0.96.4 → cranelift-bforest-0.97.1}/LICENSE +0 -0
  1365. /data/ext/cargo-vendor/{cranelift-bforest-0.96.4 → cranelift-bforest-0.97.1}/README.md +0 -0
  1366. /data/ext/cargo-vendor/{cranelift-bforest-0.96.4 → cranelift-bforest-0.97.1}/src/lib.rs +0 -0
  1367. /data/ext/cargo-vendor/{cranelift-bforest-0.96.4 → cranelift-bforest-0.97.1}/src/map.rs +0 -0
  1368. /data/ext/cargo-vendor/{cranelift-bforest-0.96.4 → cranelift-bforest-0.97.1}/src/node.rs +0 -0
  1369. /data/ext/cargo-vendor/{cranelift-bforest-0.96.4 → cranelift-bforest-0.97.1}/src/path.rs +0 -0
  1370. /data/ext/cargo-vendor/{cranelift-bforest-0.96.4 → cranelift-bforest-0.97.1}/src/pool.rs +0 -0
  1371. /data/ext/cargo-vendor/{cranelift-bforest-0.96.4 → cranelift-bforest-0.97.1}/src/set.rs +0 -0
  1372. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/LICENSE +0 -0
  1373. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/README.md +0 -0
  1374. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/build.rs +0 -0
  1375. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/alias_analysis.rs +0 -0
  1376. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/binemit/mod.rs +0 -0
  1377. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/binemit/stack_map.rs +0 -0
  1378. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/bitset.rs +0 -0
  1379. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/cfg_printer.rs +0 -0
  1380. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/constant_hash.rs +0 -0
  1381. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/context.rs +0 -0
  1382. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ctxhash.rs +0 -0
  1383. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/cursor.rs +0 -0
  1384. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/data_value.rs +0 -0
  1385. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/dbg.rs +0 -0
  1386. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/dce.rs +0 -0
  1387. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/dominator_tree.rs +0 -0
  1388. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/egraph/cost.rs +0 -0
  1389. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/egraph/domtree.rs +0 -0
  1390. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/egraph/elaborate.rs +0 -0
  1391. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/egraph.rs +0 -0
  1392. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/flowgraph.rs +0 -0
  1393. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/fx.rs +0 -0
  1394. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/incremental_cache.rs +0 -0
  1395. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/inst_predicates.rs +0 -0
  1396. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/atomic_rmw_op.rs +0 -0
  1397. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/builder.rs +0 -0
  1398. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/condcodes.rs +0 -0
  1399. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/constant.rs +0 -0
  1400. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/dfg.rs +0 -0
  1401. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/dynamic_type.rs +0 -0
  1402. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/entities.rs +0 -0
  1403. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/extfunc.rs +0 -0
  1404. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/extname.rs +0 -0
  1405. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/function.rs +0 -0
  1406. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/globalvalue.rs +0 -0
  1407. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/immediates.rs +0 -0
  1408. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/instructions.rs +0 -0
  1409. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/jumptable.rs +0 -0
  1410. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/known_symbol.rs +0 -0
  1411. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/layout.rs +0 -0
  1412. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/libcall.rs +0 -0
  1413. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/memflags.rs +0 -0
  1414. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/mod.rs +0 -0
  1415. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/progpoint.rs +0 -0
  1416. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/sourceloc.rs +0 -0
  1417. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/stackslot.rs +0 -0
  1418. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/table.rs +0 -0
  1419. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/types.rs +0 -0
  1420. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/aarch64/inst/args.rs +0 -0
  1421. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/aarch64/inst/regs.rs +0 -0
  1422. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/aarch64/inst/unwind/systemv.rs +0 -0
  1423. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/aarch64/inst/unwind.rs +0 -0
  1424. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/aarch64/inst_neon.isle +0 -0
  1425. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/aarch64/lower/isle/generated_code.rs +0 -0
  1426. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/aarch64/lower.rs +0 -0
  1427. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/aarch64/lower_dynamic_neon.isle +0 -0
  1428. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/aarch64/settings.rs +0 -0
  1429. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/call_conv.rs +0 -0
  1430. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/riscv64/inst/unwind.rs +0 -0
  1431. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/riscv64/lower/isle/generated_code.rs +0 -0
  1432. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/riscv64/lower.rs +0 -0
  1433. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/riscv64/settings.rs +0 -0
  1434. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/s390x/inst/args.rs +0 -0
  1435. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/s390x/inst/imms.rs +0 -0
  1436. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/s390x/inst/regs.rs +0 -0
  1437. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/s390x/inst/unwind/systemv.rs +0 -0
  1438. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/s390x/inst/unwind.rs +0 -0
  1439. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/s390x/lower/isle/generated_code.rs +0 -0
  1440. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/s390x/lower/isle.rs +0 -0
  1441. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/s390x/lower.rs +0 -0
  1442. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/s390x/settings.rs +0 -0
  1443. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/unwind/systemv.rs +0 -0
  1444. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/unwind/winx64.rs +0 -0
  1445. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/unwind.rs +0 -0
  1446. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/x64/encoding/mod.rs +0 -0
  1447. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/x64/inst/regs.rs +0 -0
  1448. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/x64/inst/unwind/systemv.rs +0 -0
  1449. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/x64/inst/unwind/winx64.rs +0 -0
  1450. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/x64/inst/unwind.rs +0 -0
  1451. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/x64/lower/isle/generated_code.rs +0 -0
  1452. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/x64/settings.rs +0 -0
  1453. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/iterators.rs +0 -0
  1454. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/legalizer/globalvalue.rs +0 -0
  1455. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/legalizer/mod.rs +0 -0
  1456. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/legalizer/table.rs +0 -0
  1457. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/lib.rs +0 -0
  1458. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/loop_analysis.rs +0 -0
  1459. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/machinst/blockorder.rs +0 -0
  1460. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/machinst/helpers.rs +0 -0
  1461. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/machinst/inst_common.rs +0 -0
  1462. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/machinst/valueregs.rs +0 -0
  1463. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/nan_canonicalization.rs +0 -0
  1464. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/README.md +0 -0
  1465. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/arithmetic.isle +0 -0
  1466. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/bitops.isle +0 -0
  1467. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/cprop.isle +0 -0
  1468. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/extends.isle +0 -0
  1469. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/generated_code.rs +0 -0
  1470. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/icmp.isle +0 -0
  1471. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/remat.isle +0 -0
  1472. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/selects.isle +0 -0
  1473. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/shifts.isle +0 -0
  1474. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts.rs +0 -0
  1475. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/prelude_opt.isle +0 -0
  1476. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/print_errors.rs +0 -0
  1477. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/remove_constant_phis.rs +0 -0
  1478. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/result.rs +0 -0
  1479. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/scoped_hash_map.rs +0 -0
  1480. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/souper_harvest.rs +0 -0
  1481. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/timing.rs +0 -0
  1482. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/unionfind.rs +0 -0
  1483. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/unreachable_code.rs +0 -0
  1484. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/value_label.rs +0 -0
  1485. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/write.rs +0 -0
  1486. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/LICENSE +0 -0
  1487. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/README.md +0 -0
  1488. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/cdsl/formats.rs +0 -0
  1489. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/cdsl/instructions.rs +0 -0
  1490. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/cdsl/isa.rs +0 -0
  1491. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/cdsl/mod.rs +0 -0
  1492. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/cdsl/operands.rs +0 -0
  1493. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/cdsl/settings.rs +0 -0
  1494. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/cdsl/types.rs +0 -0
  1495. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/cdsl/typevar.rs +0 -0
  1496. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/constant_hash.rs +0 -0
  1497. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/error.rs +0 -0
  1498. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/gen_inst.rs +0 -0
  1499. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/gen_settings.rs +0 -0
  1500. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/gen_types.rs +0 -0
  1501. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/isa/arm64.rs +0 -0
  1502. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/isa/mod.rs +0 -0
  1503. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/isa/riscv64.rs +0 -0
  1504. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/isa/s390x.rs +0 -0
  1505. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/lib.rs +0 -0
  1506. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/shared/entities.rs +0 -0
  1507. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/shared/formats.rs +0 -0
  1508. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/shared/immediates.rs +0 -0
  1509. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/shared/instructions.rs +0 -0
  1510. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/shared/mod.rs +0 -0
  1511. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/shared/types.rs +0 -0
  1512. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/srcgen.rs +0 -0
  1513. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/unique_table.rs +0 -0
  1514. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.96.4 → cranelift-codegen-shared-0.97.1}/LICENSE +0 -0
  1515. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.96.4 → cranelift-codegen-shared-0.97.1}/README.md +0 -0
  1516. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.96.4 → cranelift-codegen-shared-0.97.1}/src/constant_hash.rs +0 -0
  1517. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.96.4 → cranelift-codegen-shared-0.97.1}/src/constants.rs +0 -0
  1518. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.96.4 → cranelift-codegen-shared-0.97.1}/src/lib.rs +0 -0
  1519. /data/ext/cargo-vendor/{cranelift-control-0.96.4 → cranelift-control-0.97.1}/LICENSE +0 -0
  1520. /data/ext/cargo-vendor/{cranelift-control-0.96.4 → cranelift-control-0.97.1}/README.md +0 -0
  1521. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/LICENSE +0 -0
  1522. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/README.md +0 -0
  1523. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/src/boxed_slice.rs +0 -0
  1524. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/src/iter.rs +0 -0
  1525. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/src/keys.rs +0 -0
  1526. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/src/lib.rs +0 -0
  1527. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/src/map.rs +0 -0
  1528. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/src/packed_option.rs +0 -0
  1529. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/src/primary.rs +0 -0
  1530. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/src/set.rs +0 -0
  1531. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/src/sparse.rs +0 -0
  1532. /data/ext/cargo-vendor/{cranelift-frontend-0.96.4 → cranelift-frontend-0.97.1}/LICENSE +0 -0
  1533. /data/ext/cargo-vendor/{cranelift-frontend-0.96.4 → cranelift-frontend-0.97.1}/README.md +0 -0
  1534. /data/ext/cargo-vendor/{cranelift-frontend-0.96.4 → cranelift-frontend-0.97.1}/src/frontend.rs +0 -0
  1535. /data/ext/cargo-vendor/{cranelift-frontend-0.96.4 → cranelift-frontend-0.97.1}/src/lib.rs +0 -0
  1536. /data/ext/cargo-vendor/{cranelift-frontend-0.96.4 → cranelift-frontend-0.97.1}/src/ssa.rs +0 -0
  1537. /data/ext/cargo-vendor/{cranelift-frontend-0.96.4 → cranelift-frontend-0.97.1}/src/switch.rs +0 -0
  1538. /data/ext/cargo-vendor/{cranelift-frontend-0.96.4 → cranelift-frontend-0.97.1}/src/variable.rs +0 -0
  1539. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/README.md +0 -0
  1540. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/build.rs +0 -0
  1541. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/fail/bad_converters.isle +0 -0
  1542. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/fail/bound_var_type_mismatch.isle +0 -0
  1543. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/fail/converter_extractor_constructor.isle +0 -0
  1544. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/fail/error1.isle +0 -0
  1545. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/fail/extra_parens.isle +0 -0
  1546. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/fail/impure_expression.isle +0 -0
  1547. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/fail/impure_rhs.isle +0 -0
  1548. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/fail/multi_internal_etor.isle +0 -0
  1549. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/fail/multi_prio.isle +0 -0
  1550. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/borrows.isle +0 -0
  1551. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/borrows_main.rs +0 -0
  1552. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/iflets.isle +0 -0
  1553. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/iflets_main.rs +0 -0
  1554. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/multi_constructor.isle +0 -0
  1555. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/multi_constructor_main.rs +0 -0
  1556. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/multi_extractor.isle +0 -0
  1557. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/multi_extractor_main.rs +0 -0
  1558. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/test.isle +0 -0
  1559. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/test_main.rs +0 -0
  1560. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/bound_var.isle +0 -0
  1561. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/construct_and_extract.isle +0 -0
  1562. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/conversions.isle +0 -0
  1563. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/conversions_extern.isle +0 -0
  1564. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/let.isle +0 -0
  1565. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/nodebug.isle +0 -0
  1566. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/prio_trie_bug.isle +0 -0
  1567. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/test2.isle +0 -0
  1568. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/test3.isle +0 -0
  1569. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/test4.isle +0 -0
  1570. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/tutorial.isle +0 -0
  1571. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/run/iconst.isle +0 -0
  1572. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/run/iconst_main.rs +0 -0
  1573. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/run/let_shadowing.isle +0 -0
  1574. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/run/let_shadowing_main.rs +0 -0
  1575. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/ast.rs +0 -0
  1576. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/codegen.rs +0 -0
  1577. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/compile.rs +0 -0
  1578. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/error.rs +0 -0
  1579. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/lexer.rs +0 -0
  1580. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/lib.rs +0 -0
  1581. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/log.rs +0 -0
  1582. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/overlap.rs +0 -0
  1583. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/parser.rs +0 -0
  1584. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/sema.rs +0 -0
  1585. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/serialize.rs +0 -0
  1586. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/trie_again.rs +0 -0
  1587. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/tests/run_tests.rs +0 -0
  1588. /data/ext/cargo-vendor/{cranelift-native-0.96.4 → cranelift-native-0.97.1}/LICENSE +0 -0
  1589. /data/ext/cargo-vendor/{cranelift-native-0.96.4 → cranelift-native-0.97.1}/README.md +0 -0
  1590. /data/ext/cargo-vendor/{cranelift-native-0.96.4 → cranelift-native-0.97.1}/src/riscv.rs +0 -0
  1591. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/LICENSE +0 -0
  1592. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/README.md +0 -0
  1593. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/src/code_translator/bounds_checks.rs +0 -0
  1594. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/src/environ/mod.rs +0 -0
  1595. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/src/heap.rs +0 -0
  1596. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/src/lib.rs +0 -0
  1597. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/src/module_translator.rs +0 -0
  1598. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/src/state.rs +0 -0
  1599. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/tests/wasm_testsuite.rs +0 -0
  1600. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/arith.wat +0 -0
  1601. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/br_table.wat +0 -0
  1602. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/call-simd.wat +0 -0
  1603. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/call.wat +0 -0
  1604. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/embenchen_fannkuch.wat +0 -0
  1605. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/embenchen_fasta.wat +0 -0
  1606. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/embenchen_ifs.wat +0 -0
  1607. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/embenchen_primes.wat +0 -0
  1608. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/fac-multi-value.wat +0 -0
  1609. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/fibonacci.wat +0 -0
  1610. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/globals.wat +0 -0
  1611. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/icall-simd.wat +0 -0
  1612. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/icall.wat +0 -0
  1613. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/if-reachability-translation-0.wat +0 -0
  1614. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/if-reachability-translation-1.wat +0 -0
  1615. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/if-reachability-translation-2.wat +0 -0
  1616. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/if-reachability-translation-3.wat +0 -0
  1617. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/if-reachability-translation-4.wat +0 -0
  1618. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/if-reachability-translation-5.wat +0 -0
  1619. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/if-reachability-translation-6.wat +0 -0
  1620. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/if-unreachable-else-params-2.wat +0 -0
  1621. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/if-unreachable-else-params.wat +0 -0
  1622. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/issue-1306-name-section-with-u32-max-function-index.wasm +0 -0
  1623. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/memory.wat +0 -0
  1624. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-0.wat +0 -0
  1625. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-1.wat +0 -0
  1626. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-10.wat +0 -0
  1627. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-11.wat +0 -0
  1628. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-12.wat +0 -0
  1629. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-13.wat +0 -0
  1630. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-14.wat +0 -0
  1631. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-15.wat +0 -0
  1632. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-16.wat +0 -0
  1633. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-17.wat +0 -0
  1634. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-2.wat +0 -0
  1635. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-3.wat +0 -0
  1636. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-4.wat +0 -0
  1637. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-5.wat +0 -0
  1638. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-6.wat +0 -0
  1639. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-7.wat +0 -0
  1640. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-8.wat +0 -0
  1641. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-9.wat +0 -0
  1642. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/nullref.wat +0 -0
  1643. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/passive-data.wat +0 -0
  1644. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/pr2303.wat +0 -0
  1645. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/pr2559.wat +0 -0
  1646. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/ref-func-0.wat +0 -0
  1647. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/rust_fannkuch.wat +0 -0
  1648. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/select.wat +0 -0
  1649. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/simd-store.wat +0 -0
  1650. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/simd.wat +0 -0
  1651. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/table-copy.wat +0 -0
  1652. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/unreachable_code.wat +0 -0
  1653. /data/ext/cargo-vendor/{file-per-thread-logger-0.1.6 → file-per-thread-logger-0.2.0}/LICENSE +0 -0
  1654. /data/ext/cargo-vendor/{file-per-thread-logger-0.1.6 → file-per-thread-logger-0.2.0}/README.md +0 -0
  1655. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/LICENSE +0 -0
  1656. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/README.md +0 -0
  1657. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/doc/DESIGN.md +0 -0
  1658. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/doc/TODO +0 -0
  1659. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/src/cfg.rs +0 -0
  1660. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/src/domtree.rs +0 -0
  1661. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/src/fuzzing/mod.rs +0 -0
  1662. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/src/indexset.rs +0 -0
  1663. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/src/ion/dump.rs +0 -0
  1664. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/src/ion/redundant_moves.rs +0 -0
  1665. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/src/ion/reg_traversal.rs +0 -0
  1666. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/src/postorder.rs +0 -0
  1667. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/src/ssa.rs +0 -0
  1668. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.0}/LICENSE +0 -0
  1669. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.0}/README.md +0 -0
  1670. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.0}/src/clocks.rs +0 -0
  1671. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.0}/src/file.rs +0 -0
  1672. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.0}/src/net.rs +0 -0
  1673. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.0}/src/sched/unix.rs +0 -0
  1674. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.0}/src/sched/windows.rs +0 -0
  1675. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.0}/src/sched.rs +0 -0
  1676. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.0}/src/stdio.rs +0 -0
  1677. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/LICENSE +0 -0
  1678. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/README.md +0 -0
  1679. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/README.md +0 -0
  1680. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/docs/README.md +0 -0
  1681. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/README.md +0 -0
  1682. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/docs.md +0 -0
  1683. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/typenames.witx +0 -0
  1684. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_args.witx +0 -0
  1685. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_clock.witx +0 -0
  1686. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_environ.witx +0 -0
  1687. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_fd.witx +0 -0
  1688. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_path.witx +0 -0
  1689. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_poll.witx +0 -0
  1690. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_proc.witx +0 -0
  1691. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_random.witx +0 -0
  1692. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_sched.witx +0 -0
  1693. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_sock.witx +0 -0
  1694. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/old/snapshot_0/docs.md +0 -0
  1695. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/old/snapshot_0/witx/typenames.witx +0 -0
  1696. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/old/snapshot_0/witx/wasi_unstable.witx +0 -0
  1697. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/snapshot/docs.html +0 -0
  1698. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/snapshot/docs.md +0 -0
  1699. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/snapshot/witx/typenames.witx +0 -0
  1700. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/snapshot/witx/wasi_snapshot_preview1.witx +0 -0
  1701. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/proposal-template/README.md +0 -0
  1702. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/proposals/README.md +0 -0
  1703. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/snapshots/README.md +0 -0
  1704. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/standard/README.md +0 -0
  1705. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/build.rs +0 -0
  1706. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/clocks.rs +0 -0
  1707. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/dir.rs +0 -0
  1708. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/error.rs +0 -0
  1709. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/lib.rs +0 -0
  1710. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/pipe.rs +0 -0
  1711. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/random.rs +0 -0
  1712. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/sched/subscription.rs +0 -0
  1713. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/sched.rs +0 -0
  1714. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/snapshots/mod.rs +0 -0
  1715. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/snapshots/preview_0.rs +0 -0
  1716. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/snapshots/preview_1/error.rs +0 -0
  1717. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/string_array.rs +0 -0
  1718. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/table.rs +0 -0
  1719. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasm-encoder-0.29.0}/LICENSE +0 -0
  1720. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmparser-0.107.0}/LICENSE +0 -0
  1721. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/README.md +0 -0
  1722. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/examples/simple.rs +0 -0
  1723. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/limits.rs +0 -0
  1724. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/component/aliases.rs +0 -0
  1725. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/component/names.rs +0 -0
  1726. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/component/start.rs +0 -0
  1727. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/component.rs +0 -0
  1728. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/code.rs +0 -0
  1729. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/custom.rs +0 -0
  1730. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/data.rs +0 -0
  1731. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/elements.rs +0 -0
  1732. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/exports.rs +0 -0
  1733. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/functions.rs +0 -0
  1734. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/globals.rs +0 -0
  1735. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/imports.rs +0 -0
  1736. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/init.rs +0 -0
  1737. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/memories.rs +0 -0
  1738. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/names.rs +0 -0
  1739. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/operators.rs +0 -0
  1740. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/tables.rs +0 -0
  1741. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/tags.rs +0 -0
  1742. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers.rs +0 -0
  1743. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/resources.rs +0 -0
  1744. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/validator/func.rs +0 -0
  1745. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/tests/big-module.rs +0 -0
  1746. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmparser-0.111.0}/LICENSE +0 -0
  1747. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmprinter-0.2.63}/LICENSE +0 -0
  1748. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-10.0.0}/LICENSE +0 -0
  1749. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/README.md +0 -0
  1750. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/code.rs +0 -0
  1751. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/component/func/host.rs +0 -0
  1752. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/component/func/options.rs +0 -0
  1753. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/component/func/typed.rs +0 -0
  1754. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/component/func.rs +0 -0
  1755. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/component/linker.rs +0 -0
  1756. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/component/storage.rs +0 -0
  1757. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/component/store.rs +0 -0
  1758. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/component/types.rs +0 -0
  1759. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/component/values.rs +0 -0
  1760. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/limits.rs +0 -0
  1761. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/module/registry.rs +0 -0
  1762. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/profiling.rs +0 -0
  1763. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/signatures.rs +0 -0
  1764. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/store/data.rs +0 -0
  1765. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/trampoline/memory.rs +0 -0
  1766. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/trampoline/table.rs +0 -0
  1767. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/trampoline.rs +0 -0
  1768. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/trap.rs +0 -0
  1769. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/unix.rs +0 -0
  1770. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/windows.rs +0 -0
  1771. /data/ext/cargo-vendor/{wasmtime-asm-macros-9.0.4 → wasmtime-asm-macros-10.0.0}/src/lib.rs +0 -0
  1772. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-cache-10.0.0}/LICENSE +0 -0
  1773. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.0}/build.rs +0 -0
  1774. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.0}/src/config/tests.rs +0 -0
  1775. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.0}/src/config.rs +0 -0
  1776. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.0}/src/lib.rs +0 -0
  1777. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.0}/src/tests.rs +0 -0
  1778. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.0}/src/worker/tests/system_time_stub.rs +0 -0
  1779. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.0}/src/worker/tests.rs +0 -0
  1780. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.0}/src/worker.rs +0 -0
  1781. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.0}/tests/cache_write_default_config.rs +0 -0
  1782. /data/ext/cargo-vendor/{wasmtime-component-macro-9.0.4 → wasmtime-component-macro-10.0.0}/src/component.rs +0 -0
  1783. /data/ext/cargo-vendor/{wasmtime-component-macro-9.0.4 → wasmtime-component-macro-10.0.0}/src/lib.rs +0 -0
  1784. /data/ext/cargo-vendor/{wasmtime-component-util-9.0.4 → wasmtime-component-util-10.0.0}/src/lib.rs +0 -0
  1785. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-cranelift-10.0.0}/LICENSE +0 -0
  1786. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/SECURITY.md +0 -0
  1787. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/builder.rs +0 -0
  1788. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/compiler/component.rs +0 -0
  1789. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/gc.rs +0 -0
  1790. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/transform/address_transform.rs +0 -0
  1791. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/transform/attr.rs +0 -0
  1792. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/transform/expression.rs +0 -0
  1793. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/transform/line_program.rs +0 -0
  1794. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/transform/mod.rs +0 -0
  1795. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/transform/range_info_builder.rs +0 -0
  1796. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/transform/refs.rs +0 -0
  1797. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/transform/unit.rs +0 -0
  1798. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/transform/utils.rs +0 -0
  1799. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/write_debuginfo.rs +0 -0
  1800. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug.rs +0 -0
  1801. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-9.0.4 → wasmtime-cranelift-shared-10.0.0}/src/compiled_function.rs +0 -0
  1802. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-9.0.4 → wasmtime-cranelift-shared-10.0.0}/src/isa_builder.rs +0 -0
  1803. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-9.0.4 → wasmtime-cranelift-shared-10.0.0}/src/obj.rs +0 -0
  1804. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-environ-10.0.0}/LICENSE +0 -0
  1805. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/examples/factc.rs +0 -0
  1806. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/address_map.rs +0 -0
  1807. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/builtin.rs +0 -0
  1808. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/compilation.rs +0 -0
  1809. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/component/dfg.rs +0 -0
  1810. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/component/info.rs +0 -0
  1811. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/component/translate/adapt.rs +0 -0
  1812. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/component/vmcomponent_offsets.rs +0 -0
  1813. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/component.rs +0 -0
  1814. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/fact/core_types.rs +0 -0
  1815. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/fact/signature.rs +0 -0
  1816. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/fact/trampoline.rs +0 -0
  1817. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/fact/transcode.rs +0 -0
  1818. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/fact/traps.rs +0 -0
  1819. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/lib.rs +0 -0
  1820. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/module_types.rs +0 -0
  1821. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/obj.rs +0 -0
  1822. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/ref_bits.rs +0 -0
  1823. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/scopevec.rs +0 -0
  1824. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/stack_map.rs +0 -0
  1825. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/tunables.rs +0 -0
  1826. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/vmoffsets.rs +0 -0
  1827. /data/ext/cargo-vendor/{wasmtime-types-9.0.4 → wasmtime-fiber-10.0.0}/LICENSE +0 -0
  1828. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.0}/build.rs +0 -0
  1829. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.0}/src/unix/aarch64.rs +0 -0
  1830. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.0}/src/unix/arm.rs +0 -0
  1831. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.0}/src/unix/riscv64.rs +0 -0
  1832. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.0}/src/unix/s390x.S +0 -0
  1833. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.0}/src/unix/x86.rs +0 -0
  1834. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.0}/src/unix/x86_64.rs +0 -0
  1835. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.0}/src/windows.c +0 -0
  1836. /data/ext/cargo-vendor/{wasmtime-wasi-9.0.4 → wasmtime-jit-10.0.0}/LICENSE +0 -0
  1837. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.0}/src/code_memory.rs +0 -0
  1838. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.0}/src/debug.rs +0 -0
  1839. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.0}/src/demangling.rs +0 -0
  1840. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.0}/src/unwind/miri.rs +0 -0
  1841. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.0}/src/unwind/systemv.rs +0 -0
  1842. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.0}/src/unwind/winx64.rs +0 -0
  1843. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.0}/src/unwind.rs +0 -0
  1844. /data/ext/cargo-vendor/{wasmtime-jit-debug-9.0.4 → wasmtime-jit-debug-10.0.0}/README.md +0 -0
  1845. /data/ext/cargo-vendor/{wasmtime-jit-debug-9.0.4 → wasmtime-jit-debug-10.0.0}/src/gdb_jit_int.rs +0 -0
  1846. /data/ext/cargo-vendor/{wasmtime-jit-debug-9.0.4 → wasmtime-jit-debug-10.0.0}/src/lib.rs +0 -0
  1847. /data/ext/cargo-vendor/{wasmtime-jit-debug-9.0.4 → wasmtime-jit-debug-10.0.0}/src/perf_jitdump.rs +0 -0
  1848. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-9.0.4 → wasmtime-jit-icache-coherence-10.0.0}/src/lib.rs +0 -0
  1849. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-9.0.4 → wasmtime-jit-icache-coherence-10.0.0}/src/libc.rs +0 -0
  1850. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-9.0.4 → wasmtime-jit-icache-coherence-10.0.0}/src/miri.rs +0 -0
  1851. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-9.0.4 → wasmtime-jit-icache-coherence-10.0.0}/src/win.rs +0 -0
  1852. /data/ext/cargo-vendor/{wiggle-9.0.4 → wasmtime-runtime-10.0.0}/LICENSE +0 -0
  1853. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/build.rs +0 -0
  1854. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/component/transcode.rs +0 -0
  1855. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/export.rs +0 -0
  1856. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/helpers.c +0 -0
  1857. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/imports.rs +0 -0
  1858. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/instance/allocator/pooling/index_allocator.rs +0 -0
  1859. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/instance/allocator/pooling/unix.rs +0 -0
  1860. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/instance/allocator/pooling/windows.rs +0 -0
  1861. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/mmap.rs +0 -0
  1862. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/mmap_vec.rs +0 -0
  1863. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/module_id.rs +0 -0
  1864. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/parking_spot.rs +0 -0
  1865. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/store_box.rs +0 -0
  1866. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/trampolines/aarch64.rs +0 -0
  1867. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/trampolines/riscv64.rs +0 -0
  1868. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/trampolines/s390x.S +0 -0
  1869. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/trampolines/s390x.rs +0 -0
  1870. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/trampolines/x86_64.rs +0 -0
  1871. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/trampolines.rs +0 -0
  1872. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/traphandlers/backtrace/aarch64.rs +0 -0
  1873. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/traphandlers/backtrace/riscv64.rs +0 -0
  1874. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/traphandlers/backtrace/s390x.rs +0 -0
  1875. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/traphandlers/backtrace/x86_64.rs +0 -0
  1876. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/traphandlers/backtrace.rs +0 -0
  1877. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/traphandlers/macos.rs +0 -0
  1878. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/traphandlers/windows.rs +0 -0
  1879. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wasmtime-types-10.0.1}/LICENSE +0 -0
  1880. /data/ext/cargo-vendor/{wasmtime-types-9.0.4 → wasmtime-types-10.0.1}/src/error.rs +0 -0
  1881. /data/ext/cargo-vendor/{wiggle-macro-9.0.4 → wasmtime-wasi-10.0.0}/LICENSE +0 -0
  1882. /data/ext/cargo-vendor/{wasmtime-wasi-9.0.4 → wasmtime-wasi-10.0.0}/README.md +0 -0
  1883. /data/ext/cargo-vendor/{wasmtime-wasi-9.0.4 → wasmtime-wasi-10.0.0}/build.rs +0 -0
  1884. /data/ext/cargo-vendor/{wasmtime-winch-9.0.4 → wasmtime-winch-10.0.0}/LICENSE +0 -0
  1885. /data/ext/cargo-vendor/{wasmtime-winch-9.0.4 → wasmtime-winch-10.0.0}/src/builder.rs +0 -0
  1886. /data/ext/cargo-vendor/{wasmtime-winch-9.0.4 → wasmtime-winch-10.0.0}/src/lib.rs +0 -0
  1887. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-9.0.4 → wasmtime-wit-bindgen-10.0.0}/src/rust.rs +0 -0
  1888. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-9.0.4 → wasmtime-wit-bindgen-10.0.0}/src/source.rs +0 -0
  1889. /data/ext/cargo-vendor/{wiggle-9.0.4 → wiggle-10.0.0}/src/borrow.rs +0 -0
  1890. /data/ext/cargo-vendor/{wiggle-9.0.4 → wiggle-10.0.0}/src/error.rs +0 -0
  1891. /data/ext/cargo-vendor/{wiggle-9.0.4 → wiggle-10.0.0}/src/guest_type.rs +0 -0
  1892. /data/ext/cargo-vendor/{wiggle-9.0.4 → wiggle-10.0.0}/src/lib.rs +0 -0
  1893. /data/ext/cargo-vendor/{wiggle-9.0.4 → wiggle-10.0.0}/src/region.rs +0 -0
  1894. /data/ext/cargo-vendor/{wiggle-9.0.4 → wiggle-10.0.0}/src/wasmtime.rs +0 -0
  1895. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/README.md +0 -0
  1896. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/codegen_settings.rs +0 -0
  1897. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/config.rs +0 -0
  1898. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/funcs.rs +0 -0
  1899. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/lib.rs +0 -0
  1900. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/lifetimes.rs +0 -0
  1901. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/module_trait.rs +0 -0
  1902. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/names.rs +0 -0
  1903. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/types/error.rs +0 -0
  1904. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/types/flags.rs +0 -0
  1905. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/types/handle.rs +0 -0
  1906. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/types/mod.rs +0 -0
  1907. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/types/record.rs +0 -0
  1908. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/types/variant.rs +0 -0
  1909. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/wasmtime.rs +0 -0
  1910. /data/ext/cargo-vendor/{winch-codegen-0.7.4 → winch-codegen-0.8.0}/LICENSE +0 -0
  1911. /data/ext/cargo-vendor/{winch-codegen-0.7.4 → winch-codegen-0.8.0}/build.rs +0 -0
  1912. /data/ext/cargo-vendor/{winch-codegen-0.7.4 → winch-codegen-0.8.0}/src/isa/aarch64/address.rs +0 -0
  1913. /data/ext/cargo-vendor/{winch-codegen-0.7.4 → winch-codegen-0.8.0}/src/isa/reg.rs +0 -0
  1914. /data/ext/cargo-vendor/{winch-codegen-0.7.4 → winch-codegen-0.8.0}/src/regset.rs +0 -0
  1915. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/README.md +0 -0
  1916. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/src/abi.rs +0 -0
  1917. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/src/ast/toposort.rs +0 -0
  1918. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/src/sizealign.rs +0 -0
  1919. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/alias-no-type.wit +0 -0
  1920. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/async.wit.result +0 -0
  1921. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/async1.wit.result +0 -0
  1922. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/bad-list.wit +0 -0
  1923. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/bad-list.wit.result +0 -0
  1924. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/dangling-type.wit +0 -0
  1925. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/dangling-type.wit.result +0 -0
  1926. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/invalid-md.md +0 -0
  1927. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/invalid-toplevel.wit +0 -0
  1928. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/invalid-toplevel.wit.result +0 -0
  1929. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/keyword.wit +0 -0
  1930. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/keyword.wit.result +0 -0
  1931. /data/ext/cargo-vendor/{wit-parser-0.7.1/tests/ui/empty.wit → wit-parser-0.8.0/tests/ui/parse-fail/missing-package.wit} +0 -0
  1932. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/unresolved-use10/foo.wit +0 -0
  1933. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/unterminated-string.wit.result +0 -0
@@ -0,0 +1,3538 @@
1
+ //! This module contains the bulk of the interesting code performing the translation between
2
+ //! WebAssembly and Cranelift IR.
3
+ //!
4
+ //! The translation is done in one pass, opcode by opcode. Two main data structures are used during
5
+ //! code translations: the value stack and the control stack. The value stack mimics the execution
6
+ //! of the WebAssembly stack machine: each instruction result is pushed onto the stack and
7
+ //! instruction arguments are popped off the stack. Similarly, when encountering a control flow
8
+ //! block, it is pushed onto the control stack and popped off when encountering the corresponding
9
+ //! `End`.
10
+ //!
11
+ //! Another data structure, the translation state, records information concerning unreachable code
12
+ //! status and about if inserting a return at the end of the function is necessary.
13
+ //!
14
+ //! Some of the WebAssembly instructions need information about the environment for which they
15
+ //! are being translated:
16
+ //!
17
+ //! - the loads and stores need the memory base address;
18
+ //! - the `get_global` and `set_global` instructions depend on how the globals are implemented;
19
+ //! - `memory.size` and `memory.grow` are runtime functions;
20
+ //! - `call_indirect` has to translate the function index into the address of where this
21
+ //! is;
22
+ //!
23
+ //! That is why `translate_function_body` takes an object having the `WasmRuntime` trait as
24
+ //! argument.
25
+ //!
26
+ //! There is extra complexity associated with translation of 128-bit SIMD instructions.
27
+ //! Wasm only considers there to be a single 128-bit vector type. But CLIF's type system
28
+ //! distinguishes different lane configurations, so considers 8X16, 16X8, 32X4 and 64X2 to be
29
+ //! different types. The result is that, in wasm, it's perfectly OK to take the output of (eg)
30
+ //! an `add.16x8` and use that as an operand of a `sub.32x4`, without using any cast. But when
31
+ //! translated into CLIF, that will cause a verifier error due to the apparent type mismatch.
32
+ //!
33
+ //! This file works around that problem by liberally inserting `bitcast` instructions in many
34
+ //! places -- mostly, before the use of vector values, either as arguments to CLIF instructions
35
+ //! or as block actual parameters. These are no-op casts which nevertheless have different
36
+ //! input and output types, and are used (mostly) to "convert" 16X8, 32X4 and 64X2-typed vectors
37
+ //! to the "canonical" type, 8X16. Hence the functions `optionally_bitcast_vector`,
38
+ //! `bitcast_arguments`, `pop*_with_bitcast`, `canonicalise_then_jump`,
39
+ //! `canonicalise_then_br{z,nz}`, `is_non_canonical_v128` and `canonicalise_v128_values`.
40
+ //! Note that the `bitcast*` functions are occasionally used to convert to some type other than
41
+ //! 8X16, but the `canonicalise*` functions always convert to type 8X16.
42
+ //!
43
+ //! Be careful when adding support for new vector instructions. And when adding new jumps, even
44
+ //! if they are apparently don't have any connection to vectors. Never generate any kind of
45
+ //! (inter-block) jump directly. Instead use `canonicalise_then_jump` and
46
+ //! `canonicalise_then_br{z,nz}`.
47
+ //!
48
+ //! The use of bitcasts is ugly and inefficient, but currently unavoidable:
49
+ //!
50
+ //! * they make the logic in this file fragile: miss out a bitcast for any reason, and there is
51
+ //! the risk of the system failing in the verifier. At least for debug builds.
52
+ //!
53
+ //! * in the new backends, they potentially interfere with pattern matching on CLIF -- the
54
+ //! patterns need to take into account the presence of bitcast nodes.
55
+ //!
56
+ //! * in the new backends, they get translated into machine-level vector-register-copy
57
+ //! instructions, none of which are actually necessary. We then depend on the register
58
+ //! allocator to coalesce them all out.
59
+ //!
60
+ //! * they increase the total number of CLIF nodes that have to be processed, hence slowing down
61
+ //! the compilation pipeline. Also, the extra coalescing work generates a slowdown.
62
+ //!
63
+ //! A better solution which would avoid all four problems would be to remove the 8X16, 16X8,
64
+ //! 32X4 and 64X2 types from CLIF and instead have a single V128 type.
65
+ //!
66
+ //! For further background see also:
67
+ //! <https://github.com/bytecodealliance/wasmtime/issues/1147>
68
+ //! ("Too many raw_bitcasts in SIMD code")
69
+ //! <https://github.com/bytecodealliance/cranelift/pull/1251>
70
+ //! ("Add X128 type to represent WebAssembly's V128 type")
71
+ //! <https://github.com/bytecodealliance/cranelift/pull/1236>
72
+ //! ("Relax verification to allow I8X16 to act as a default vector type")
73
+
74
+ mod bounds_checks;
75
+
76
+ use super::{hash_map, HashMap};
77
+ use crate::environ::{FuncEnvironment, GlobalVariable};
78
+ use crate::state::{ControlStackFrame, ElseData, FuncTranslationState};
79
+ use crate::translation_utils::{
80
+ block_with_params, blocktype_params_results, f32_translation, f64_translation,
81
+ };
82
+ use crate::wasm_unsupported;
83
+ use crate::{FuncIndex, GlobalIndex, MemoryIndex, TableIndex, TypeIndex, WasmResult};
84
+ use core::{i32, u32};
85
+ use cranelift_codegen::ir::condcodes::{FloatCC, IntCC};
86
+ use cranelift_codegen::ir::immediates::Offset32;
87
+ use cranelift_codegen::ir::types::*;
88
+ use cranelift_codegen::ir::{
89
+ self, AtomicRmwOp, ConstantData, InstBuilder, JumpTableData, MemFlags, Value, ValueLabel,
90
+ };
91
+ use cranelift_codegen::packed_option::ReservedValue;
92
+ use cranelift_frontend::{FunctionBuilder, Variable};
93
+ use itertools::Itertools;
94
+ use smallvec::SmallVec;
95
+ use std::convert::TryFrom;
96
+ use std::vec::Vec;
97
+ use wasmparser::{FuncValidator, MemArg, Operator, WasmModuleResources};
98
+
99
+ /// Given a `Reachability<T>`, unwrap the inner `T` or, when unreachable, set
100
+ /// `state.reachable = false` and return.
101
+ ///
102
+ /// Used in combination with calling `prepare_addr` and `prepare_atomic_addr`
103
+ /// when we can statically determine that a Wasm access will unconditionally
104
+ /// trap.
105
+ macro_rules! unwrap_or_return_unreachable_state {
106
+ ($state:ident, $value:expr) => {
107
+ match $value {
108
+ Reachability::Reachable(x) => x,
109
+ Reachability::Unreachable => {
110
+ $state.reachable = false;
111
+ return Ok(());
112
+ }
113
+ }
114
+ };
115
+ }
116
+
117
+ // Clippy warns about "align: _" but its important to document that the flags field is ignored
118
+ #[cfg_attr(
119
+ feature = "cargo-clippy",
120
+ allow(clippy::unneeded_field_pattern, clippy::cognitive_complexity)
121
+ )]
122
+ /// Translates wasm operators into Cranelift IR instructions.
123
+ pub fn translate_operator<FE: FuncEnvironment + ?Sized>(
124
+ validator: &mut FuncValidator<impl WasmModuleResources>,
125
+ op: &Operator,
126
+ builder: &mut FunctionBuilder,
127
+ state: &mut FuncTranslationState,
128
+ environ: &mut FE,
129
+ ) -> WasmResult<()> {
130
+ if !state.reachable {
131
+ translate_unreachable_operator(validator, &op, builder, state, environ)?;
132
+ return Ok(());
133
+ }
134
+
135
+ // Given that we believe the current block is reachable, the FunctionBuilder ought to agree.
136
+ debug_assert!(!builder.is_unreachable());
137
+
138
+ // This big match treats all Wasm code operators.
139
+ match op {
140
+ /********************************** Locals ****************************************
141
+ * `get_local` and `set_local` are treated as non-SSA variables and will completely
142
+ * disappear in the Cranelift Code
143
+ ***********************************************************************************/
144
+ Operator::LocalGet { local_index } => {
145
+ let val = builder.use_var(Variable::from_u32(*local_index));
146
+ state.push1(val);
147
+ let label = ValueLabel::from_u32(*local_index);
148
+ builder.set_val_label(val, label);
149
+ }
150
+ Operator::LocalSet { local_index } => {
151
+ let mut val = state.pop1();
152
+
153
+ // Ensure SIMD values are cast to their default Cranelift type, I8x16.
154
+ let ty = builder.func.dfg.value_type(val);
155
+ if ty.is_vector() {
156
+ val = optionally_bitcast_vector(val, I8X16, builder);
157
+ }
158
+
159
+ builder.def_var(Variable::from_u32(*local_index), val);
160
+ let label = ValueLabel::from_u32(*local_index);
161
+ builder.set_val_label(val, label);
162
+ }
163
+ Operator::LocalTee { local_index } => {
164
+ let mut val = state.peek1();
165
+
166
+ // Ensure SIMD values are cast to their default Cranelift type, I8x16.
167
+ let ty = builder.func.dfg.value_type(val);
168
+ if ty.is_vector() {
169
+ val = optionally_bitcast_vector(val, I8X16, builder);
170
+ }
171
+
172
+ builder.def_var(Variable::from_u32(*local_index), val);
173
+ let label = ValueLabel::from_u32(*local_index);
174
+ builder.set_val_label(val, label);
175
+ }
176
+ /********************************** Globals ****************************************
177
+ * `get_global` and `set_global` are handled by the environment.
178
+ ***********************************************************************************/
179
+ Operator::GlobalGet { global_index } => {
180
+ let val = match state.get_global(builder.func, *global_index, environ)? {
181
+ GlobalVariable::Const(val) => val,
182
+ GlobalVariable::Memory { gv, offset, ty } => {
183
+ let addr = builder.ins().global_value(environ.pointer_type(), gv);
184
+ let mut flags = ir::MemFlags::trusted();
185
+ // Put globals in the "table" abstract heap category as well.
186
+ flags.set_table();
187
+ builder.ins().load(ty, flags, addr, offset)
188
+ }
189
+ GlobalVariable::Custom => environ.translate_custom_global_get(
190
+ builder.cursor(),
191
+ GlobalIndex::from_u32(*global_index),
192
+ )?,
193
+ };
194
+ state.push1(val);
195
+ }
196
+ Operator::GlobalSet { global_index } => {
197
+ match state.get_global(builder.func, *global_index, environ)? {
198
+ GlobalVariable::Const(_) => panic!("global #{} is a constant", *global_index),
199
+ GlobalVariable::Memory { gv, offset, ty } => {
200
+ let addr = builder.ins().global_value(environ.pointer_type(), gv);
201
+ let mut flags = ir::MemFlags::trusted();
202
+ // Put globals in the "table" abstract heap category as well.
203
+ flags.set_table();
204
+ let mut val = state.pop1();
205
+ // Ensure SIMD values are cast to their default Cranelift type, I8x16.
206
+ if ty.is_vector() {
207
+ val = optionally_bitcast_vector(val, I8X16, builder);
208
+ }
209
+ debug_assert_eq!(ty, builder.func.dfg.value_type(val));
210
+ builder.ins().store(flags, val, addr, offset);
211
+ }
212
+ GlobalVariable::Custom => {
213
+ let val = state.pop1();
214
+ environ.translate_custom_global_set(
215
+ builder.cursor(),
216
+ GlobalIndex::from_u32(*global_index),
217
+ val,
218
+ )?;
219
+ }
220
+ }
221
+ }
222
+ /********************************* Stack misc ***************************************
223
+ * `drop`, `nop`, `unreachable` and `select`.
224
+ ***********************************************************************************/
225
+ Operator::Drop => {
226
+ state.pop1();
227
+ }
228
+ Operator::Select => {
229
+ let (mut arg1, mut arg2, cond) = state.pop3();
230
+ if builder.func.dfg.value_type(arg1).is_vector() {
231
+ arg1 = optionally_bitcast_vector(arg1, I8X16, builder);
232
+ }
233
+ if builder.func.dfg.value_type(arg2).is_vector() {
234
+ arg2 = optionally_bitcast_vector(arg2, I8X16, builder);
235
+ }
236
+ state.push1(builder.ins().select(cond, arg1, arg2));
237
+ }
238
+ Operator::TypedSelect { ty: _ } => {
239
+ // We ignore the explicit type parameter as it is only needed for
240
+ // validation, which we require to have been performed before
241
+ // translation.
242
+ let (mut arg1, mut arg2, cond) = state.pop3();
243
+ if builder.func.dfg.value_type(arg1).is_vector() {
244
+ arg1 = optionally_bitcast_vector(arg1, I8X16, builder);
245
+ }
246
+ if builder.func.dfg.value_type(arg2).is_vector() {
247
+ arg2 = optionally_bitcast_vector(arg2, I8X16, builder);
248
+ }
249
+ state.push1(builder.ins().select(cond, arg1, arg2));
250
+ }
251
+ Operator::Nop => {
252
+ // We do nothing
253
+ }
254
+ Operator::Unreachable => {
255
+ builder.ins().trap(ir::TrapCode::UnreachableCodeReached);
256
+ state.reachable = false;
257
+ }
258
+ /***************************** Control flow blocks **********************************
259
+ * When starting a control flow block, we create a new `Block` that will hold the code
260
+ * after the block, and we push a frame on the control stack. Depending on the type
261
+ * of block, we create a new `Block` for the body of the block with an associated
262
+ * jump instruction.
263
+ *
264
+ * The `End` instruction pops the last control frame from the control stack, seals
265
+ * the destination block (since `br` instructions targeting it only appear inside the
266
+ * block and have already been translated) and modify the value stack to use the
267
+ * possible `Block`'s arguments values.
268
+ ***********************************************************************************/
269
+ Operator::Block { blockty } => {
270
+ let (params, results) = blocktype_params_results(validator, *blockty)?;
271
+ let next = block_with_params(builder, results.clone(), environ)?;
272
+ state.push_block(next, params.len(), results.len());
273
+ }
274
+ Operator::Loop { blockty } => {
275
+ let (params, results) = blocktype_params_results(validator, *blockty)?;
276
+ let loop_body = block_with_params(builder, params.clone(), environ)?;
277
+ let next = block_with_params(builder, results.clone(), environ)?;
278
+ canonicalise_then_jump(builder, loop_body, state.peekn(params.len()));
279
+ state.push_loop(loop_body, next, params.len(), results.len());
280
+
281
+ // Pop the initial `Block` actuals and replace them with the `Block`'s
282
+ // params since control flow joins at the top of the loop.
283
+ state.popn(params.len());
284
+ state
285
+ .stack
286
+ .extend_from_slice(builder.block_params(loop_body));
287
+
288
+ builder.switch_to_block(loop_body);
289
+ environ.translate_loop_header(builder)?;
290
+ }
291
+ Operator::If { blockty } => {
292
+ let val = state.pop1();
293
+
294
+ let next_block = builder.create_block();
295
+ let (params, results) = blocktype_params_results(validator, *blockty)?;
296
+ let (destination, else_data) = if params.clone().eq(results.clone()) {
297
+ // It is possible there is no `else` block, so we will only
298
+ // allocate a block for it if/when we find the `else`. For now,
299
+ // we if the condition isn't true, then we jump directly to the
300
+ // destination block following the whole `if...end`. If we do end
301
+ // up discovering an `else`, then we will allocate a block for it
302
+ // and go back and patch the jump.
303
+ let destination = block_with_params(builder, results.clone(), environ)?;
304
+ let branch_inst = canonicalise_brif(
305
+ builder,
306
+ val,
307
+ next_block,
308
+ &[],
309
+ destination,
310
+ state.peekn(params.len()),
311
+ );
312
+ (
313
+ destination,
314
+ ElseData::NoElse {
315
+ branch_inst,
316
+ placeholder: destination,
317
+ },
318
+ )
319
+ } else {
320
+ // The `if` type signature is not valid without an `else` block,
321
+ // so we eagerly allocate the `else` block here.
322
+ let destination = block_with_params(builder, results.clone(), environ)?;
323
+ let else_block = block_with_params(builder, params.clone(), environ)?;
324
+ canonicalise_brif(
325
+ builder,
326
+ val,
327
+ next_block,
328
+ &[],
329
+ else_block,
330
+ state.peekn(params.len()),
331
+ );
332
+ builder.seal_block(else_block);
333
+ (destination, ElseData::WithElse { else_block })
334
+ };
335
+
336
+ builder.seal_block(next_block); // Only predecessor is the current block.
337
+ builder.switch_to_block(next_block);
338
+
339
+ // Here we append an argument to a Block targeted by an argumentless jump instruction
340
+ // But in fact there are two cases:
341
+ // - either the If does not have a Else clause, in that case ty = EmptyBlock
342
+ // and we add nothing;
343
+ // - either the If have an Else clause, in that case the destination of this jump
344
+ // instruction will be changed later when we translate the Else operator.
345
+ state.push_if(
346
+ destination,
347
+ else_data,
348
+ params.len(),
349
+ results.len(),
350
+ *blockty,
351
+ );
352
+ }
353
+ Operator::Else => {
354
+ let i = state.control_stack.len() - 1;
355
+ match state.control_stack[i] {
356
+ ControlStackFrame::If {
357
+ ref else_data,
358
+ head_is_reachable,
359
+ ref mut consequent_ends_reachable,
360
+ num_return_values,
361
+ blocktype,
362
+ destination,
363
+ ..
364
+ } => {
365
+ // We finished the consequent, so record its final
366
+ // reachability state.
367
+ debug_assert!(consequent_ends_reachable.is_none());
368
+ *consequent_ends_reachable = Some(state.reachable);
369
+
370
+ if head_is_reachable {
371
+ // We have a branch from the head of the `if` to the `else`.
372
+ state.reachable = true;
373
+
374
+ // Ensure we have a block for the `else` block (it may have
375
+ // already been pre-allocated, see `ElseData` for details).
376
+ let else_block = match *else_data {
377
+ ElseData::NoElse {
378
+ branch_inst,
379
+ placeholder,
380
+ } => {
381
+ let (params, _results) =
382
+ blocktype_params_results(validator, blocktype)?;
383
+ debug_assert_eq!(params.len(), num_return_values);
384
+ let else_block =
385
+ block_with_params(builder, params.clone(), environ)?;
386
+ canonicalise_then_jump(
387
+ builder,
388
+ destination,
389
+ state.peekn(params.len()),
390
+ );
391
+ state.popn(params.len());
392
+
393
+ builder.change_jump_destination(
394
+ branch_inst,
395
+ placeholder,
396
+ else_block,
397
+ );
398
+ builder.seal_block(else_block);
399
+ else_block
400
+ }
401
+ ElseData::WithElse { else_block } => {
402
+ canonicalise_then_jump(
403
+ builder,
404
+ destination,
405
+ state.peekn(num_return_values),
406
+ );
407
+ state.popn(num_return_values);
408
+ else_block
409
+ }
410
+ };
411
+
412
+ // You might be expecting that we push the parameters for this
413
+ // `else` block here, something like this:
414
+ //
415
+ // state.pushn(&control_stack_frame.params);
416
+ //
417
+ // We don't do that because they are already on the top of the stack
418
+ // for us: we pushed the parameters twice when we saw the initial
419
+ // `if` so that we wouldn't have to save the parameters in the
420
+ // `ControlStackFrame` as another `Vec` allocation.
421
+
422
+ builder.switch_to_block(else_block);
423
+
424
+ // We don't bother updating the control frame's `ElseData`
425
+ // to `WithElse` because nothing else will read it.
426
+ }
427
+ }
428
+ _ => unreachable!(),
429
+ }
430
+ }
431
+ Operator::End => {
432
+ let frame = state.control_stack.pop().unwrap();
433
+ let next_block = frame.following_code();
434
+ let return_count = frame.num_return_values();
435
+ let return_args = state.peekn_mut(return_count);
436
+
437
+ canonicalise_then_jump(builder, next_block, return_args);
438
+ // You might expect that if we just finished an `if` block that
439
+ // didn't have a corresponding `else` block, then we would clean
440
+ // up our duplicate set of parameters that we pushed earlier
441
+ // right here. However, we don't have to explicitly do that,
442
+ // since we truncate the stack back to the original height
443
+ // below.
444
+
445
+ builder.switch_to_block(next_block);
446
+ builder.seal_block(next_block);
447
+
448
+ // If it is a loop we also have to seal the body loop block
449
+ if let ControlStackFrame::Loop { header, .. } = frame {
450
+ builder.seal_block(header)
451
+ }
452
+
453
+ frame.truncate_value_stack_to_original_size(&mut state.stack);
454
+ state
455
+ .stack
456
+ .extend_from_slice(builder.block_params(next_block));
457
+ }
458
+ /**************************** Branch instructions *********************************
459
+ * The branch instructions all have as arguments a target nesting level, which
460
+ * corresponds to how many control stack frames do we have to pop to get the
461
+ * destination `Block`.
462
+ *
463
+ * Once the destination `Block` is found, we sometimes have to declare a certain depth
464
+ * of the stack unreachable, because some branch instructions are terminator.
465
+ *
466
+ * The `br_table` case is much more complicated because Cranelift's `br_table` instruction
467
+ * does not support jump arguments like all the other branch instructions. That is why, in
468
+ * the case where we would use jump arguments for every other branch instruction, we
469
+ * need to split the critical edges leaving the `br_tables` by creating one `Block` per
470
+ * table destination; the `br_table` will point to these newly created `Blocks` and these
471
+ * `Block`s contain only a jump instruction pointing to the final destination, this time with
472
+ * jump arguments.
473
+ *
474
+ * This system is also implemented in Cranelift's SSA construction algorithm, because
475
+ * `use_var` located in a destination `Block` of a `br_table` might trigger the addition
476
+ * of jump arguments in each predecessor branch instruction, one of which might be a
477
+ * `br_table`.
478
+ ***********************************************************************************/
479
+ Operator::Br { relative_depth } => {
480
+ let i = state.control_stack.len() - 1 - (*relative_depth as usize);
481
+ let (return_count, br_destination) = {
482
+ let frame = &mut state.control_stack[i];
483
+ // We signal that all the code that follows until the next End is unreachable
484
+ frame.set_branched_to_exit();
485
+ let return_count = if frame.is_loop() {
486
+ frame.num_param_values()
487
+ } else {
488
+ frame.num_return_values()
489
+ };
490
+ (return_count, frame.br_destination())
491
+ };
492
+ let destination_args = state.peekn_mut(return_count);
493
+ canonicalise_then_jump(builder, br_destination, destination_args);
494
+ state.popn(return_count);
495
+ state.reachable = false;
496
+ }
497
+ Operator::BrIf { relative_depth } => translate_br_if(*relative_depth, builder, state),
498
+ Operator::BrTable { targets } => {
499
+ let default = targets.default();
500
+ let mut min_depth = default;
501
+ for depth in targets.targets() {
502
+ let depth = depth?;
503
+ if depth < min_depth {
504
+ min_depth = depth;
505
+ }
506
+ }
507
+ let jump_args_count = {
508
+ let i = state.control_stack.len() - 1 - (min_depth as usize);
509
+ let min_depth_frame = &state.control_stack[i];
510
+ if min_depth_frame.is_loop() {
511
+ min_depth_frame.num_param_values()
512
+ } else {
513
+ min_depth_frame.num_return_values()
514
+ }
515
+ };
516
+ let val = state.pop1();
517
+ let mut data = Vec::with_capacity(targets.len() as usize);
518
+ if jump_args_count == 0 {
519
+ // No jump arguments
520
+ for depth in targets.targets() {
521
+ let depth = depth?;
522
+ let block = {
523
+ let i = state.control_stack.len() - 1 - (depth as usize);
524
+ let frame = &mut state.control_stack[i];
525
+ frame.set_branched_to_exit();
526
+ frame.br_destination()
527
+ };
528
+ data.push(builder.func.dfg.block_call(block, &[]));
529
+ }
530
+ let block = {
531
+ let i = state.control_stack.len() - 1 - (default as usize);
532
+ let frame = &mut state.control_stack[i];
533
+ frame.set_branched_to_exit();
534
+ frame.br_destination()
535
+ };
536
+ let block = builder.func.dfg.block_call(block, &[]);
537
+ let jt = builder.create_jump_table(JumpTableData::new(block, &data));
538
+ builder.ins().br_table(val, jt);
539
+ } else {
540
+ // Here we have jump arguments, but Cranelift's br_table doesn't support them
541
+ // We then proceed to split the edges going out of the br_table
542
+ let return_count = jump_args_count;
543
+ let mut dest_block_sequence = vec![];
544
+ let mut dest_block_map = HashMap::new();
545
+ for depth in targets.targets() {
546
+ let depth = depth?;
547
+ let branch_block = match dest_block_map.entry(depth as usize) {
548
+ hash_map::Entry::Occupied(entry) => *entry.get(),
549
+ hash_map::Entry::Vacant(entry) => {
550
+ let block = builder.create_block();
551
+ dest_block_sequence.push((depth as usize, block));
552
+ *entry.insert(block)
553
+ }
554
+ };
555
+ data.push(builder.func.dfg.block_call(branch_block, &[]));
556
+ }
557
+ let default_branch_block = match dest_block_map.entry(default as usize) {
558
+ hash_map::Entry::Occupied(entry) => *entry.get(),
559
+ hash_map::Entry::Vacant(entry) => {
560
+ let block = builder.create_block();
561
+ dest_block_sequence.push((default as usize, block));
562
+ *entry.insert(block)
563
+ }
564
+ };
565
+ let default_branch_block = builder.func.dfg.block_call(default_branch_block, &[]);
566
+ let jt = builder.create_jump_table(JumpTableData::new(default_branch_block, &data));
567
+ builder.ins().br_table(val, jt);
568
+ for (depth, dest_block) in dest_block_sequence {
569
+ builder.switch_to_block(dest_block);
570
+ builder.seal_block(dest_block);
571
+ let real_dest_block = {
572
+ let i = state.control_stack.len() - 1 - depth;
573
+ let frame = &mut state.control_stack[i];
574
+ frame.set_branched_to_exit();
575
+ frame.br_destination()
576
+ };
577
+ let destination_args = state.peekn_mut(return_count);
578
+ canonicalise_then_jump(builder, real_dest_block, destination_args);
579
+ }
580
+ state.popn(return_count);
581
+ }
582
+ state.reachable = false;
583
+ }
584
+ Operator::Return => {
585
+ let return_count = {
586
+ let frame = &mut state.control_stack[0];
587
+ frame.num_return_values()
588
+ };
589
+ {
590
+ let return_args = state.peekn_mut(return_count);
591
+ bitcast_wasm_returns(environ, return_args, builder);
592
+ builder.ins().return_(return_args);
593
+ }
594
+ state.popn(return_count);
595
+ state.reachable = false;
596
+ }
597
+ /********************************** Exception handing **********************************/
598
+ Operator::Try { .. }
599
+ | Operator::Catch { .. }
600
+ | Operator::Throw { .. }
601
+ | Operator::Rethrow { .. }
602
+ | Operator::Delegate { .. }
603
+ | Operator::CatchAll => {
604
+ return Err(wasm_unsupported!(
605
+ "proposed exception handling operator {:?}",
606
+ op
607
+ ));
608
+ }
609
+ /************************************ Calls ****************************************
610
+ * The call instructions pop off their arguments from the stack and append their
611
+ * return values to it. `call_indirect` needs environment support because there is an
612
+ * argument referring to an index in the external functions table of the module.
613
+ ************************************************************************************/
614
+ Operator::Call { function_index } => {
615
+ let (fref, num_args) = state.get_direct_func(builder.func, *function_index, environ)?;
616
+
617
+ // Bitcast any vector arguments to their default type, I8X16, before calling.
618
+ let args = state.peekn_mut(num_args);
619
+ bitcast_wasm_params(
620
+ environ,
621
+ builder.func.dfg.ext_funcs[fref].signature,
622
+ args,
623
+ builder,
624
+ );
625
+
626
+ let call = environ.translate_call(
627
+ builder.cursor(),
628
+ FuncIndex::from_u32(*function_index),
629
+ fref,
630
+ args,
631
+ )?;
632
+ let inst_results = builder.inst_results(call);
633
+ debug_assert_eq!(
634
+ inst_results.len(),
635
+ builder.func.dfg.signatures[builder.func.dfg.ext_funcs[fref].signature]
636
+ .returns
637
+ .len(),
638
+ "translate_call results should match the call signature"
639
+ );
640
+ state.popn(num_args);
641
+ state.pushn(inst_results);
642
+ }
643
+ Operator::CallIndirect {
644
+ type_index,
645
+ table_index,
646
+ table_byte: _,
647
+ } => {
648
+ // `type_index` is the index of the function's signature and
649
+ // `table_index` is the index of the table to search the function
650
+ // in.
651
+ let (sigref, num_args) = state.get_indirect_sig(builder.func, *type_index, environ)?;
652
+ let table = state.get_or_create_table(builder.func, *table_index, environ)?;
653
+ let callee = state.pop1();
654
+
655
+ // Bitcast any vector arguments to their default type, I8X16, before calling.
656
+ let args = state.peekn_mut(num_args);
657
+ bitcast_wasm_params(environ, sigref, args, builder);
658
+
659
+ let call = environ.translate_call_indirect(
660
+ builder,
661
+ TableIndex::from_u32(*table_index),
662
+ table,
663
+ TypeIndex::from_u32(*type_index),
664
+ sigref,
665
+ callee,
666
+ state.peekn(num_args),
667
+ )?;
668
+ let inst_results = builder.inst_results(call);
669
+ debug_assert_eq!(
670
+ inst_results.len(),
671
+ builder.func.dfg.signatures[sigref].returns.len(),
672
+ "translate_call_indirect results should match the call signature"
673
+ );
674
+ state.popn(num_args);
675
+ state.pushn(inst_results);
676
+ }
677
+ /******************************* Memory management ***********************************
678
+ * Memory management is handled by environment. It is usually translated into calls to
679
+ * special functions.
680
+ ************************************************************************************/
681
+ Operator::MemoryGrow { mem, mem_byte: _ } => {
682
+ // The WebAssembly MVP only supports one linear memory, but we expect the reserved
683
+ // argument to be a memory index.
684
+ let heap_index = MemoryIndex::from_u32(*mem);
685
+ let heap = state.get_heap(builder.func, *mem, environ)?;
686
+ let val = state.pop1();
687
+ state.push1(environ.translate_memory_grow(builder.cursor(), heap_index, heap, val)?)
688
+ }
689
+ Operator::MemorySize { mem, mem_byte: _ } => {
690
+ let heap_index = MemoryIndex::from_u32(*mem);
691
+ let heap = state.get_heap(builder.func, *mem, environ)?;
692
+ state.push1(environ.translate_memory_size(builder.cursor(), heap_index, heap)?);
693
+ }
694
+ /******************************* Load instructions ***********************************
695
+ * Wasm specifies an integer alignment flag but we drop it in Cranelift.
696
+ * The memory base address is provided by the environment.
697
+ ************************************************************************************/
698
+ Operator::I32Load8U { memarg } => {
699
+ unwrap_or_return_unreachable_state!(
700
+ state,
701
+ translate_load(memarg, ir::Opcode::Uload8, I32, builder, state, environ)?
702
+ );
703
+ }
704
+ Operator::I32Load16U { memarg } => {
705
+ unwrap_or_return_unreachable_state!(
706
+ state,
707
+ translate_load(memarg, ir::Opcode::Uload16, I32, builder, state, environ)?
708
+ );
709
+ }
710
+ Operator::I32Load8S { memarg } => {
711
+ unwrap_or_return_unreachable_state!(
712
+ state,
713
+ translate_load(memarg, ir::Opcode::Sload8, I32, builder, state, environ)?
714
+ );
715
+ }
716
+ Operator::I32Load16S { memarg } => {
717
+ unwrap_or_return_unreachable_state!(
718
+ state,
719
+ translate_load(memarg, ir::Opcode::Sload16, I32, builder, state, environ)?
720
+ );
721
+ }
722
+ Operator::I64Load8U { memarg } => {
723
+ unwrap_or_return_unreachable_state!(
724
+ state,
725
+ translate_load(memarg, ir::Opcode::Uload8, I64, builder, state, environ)?
726
+ );
727
+ }
728
+ Operator::I64Load16U { memarg } => {
729
+ unwrap_or_return_unreachable_state!(
730
+ state,
731
+ translate_load(memarg, ir::Opcode::Uload16, I64, builder, state, environ)?
732
+ );
733
+ }
734
+ Operator::I64Load8S { memarg } => {
735
+ unwrap_or_return_unreachable_state!(
736
+ state,
737
+ translate_load(memarg, ir::Opcode::Sload8, I64, builder, state, environ)?
738
+ );
739
+ }
740
+ Operator::I64Load16S { memarg } => {
741
+ unwrap_or_return_unreachable_state!(
742
+ state,
743
+ translate_load(memarg, ir::Opcode::Sload16, I64, builder, state, environ)?
744
+ );
745
+ }
746
+ Operator::I64Load32S { memarg } => {
747
+ unwrap_or_return_unreachable_state!(
748
+ state,
749
+ translate_load(memarg, ir::Opcode::Sload32, I64, builder, state, environ)?
750
+ );
751
+ }
752
+ Operator::I64Load32U { memarg } => {
753
+ unwrap_or_return_unreachable_state!(
754
+ state,
755
+ translate_load(memarg, ir::Opcode::Uload32, I64, builder, state, environ)?
756
+ );
757
+ }
758
+ Operator::I32Load { memarg } => {
759
+ unwrap_or_return_unreachable_state!(
760
+ state,
761
+ translate_load(memarg, ir::Opcode::Load, I32, builder, state, environ)?
762
+ );
763
+ }
764
+ Operator::F32Load { memarg } => {
765
+ unwrap_or_return_unreachable_state!(
766
+ state,
767
+ translate_load(memarg, ir::Opcode::Load, F32, builder, state, environ)?
768
+ );
769
+ }
770
+ Operator::I64Load { memarg } => {
771
+ unwrap_or_return_unreachable_state!(
772
+ state,
773
+ translate_load(memarg, ir::Opcode::Load, I64, builder, state, environ)?
774
+ );
775
+ }
776
+ Operator::F64Load { memarg } => {
777
+ unwrap_or_return_unreachable_state!(
778
+ state,
779
+ translate_load(memarg, ir::Opcode::Load, F64, builder, state, environ)?
780
+ );
781
+ }
782
+ Operator::V128Load { memarg } => {
783
+ unwrap_or_return_unreachable_state!(
784
+ state,
785
+ translate_load(memarg, ir::Opcode::Load, I8X16, builder, state, environ)?
786
+ );
787
+ }
788
+ Operator::V128Load8x8S { memarg } => {
789
+ let (flags, base) = unwrap_or_return_unreachable_state!(
790
+ state,
791
+ prepare_addr(memarg, 8, builder, state, environ)?
792
+ );
793
+ let loaded = builder.ins().sload8x8(flags, base, 0);
794
+ state.push1(loaded);
795
+ }
796
+ Operator::V128Load8x8U { memarg } => {
797
+ let (flags, base) = unwrap_or_return_unreachable_state!(
798
+ state,
799
+ prepare_addr(memarg, 8, builder, state, environ)?
800
+ );
801
+ let loaded = builder.ins().uload8x8(flags, base, 0);
802
+ state.push1(loaded);
803
+ }
804
+ Operator::V128Load16x4S { memarg } => {
805
+ let (flags, base) = unwrap_or_return_unreachable_state!(
806
+ state,
807
+ prepare_addr(memarg, 8, builder, state, environ)?
808
+ );
809
+ let loaded = builder.ins().sload16x4(flags, base, 0);
810
+ state.push1(loaded);
811
+ }
812
+ Operator::V128Load16x4U { memarg } => {
813
+ let (flags, base) = unwrap_or_return_unreachable_state!(
814
+ state,
815
+ prepare_addr(memarg, 8, builder, state, environ)?
816
+ );
817
+ let loaded = builder.ins().uload16x4(flags, base, 0);
818
+ state.push1(loaded);
819
+ }
820
+ Operator::V128Load32x2S { memarg } => {
821
+ let (flags, base) = unwrap_or_return_unreachable_state!(
822
+ state,
823
+ prepare_addr(memarg, 8, builder, state, environ)?
824
+ );
825
+ let loaded = builder.ins().sload32x2(flags, base, 0);
826
+ state.push1(loaded);
827
+ }
828
+ Operator::V128Load32x2U { memarg } => {
829
+ let (flags, base) = unwrap_or_return_unreachable_state!(
830
+ state,
831
+ prepare_addr(memarg, 8, builder, state, environ)?
832
+ );
833
+ let loaded = builder.ins().uload32x2(flags, base, 0);
834
+ state.push1(loaded);
835
+ }
836
+ /****************************** Store instructions ***********************************
837
+ * Wasm specifies an integer alignment flag but we drop it in Cranelift.
838
+ * The memory base address is provided by the environment.
839
+ ************************************************************************************/
840
+ Operator::I32Store { memarg }
841
+ | Operator::I64Store { memarg }
842
+ | Operator::F32Store { memarg }
843
+ | Operator::F64Store { memarg } => {
844
+ translate_store(memarg, ir::Opcode::Store, builder, state, environ)?;
845
+ }
846
+ Operator::I32Store8 { memarg } | Operator::I64Store8 { memarg } => {
847
+ translate_store(memarg, ir::Opcode::Istore8, builder, state, environ)?;
848
+ }
849
+ Operator::I32Store16 { memarg } | Operator::I64Store16 { memarg } => {
850
+ translate_store(memarg, ir::Opcode::Istore16, builder, state, environ)?;
851
+ }
852
+ Operator::I64Store32 { memarg } => {
853
+ translate_store(memarg, ir::Opcode::Istore32, builder, state, environ)?;
854
+ }
855
+ Operator::V128Store { memarg } => {
856
+ translate_store(memarg, ir::Opcode::Store, builder, state, environ)?;
857
+ }
858
+ /****************************** Nullary Operators ************************************/
859
+ Operator::I32Const { value } => state.push1(builder.ins().iconst(I32, i64::from(*value))),
860
+ Operator::I64Const { value } => state.push1(builder.ins().iconst(I64, *value)),
861
+ Operator::F32Const { value } => {
862
+ state.push1(builder.ins().f32const(f32_translation(*value)));
863
+ }
864
+ Operator::F64Const { value } => {
865
+ state.push1(builder.ins().f64const(f64_translation(*value)));
866
+ }
867
+ /******************************* Unary Operators *************************************/
868
+ Operator::I32Clz | Operator::I64Clz => {
869
+ let arg = state.pop1();
870
+ state.push1(builder.ins().clz(arg));
871
+ }
872
+ Operator::I32Ctz | Operator::I64Ctz => {
873
+ let arg = state.pop1();
874
+ state.push1(builder.ins().ctz(arg));
875
+ }
876
+ Operator::I32Popcnt | Operator::I64Popcnt => {
877
+ let arg = state.pop1();
878
+ state.push1(builder.ins().popcnt(arg));
879
+ }
880
+ Operator::I64ExtendI32S => {
881
+ let val = state.pop1();
882
+ state.push1(builder.ins().sextend(I64, val));
883
+ }
884
+ Operator::I64ExtendI32U => {
885
+ let val = state.pop1();
886
+ state.push1(builder.ins().uextend(I64, val));
887
+ }
888
+ Operator::I32WrapI64 => {
889
+ let val = state.pop1();
890
+ state.push1(builder.ins().ireduce(I32, val));
891
+ }
892
+ Operator::F32Sqrt | Operator::F64Sqrt => {
893
+ let arg = state.pop1();
894
+ state.push1(builder.ins().sqrt(arg));
895
+ }
896
+ Operator::F32Ceil | Operator::F64Ceil => {
897
+ let arg = state.pop1();
898
+ state.push1(builder.ins().ceil(arg));
899
+ }
900
+ Operator::F32Floor | Operator::F64Floor => {
901
+ let arg = state.pop1();
902
+ state.push1(builder.ins().floor(arg));
903
+ }
904
+ Operator::F32Trunc | Operator::F64Trunc => {
905
+ let arg = state.pop1();
906
+ state.push1(builder.ins().trunc(arg));
907
+ }
908
+ Operator::F32Nearest | Operator::F64Nearest => {
909
+ let arg = state.pop1();
910
+ state.push1(builder.ins().nearest(arg));
911
+ }
912
+ Operator::F32Abs | Operator::F64Abs => {
913
+ let val = state.pop1();
914
+ state.push1(builder.ins().fabs(val));
915
+ }
916
+ Operator::F32Neg | Operator::F64Neg => {
917
+ let arg = state.pop1();
918
+ state.push1(builder.ins().fneg(arg));
919
+ }
920
+ Operator::F64ConvertI64U | Operator::F64ConvertI32U => {
921
+ let val = state.pop1();
922
+ state.push1(builder.ins().fcvt_from_uint(F64, val));
923
+ }
924
+ Operator::F64ConvertI64S | Operator::F64ConvertI32S => {
925
+ let val = state.pop1();
926
+ state.push1(builder.ins().fcvt_from_sint(F64, val));
927
+ }
928
+ Operator::F32ConvertI64S | Operator::F32ConvertI32S => {
929
+ let val = state.pop1();
930
+ state.push1(builder.ins().fcvt_from_sint(F32, val));
931
+ }
932
+ Operator::F32ConvertI64U | Operator::F32ConvertI32U => {
933
+ let val = state.pop1();
934
+ state.push1(builder.ins().fcvt_from_uint(F32, val));
935
+ }
936
+ Operator::F64PromoteF32 => {
937
+ let val = state.pop1();
938
+ state.push1(builder.ins().fpromote(F64, val));
939
+ }
940
+ Operator::F32DemoteF64 => {
941
+ let val = state.pop1();
942
+ state.push1(builder.ins().fdemote(F32, val));
943
+ }
944
+ Operator::I64TruncF64S | Operator::I64TruncF32S => {
945
+ let val = state.pop1();
946
+ state.push1(builder.ins().fcvt_to_sint(I64, val));
947
+ }
948
+ Operator::I32TruncF64S | Operator::I32TruncF32S => {
949
+ let val = state.pop1();
950
+ state.push1(builder.ins().fcvt_to_sint(I32, val));
951
+ }
952
+ Operator::I64TruncF64U | Operator::I64TruncF32U => {
953
+ let val = state.pop1();
954
+ state.push1(builder.ins().fcvt_to_uint(I64, val));
955
+ }
956
+ Operator::I32TruncF64U | Operator::I32TruncF32U => {
957
+ let val = state.pop1();
958
+ state.push1(builder.ins().fcvt_to_uint(I32, val));
959
+ }
960
+ Operator::I64TruncSatF64S | Operator::I64TruncSatF32S => {
961
+ let val = state.pop1();
962
+ state.push1(builder.ins().fcvt_to_sint_sat(I64, val));
963
+ }
964
+ Operator::I32TruncSatF64S | Operator::I32TruncSatF32S => {
965
+ let val = state.pop1();
966
+ state.push1(builder.ins().fcvt_to_sint_sat(I32, val));
967
+ }
968
+ Operator::I64TruncSatF64U | Operator::I64TruncSatF32U => {
969
+ let val = state.pop1();
970
+ state.push1(builder.ins().fcvt_to_uint_sat(I64, val));
971
+ }
972
+ Operator::I32TruncSatF64U | Operator::I32TruncSatF32U => {
973
+ let val = state.pop1();
974
+ state.push1(builder.ins().fcvt_to_uint_sat(I32, val));
975
+ }
976
+ Operator::F32ReinterpretI32 => {
977
+ let val = state.pop1();
978
+ state.push1(builder.ins().bitcast(F32, MemFlags::new(), val));
979
+ }
980
+ Operator::F64ReinterpretI64 => {
981
+ let val = state.pop1();
982
+ state.push1(builder.ins().bitcast(F64, MemFlags::new(), val));
983
+ }
984
+ Operator::I32ReinterpretF32 => {
985
+ let val = state.pop1();
986
+ state.push1(builder.ins().bitcast(I32, MemFlags::new(), val));
987
+ }
988
+ Operator::I64ReinterpretF64 => {
989
+ let val = state.pop1();
990
+ state.push1(builder.ins().bitcast(I64, MemFlags::new(), val));
991
+ }
992
+ Operator::I32Extend8S => {
993
+ let val = state.pop1();
994
+ state.push1(builder.ins().ireduce(I8, val));
995
+ let val = state.pop1();
996
+ state.push1(builder.ins().sextend(I32, val));
997
+ }
998
+ Operator::I32Extend16S => {
999
+ let val = state.pop1();
1000
+ state.push1(builder.ins().ireduce(I16, val));
1001
+ let val = state.pop1();
1002
+ state.push1(builder.ins().sextend(I32, val));
1003
+ }
1004
+ Operator::I64Extend8S => {
1005
+ let val = state.pop1();
1006
+ state.push1(builder.ins().ireduce(I8, val));
1007
+ let val = state.pop1();
1008
+ state.push1(builder.ins().sextend(I64, val));
1009
+ }
1010
+ Operator::I64Extend16S => {
1011
+ let val = state.pop1();
1012
+ state.push1(builder.ins().ireduce(I16, val));
1013
+ let val = state.pop1();
1014
+ state.push1(builder.ins().sextend(I64, val));
1015
+ }
1016
+ Operator::I64Extend32S => {
1017
+ let val = state.pop1();
1018
+ state.push1(builder.ins().ireduce(I32, val));
1019
+ let val = state.pop1();
1020
+ state.push1(builder.ins().sextend(I64, val));
1021
+ }
1022
+ /****************************** Binary Operators ************************************/
1023
+ Operator::I32Add | Operator::I64Add => {
1024
+ let (arg1, arg2) = state.pop2();
1025
+ state.push1(builder.ins().iadd(arg1, arg2));
1026
+ }
1027
+ Operator::I32And | Operator::I64And => {
1028
+ let (arg1, arg2) = state.pop2();
1029
+ state.push1(builder.ins().band(arg1, arg2));
1030
+ }
1031
+ Operator::I32Or | Operator::I64Or => {
1032
+ let (arg1, arg2) = state.pop2();
1033
+ state.push1(builder.ins().bor(arg1, arg2));
1034
+ }
1035
+ Operator::I32Xor | Operator::I64Xor => {
1036
+ let (arg1, arg2) = state.pop2();
1037
+ state.push1(builder.ins().bxor(arg1, arg2));
1038
+ }
1039
+ Operator::I32Shl | Operator::I64Shl => {
1040
+ let (arg1, arg2) = state.pop2();
1041
+ state.push1(builder.ins().ishl(arg1, arg2));
1042
+ }
1043
+ Operator::I32ShrS | Operator::I64ShrS => {
1044
+ let (arg1, arg2) = state.pop2();
1045
+ state.push1(builder.ins().sshr(arg1, arg2));
1046
+ }
1047
+ Operator::I32ShrU | Operator::I64ShrU => {
1048
+ let (arg1, arg2) = state.pop2();
1049
+ state.push1(builder.ins().ushr(arg1, arg2));
1050
+ }
1051
+ Operator::I32Rotl | Operator::I64Rotl => {
1052
+ let (arg1, arg2) = state.pop2();
1053
+ state.push1(builder.ins().rotl(arg1, arg2));
1054
+ }
1055
+ Operator::I32Rotr | Operator::I64Rotr => {
1056
+ let (arg1, arg2) = state.pop2();
1057
+ state.push1(builder.ins().rotr(arg1, arg2));
1058
+ }
1059
+ Operator::F32Add | Operator::F64Add => {
1060
+ let (arg1, arg2) = state.pop2();
1061
+ state.push1(builder.ins().fadd(arg1, arg2));
1062
+ }
1063
+ Operator::I32Sub | Operator::I64Sub => {
1064
+ let (arg1, arg2) = state.pop2();
1065
+ state.push1(builder.ins().isub(arg1, arg2));
1066
+ }
1067
+ Operator::F32Sub | Operator::F64Sub => {
1068
+ let (arg1, arg2) = state.pop2();
1069
+ state.push1(builder.ins().fsub(arg1, arg2));
1070
+ }
1071
+ Operator::I32Mul | Operator::I64Mul => {
1072
+ let (arg1, arg2) = state.pop2();
1073
+ state.push1(builder.ins().imul(arg1, arg2));
1074
+ }
1075
+ Operator::F32Mul | Operator::F64Mul => {
1076
+ let (arg1, arg2) = state.pop2();
1077
+ state.push1(builder.ins().fmul(arg1, arg2));
1078
+ }
1079
+ Operator::F32Div | Operator::F64Div => {
1080
+ let (arg1, arg2) = state.pop2();
1081
+ state.push1(builder.ins().fdiv(arg1, arg2));
1082
+ }
1083
+ Operator::I32DivS | Operator::I64DivS => {
1084
+ let (arg1, arg2) = state.pop2();
1085
+ state.push1(builder.ins().sdiv(arg1, arg2));
1086
+ }
1087
+ Operator::I32DivU | Operator::I64DivU => {
1088
+ let (arg1, arg2) = state.pop2();
1089
+ state.push1(builder.ins().udiv(arg1, arg2));
1090
+ }
1091
+ Operator::I32RemS | Operator::I64RemS => {
1092
+ let (arg1, arg2) = state.pop2();
1093
+ state.push1(builder.ins().srem(arg1, arg2));
1094
+ }
1095
+ Operator::I32RemU | Operator::I64RemU => {
1096
+ let (arg1, arg2) = state.pop2();
1097
+ state.push1(builder.ins().urem(arg1, arg2));
1098
+ }
1099
+ Operator::F32Min | Operator::F64Min => {
1100
+ let (arg1, arg2) = state.pop2();
1101
+ state.push1(builder.ins().fmin(arg1, arg2));
1102
+ }
1103
+ Operator::F32Max | Operator::F64Max => {
1104
+ let (arg1, arg2) = state.pop2();
1105
+ state.push1(builder.ins().fmax(arg1, arg2));
1106
+ }
1107
+ Operator::F32Copysign | Operator::F64Copysign => {
1108
+ let (arg1, arg2) = state.pop2();
1109
+ state.push1(builder.ins().fcopysign(arg1, arg2));
1110
+ }
1111
+ /**************************** Comparison Operators **********************************/
1112
+ Operator::I32LtS | Operator::I64LtS => {
1113
+ translate_icmp(IntCC::SignedLessThan, builder, state)
1114
+ }
1115
+ Operator::I32LtU | Operator::I64LtU => {
1116
+ translate_icmp(IntCC::UnsignedLessThan, builder, state)
1117
+ }
1118
+ Operator::I32LeS | Operator::I64LeS => {
1119
+ translate_icmp(IntCC::SignedLessThanOrEqual, builder, state)
1120
+ }
1121
+ Operator::I32LeU | Operator::I64LeU => {
1122
+ translate_icmp(IntCC::UnsignedLessThanOrEqual, builder, state)
1123
+ }
1124
+ Operator::I32GtS | Operator::I64GtS => {
1125
+ translate_icmp(IntCC::SignedGreaterThan, builder, state)
1126
+ }
1127
+ Operator::I32GtU | Operator::I64GtU => {
1128
+ translate_icmp(IntCC::UnsignedGreaterThan, builder, state)
1129
+ }
1130
+ Operator::I32GeS | Operator::I64GeS => {
1131
+ translate_icmp(IntCC::SignedGreaterThanOrEqual, builder, state)
1132
+ }
1133
+ Operator::I32GeU | Operator::I64GeU => {
1134
+ translate_icmp(IntCC::UnsignedGreaterThanOrEqual, builder, state)
1135
+ }
1136
+ Operator::I32Eqz | Operator::I64Eqz => {
1137
+ let arg = state.pop1();
1138
+ let val = builder.ins().icmp_imm(IntCC::Equal, arg, 0);
1139
+ state.push1(builder.ins().uextend(I32, val));
1140
+ }
1141
+ Operator::I32Eq | Operator::I64Eq => translate_icmp(IntCC::Equal, builder, state),
1142
+ Operator::F32Eq | Operator::F64Eq => translate_fcmp(FloatCC::Equal, builder, state),
1143
+ Operator::I32Ne | Operator::I64Ne => translate_icmp(IntCC::NotEqual, builder, state),
1144
+ Operator::F32Ne | Operator::F64Ne => translate_fcmp(FloatCC::NotEqual, builder, state),
1145
+ Operator::F32Gt | Operator::F64Gt => translate_fcmp(FloatCC::GreaterThan, builder, state),
1146
+ Operator::F32Ge | Operator::F64Ge => {
1147
+ translate_fcmp(FloatCC::GreaterThanOrEqual, builder, state)
1148
+ }
1149
+ Operator::F32Lt | Operator::F64Lt => translate_fcmp(FloatCC::LessThan, builder, state),
1150
+ Operator::F32Le | Operator::F64Le => {
1151
+ translate_fcmp(FloatCC::LessThanOrEqual, builder, state)
1152
+ }
1153
+ Operator::RefNull { hty } => {
1154
+ let hty = environ.convert_heap_type(*hty);
1155
+ state.push1(environ.translate_ref_null(builder.cursor(), hty)?)
1156
+ }
1157
+ Operator::RefIsNull => {
1158
+ let value = state.pop1();
1159
+ state.push1(environ.translate_ref_is_null(builder.cursor(), value)?);
1160
+ }
1161
+ Operator::RefFunc { function_index } => {
1162
+ let index = FuncIndex::from_u32(*function_index);
1163
+ state.push1(environ.translate_ref_func(builder.cursor(), index)?);
1164
+ }
1165
+ Operator::MemoryAtomicWait32 { memarg } | Operator::MemoryAtomicWait64 { memarg } => {
1166
+ // The WebAssembly MVP only supports one linear memory and
1167
+ // wasmparser will ensure that the memory indices specified are
1168
+ // zero.
1169
+ let implied_ty = match op {
1170
+ Operator::MemoryAtomicWait64 { .. } => I64,
1171
+ Operator::MemoryAtomicWait32 { .. } => I32,
1172
+ _ => unreachable!(),
1173
+ };
1174
+ let heap_index = MemoryIndex::from_u32(memarg.memory);
1175
+ let heap = state.get_heap(builder.func, memarg.memory, environ)?;
1176
+ let timeout = state.pop1(); // 64 (fixed)
1177
+ let expected = state.pop1(); // 32 or 64 (per the `Ixx` in `IxxAtomicWait`)
1178
+ assert!(builder.func.dfg.value_type(expected) == implied_ty);
1179
+ let addr = state.pop1();
1180
+ let effective_addr = if memarg.offset == 0 {
1181
+ addr
1182
+ } else {
1183
+ let index_type = environ.heaps()[heap].index_type;
1184
+ let offset = builder.ins().iconst(index_type, memarg.offset as i64);
1185
+ builder
1186
+ .ins()
1187
+ .uadd_overflow_trap(addr, offset, ir::TrapCode::HeapOutOfBounds)
1188
+ };
1189
+ // `fn translate_atomic_wait` can inspect the type of `expected` to figure out what
1190
+ // code it needs to generate, if it wants.
1191
+ let res = environ.translate_atomic_wait(
1192
+ builder.cursor(),
1193
+ heap_index,
1194
+ heap,
1195
+ effective_addr,
1196
+ expected,
1197
+ timeout,
1198
+ )?;
1199
+ state.push1(res);
1200
+ }
1201
+ Operator::MemoryAtomicNotify { memarg } => {
1202
+ let heap_index = MemoryIndex::from_u32(memarg.memory);
1203
+ let heap = state.get_heap(builder.func, memarg.memory, environ)?;
1204
+ let count = state.pop1(); // 32 (fixed)
1205
+ let addr = state.pop1();
1206
+ let effective_addr = if memarg.offset == 0 {
1207
+ addr
1208
+ } else {
1209
+ let index_type = environ.heaps()[heap].index_type;
1210
+ let offset = builder.ins().iconst(index_type, memarg.offset as i64);
1211
+ builder
1212
+ .ins()
1213
+ .uadd_overflow_trap(addr, offset, ir::TrapCode::HeapOutOfBounds)
1214
+ };
1215
+ let res = environ.translate_atomic_notify(
1216
+ builder.cursor(),
1217
+ heap_index,
1218
+ heap,
1219
+ effective_addr,
1220
+ count,
1221
+ )?;
1222
+ state.push1(res);
1223
+ }
1224
+ Operator::I32AtomicLoad { memarg } => {
1225
+ translate_atomic_load(I32, I32, memarg, builder, state, environ)?
1226
+ }
1227
+ Operator::I64AtomicLoad { memarg } => {
1228
+ translate_atomic_load(I64, I64, memarg, builder, state, environ)?
1229
+ }
1230
+ Operator::I32AtomicLoad8U { memarg } => {
1231
+ translate_atomic_load(I32, I8, memarg, builder, state, environ)?
1232
+ }
1233
+ Operator::I32AtomicLoad16U { memarg } => {
1234
+ translate_atomic_load(I32, I16, memarg, builder, state, environ)?
1235
+ }
1236
+ Operator::I64AtomicLoad8U { memarg } => {
1237
+ translate_atomic_load(I64, I8, memarg, builder, state, environ)?
1238
+ }
1239
+ Operator::I64AtomicLoad16U { memarg } => {
1240
+ translate_atomic_load(I64, I16, memarg, builder, state, environ)?
1241
+ }
1242
+ Operator::I64AtomicLoad32U { memarg } => {
1243
+ translate_atomic_load(I64, I32, memarg, builder, state, environ)?
1244
+ }
1245
+
1246
+ Operator::I32AtomicStore { memarg } => {
1247
+ translate_atomic_store(I32, memarg, builder, state, environ)?
1248
+ }
1249
+ Operator::I64AtomicStore { memarg } => {
1250
+ translate_atomic_store(I64, memarg, builder, state, environ)?
1251
+ }
1252
+ Operator::I32AtomicStore8 { memarg } => {
1253
+ translate_atomic_store(I8, memarg, builder, state, environ)?
1254
+ }
1255
+ Operator::I32AtomicStore16 { memarg } => {
1256
+ translate_atomic_store(I16, memarg, builder, state, environ)?
1257
+ }
1258
+ Operator::I64AtomicStore8 { memarg } => {
1259
+ translate_atomic_store(I8, memarg, builder, state, environ)?
1260
+ }
1261
+ Operator::I64AtomicStore16 { memarg } => {
1262
+ translate_atomic_store(I16, memarg, builder, state, environ)?
1263
+ }
1264
+ Operator::I64AtomicStore32 { memarg } => {
1265
+ translate_atomic_store(I32, memarg, builder, state, environ)?
1266
+ }
1267
+
1268
+ Operator::I32AtomicRmwAdd { memarg } => {
1269
+ translate_atomic_rmw(I32, I32, AtomicRmwOp::Add, memarg, builder, state, environ)?
1270
+ }
1271
+ Operator::I64AtomicRmwAdd { memarg } => {
1272
+ translate_atomic_rmw(I64, I64, AtomicRmwOp::Add, memarg, builder, state, environ)?
1273
+ }
1274
+ Operator::I32AtomicRmw8AddU { memarg } => {
1275
+ translate_atomic_rmw(I32, I8, AtomicRmwOp::Add, memarg, builder, state, environ)?
1276
+ }
1277
+ Operator::I32AtomicRmw16AddU { memarg } => {
1278
+ translate_atomic_rmw(I32, I16, AtomicRmwOp::Add, memarg, builder, state, environ)?
1279
+ }
1280
+ Operator::I64AtomicRmw8AddU { memarg } => {
1281
+ translate_atomic_rmw(I64, I8, AtomicRmwOp::Add, memarg, builder, state, environ)?
1282
+ }
1283
+ Operator::I64AtomicRmw16AddU { memarg } => {
1284
+ translate_atomic_rmw(I64, I16, AtomicRmwOp::Add, memarg, builder, state, environ)?
1285
+ }
1286
+ Operator::I64AtomicRmw32AddU { memarg } => {
1287
+ translate_atomic_rmw(I64, I32, AtomicRmwOp::Add, memarg, builder, state, environ)?
1288
+ }
1289
+
1290
+ Operator::I32AtomicRmwSub { memarg } => {
1291
+ translate_atomic_rmw(I32, I32, AtomicRmwOp::Sub, memarg, builder, state, environ)?
1292
+ }
1293
+ Operator::I64AtomicRmwSub { memarg } => {
1294
+ translate_atomic_rmw(I64, I64, AtomicRmwOp::Sub, memarg, builder, state, environ)?
1295
+ }
1296
+ Operator::I32AtomicRmw8SubU { memarg } => {
1297
+ translate_atomic_rmw(I32, I8, AtomicRmwOp::Sub, memarg, builder, state, environ)?
1298
+ }
1299
+ Operator::I32AtomicRmw16SubU { memarg } => {
1300
+ translate_atomic_rmw(I32, I16, AtomicRmwOp::Sub, memarg, builder, state, environ)?
1301
+ }
1302
+ Operator::I64AtomicRmw8SubU { memarg } => {
1303
+ translate_atomic_rmw(I64, I8, AtomicRmwOp::Sub, memarg, builder, state, environ)?
1304
+ }
1305
+ Operator::I64AtomicRmw16SubU { memarg } => {
1306
+ translate_atomic_rmw(I64, I16, AtomicRmwOp::Sub, memarg, builder, state, environ)?
1307
+ }
1308
+ Operator::I64AtomicRmw32SubU { memarg } => {
1309
+ translate_atomic_rmw(I64, I32, AtomicRmwOp::Sub, memarg, builder, state, environ)?
1310
+ }
1311
+
1312
+ Operator::I32AtomicRmwAnd { memarg } => {
1313
+ translate_atomic_rmw(I32, I32, AtomicRmwOp::And, memarg, builder, state, environ)?
1314
+ }
1315
+ Operator::I64AtomicRmwAnd { memarg } => {
1316
+ translate_atomic_rmw(I64, I64, AtomicRmwOp::And, memarg, builder, state, environ)?
1317
+ }
1318
+ Operator::I32AtomicRmw8AndU { memarg } => {
1319
+ translate_atomic_rmw(I32, I8, AtomicRmwOp::And, memarg, builder, state, environ)?
1320
+ }
1321
+ Operator::I32AtomicRmw16AndU { memarg } => {
1322
+ translate_atomic_rmw(I32, I16, AtomicRmwOp::And, memarg, builder, state, environ)?
1323
+ }
1324
+ Operator::I64AtomicRmw8AndU { memarg } => {
1325
+ translate_atomic_rmw(I64, I8, AtomicRmwOp::And, memarg, builder, state, environ)?
1326
+ }
1327
+ Operator::I64AtomicRmw16AndU { memarg } => {
1328
+ translate_atomic_rmw(I64, I16, AtomicRmwOp::And, memarg, builder, state, environ)?
1329
+ }
1330
+ Operator::I64AtomicRmw32AndU { memarg } => {
1331
+ translate_atomic_rmw(I64, I32, AtomicRmwOp::And, memarg, builder, state, environ)?
1332
+ }
1333
+
1334
+ Operator::I32AtomicRmwOr { memarg } => {
1335
+ translate_atomic_rmw(I32, I32, AtomicRmwOp::Or, memarg, builder, state, environ)?
1336
+ }
1337
+ Operator::I64AtomicRmwOr { memarg } => {
1338
+ translate_atomic_rmw(I64, I64, AtomicRmwOp::Or, memarg, builder, state, environ)?
1339
+ }
1340
+ Operator::I32AtomicRmw8OrU { memarg } => {
1341
+ translate_atomic_rmw(I32, I8, AtomicRmwOp::Or, memarg, builder, state, environ)?
1342
+ }
1343
+ Operator::I32AtomicRmw16OrU { memarg } => {
1344
+ translate_atomic_rmw(I32, I16, AtomicRmwOp::Or, memarg, builder, state, environ)?
1345
+ }
1346
+ Operator::I64AtomicRmw8OrU { memarg } => {
1347
+ translate_atomic_rmw(I64, I8, AtomicRmwOp::Or, memarg, builder, state, environ)?
1348
+ }
1349
+ Operator::I64AtomicRmw16OrU { memarg } => {
1350
+ translate_atomic_rmw(I64, I16, AtomicRmwOp::Or, memarg, builder, state, environ)?
1351
+ }
1352
+ Operator::I64AtomicRmw32OrU { memarg } => {
1353
+ translate_atomic_rmw(I64, I32, AtomicRmwOp::Or, memarg, builder, state, environ)?
1354
+ }
1355
+
1356
+ Operator::I32AtomicRmwXor { memarg } => {
1357
+ translate_atomic_rmw(I32, I32, AtomicRmwOp::Xor, memarg, builder, state, environ)?
1358
+ }
1359
+ Operator::I64AtomicRmwXor { memarg } => {
1360
+ translate_atomic_rmw(I64, I64, AtomicRmwOp::Xor, memarg, builder, state, environ)?
1361
+ }
1362
+ Operator::I32AtomicRmw8XorU { memarg } => {
1363
+ translate_atomic_rmw(I32, I8, AtomicRmwOp::Xor, memarg, builder, state, environ)?
1364
+ }
1365
+ Operator::I32AtomicRmw16XorU { memarg } => {
1366
+ translate_atomic_rmw(I32, I16, AtomicRmwOp::Xor, memarg, builder, state, environ)?
1367
+ }
1368
+ Operator::I64AtomicRmw8XorU { memarg } => {
1369
+ translate_atomic_rmw(I64, I8, AtomicRmwOp::Xor, memarg, builder, state, environ)?
1370
+ }
1371
+ Operator::I64AtomicRmw16XorU { memarg } => {
1372
+ translate_atomic_rmw(I64, I16, AtomicRmwOp::Xor, memarg, builder, state, environ)?
1373
+ }
1374
+ Operator::I64AtomicRmw32XorU { memarg } => {
1375
+ translate_atomic_rmw(I64, I32, AtomicRmwOp::Xor, memarg, builder, state, environ)?
1376
+ }
1377
+
1378
+ Operator::I32AtomicRmwXchg { memarg } => {
1379
+ translate_atomic_rmw(I32, I32, AtomicRmwOp::Xchg, memarg, builder, state, environ)?
1380
+ }
1381
+ Operator::I64AtomicRmwXchg { memarg } => {
1382
+ translate_atomic_rmw(I64, I64, AtomicRmwOp::Xchg, memarg, builder, state, environ)?
1383
+ }
1384
+ Operator::I32AtomicRmw8XchgU { memarg } => {
1385
+ translate_atomic_rmw(I32, I8, AtomicRmwOp::Xchg, memarg, builder, state, environ)?
1386
+ }
1387
+ Operator::I32AtomicRmw16XchgU { memarg } => {
1388
+ translate_atomic_rmw(I32, I16, AtomicRmwOp::Xchg, memarg, builder, state, environ)?
1389
+ }
1390
+ Operator::I64AtomicRmw8XchgU { memarg } => {
1391
+ translate_atomic_rmw(I64, I8, AtomicRmwOp::Xchg, memarg, builder, state, environ)?
1392
+ }
1393
+ Operator::I64AtomicRmw16XchgU { memarg } => {
1394
+ translate_atomic_rmw(I64, I16, AtomicRmwOp::Xchg, memarg, builder, state, environ)?
1395
+ }
1396
+ Operator::I64AtomicRmw32XchgU { memarg } => {
1397
+ translate_atomic_rmw(I64, I32, AtomicRmwOp::Xchg, memarg, builder, state, environ)?
1398
+ }
1399
+
1400
+ Operator::I32AtomicRmwCmpxchg { memarg } => {
1401
+ translate_atomic_cas(I32, I32, memarg, builder, state, environ)?
1402
+ }
1403
+ Operator::I64AtomicRmwCmpxchg { memarg } => {
1404
+ translate_atomic_cas(I64, I64, memarg, builder, state, environ)?
1405
+ }
1406
+ Operator::I32AtomicRmw8CmpxchgU { memarg } => {
1407
+ translate_atomic_cas(I32, I8, memarg, builder, state, environ)?
1408
+ }
1409
+ Operator::I32AtomicRmw16CmpxchgU { memarg } => {
1410
+ translate_atomic_cas(I32, I16, memarg, builder, state, environ)?
1411
+ }
1412
+ Operator::I64AtomicRmw8CmpxchgU { memarg } => {
1413
+ translate_atomic_cas(I64, I8, memarg, builder, state, environ)?
1414
+ }
1415
+ Operator::I64AtomicRmw16CmpxchgU { memarg } => {
1416
+ translate_atomic_cas(I64, I16, memarg, builder, state, environ)?
1417
+ }
1418
+ Operator::I64AtomicRmw32CmpxchgU { memarg } => {
1419
+ translate_atomic_cas(I64, I32, memarg, builder, state, environ)?
1420
+ }
1421
+
1422
+ Operator::AtomicFence { .. } => {
1423
+ builder.ins().fence();
1424
+ }
1425
+ Operator::MemoryCopy { src_mem, dst_mem } => {
1426
+ let src_index = MemoryIndex::from_u32(*src_mem);
1427
+ let dst_index = MemoryIndex::from_u32(*dst_mem);
1428
+ let src_heap = state.get_heap(builder.func, *src_mem, environ)?;
1429
+ let dst_heap = state.get_heap(builder.func, *dst_mem, environ)?;
1430
+ let len = state.pop1();
1431
+ let src_pos = state.pop1();
1432
+ let dst_pos = state.pop1();
1433
+ environ.translate_memory_copy(
1434
+ builder.cursor(),
1435
+ src_index,
1436
+ src_heap,
1437
+ dst_index,
1438
+ dst_heap,
1439
+ dst_pos,
1440
+ src_pos,
1441
+ len,
1442
+ )?;
1443
+ }
1444
+ Operator::MemoryFill { mem } => {
1445
+ let heap_index = MemoryIndex::from_u32(*mem);
1446
+ let heap = state.get_heap(builder.func, *mem, environ)?;
1447
+ let len = state.pop1();
1448
+ let val = state.pop1();
1449
+ let dest = state.pop1();
1450
+ environ.translate_memory_fill(builder.cursor(), heap_index, heap, dest, val, len)?;
1451
+ }
1452
+ Operator::MemoryInit { data_index, mem } => {
1453
+ let heap_index = MemoryIndex::from_u32(*mem);
1454
+ let heap = state.get_heap(builder.func, *mem, environ)?;
1455
+ let len = state.pop1();
1456
+ let src = state.pop1();
1457
+ let dest = state.pop1();
1458
+ environ.translate_memory_init(
1459
+ builder.cursor(),
1460
+ heap_index,
1461
+ heap,
1462
+ *data_index,
1463
+ dest,
1464
+ src,
1465
+ len,
1466
+ )?;
1467
+ }
1468
+ Operator::DataDrop { data_index } => {
1469
+ environ.translate_data_drop(builder.cursor(), *data_index)?;
1470
+ }
1471
+ Operator::TableSize { table: index } => {
1472
+ let table = state.get_or_create_table(builder.func, *index, environ)?;
1473
+ state.push1(environ.translate_table_size(
1474
+ builder.cursor(),
1475
+ TableIndex::from_u32(*index),
1476
+ table,
1477
+ )?);
1478
+ }
1479
+ Operator::TableGrow { table: index } => {
1480
+ let table_index = TableIndex::from_u32(*index);
1481
+ let table = state.get_or_create_table(builder.func, *index, environ)?;
1482
+ let delta = state.pop1();
1483
+ let init_value = state.pop1();
1484
+ state.push1(environ.translate_table_grow(
1485
+ builder.cursor(),
1486
+ table_index,
1487
+ table,
1488
+ delta,
1489
+ init_value,
1490
+ )?);
1491
+ }
1492
+ Operator::TableGet { table: index } => {
1493
+ let table_index = TableIndex::from_u32(*index);
1494
+ let table = state.get_or_create_table(builder.func, *index, environ)?;
1495
+ let index = state.pop1();
1496
+ state.push1(environ.translate_table_get(builder, table_index, table, index)?);
1497
+ }
1498
+ Operator::TableSet { table: index } => {
1499
+ let table_index = TableIndex::from_u32(*index);
1500
+ let table = state.get_or_create_table(builder.func, *index, environ)?;
1501
+ let value = state.pop1();
1502
+ let index = state.pop1();
1503
+ environ.translate_table_set(builder, table_index, table, value, index)?;
1504
+ }
1505
+ Operator::TableCopy {
1506
+ dst_table: dst_table_index,
1507
+ src_table: src_table_index,
1508
+ } => {
1509
+ let dst_table = state.get_or_create_table(builder.func, *dst_table_index, environ)?;
1510
+ let src_table = state.get_or_create_table(builder.func, *src_table_index, environ)?;
1511
+ let len = state.pop1();
1512
+ let src = state.pop1();
1513
+ let dest = state.pop1();
1514
+ environ.translate_table_copy(
1515
+ builder.cursor(),
1516
+ TableIndex::from_u32(*dst_table_index),
1517
+ dst_table,
1518
+ TableIndex::from_u32(*src_table_index),
1519
+ src_table,
1520
+ dest,
1521
+ src,
1522
+ len,
1523
+ )?;
1524
+ }
1525
+ Operator::TableFill { table } => {
1526
+ let table_index = TableIndex::from_u32(*table);
1527
+ let len = state.pop1();
1528
+ let val = state.pop1();
1529
+ let dest = state.pop1();
1530
+ environ.translate_table_fill(builder.cursor(), table_index, dest, val, len)?;
1531
+ }
1532
+ Operator::TableInit {
1533
+ elem_index,
1534
+ table: table_index,
1535
+ } => {
1536
+ let table = state.get_or_create_table(builder.func, *table_index, environ)?;
1537
+ let len = state.pop1();
1538
+ let src = state.pop1();
1539
+ let dest = state.pop1();
1540
+ environ.translate_table_init(
1541
+ builder.cursor(),
1542
+ *elem_index,
1543
+ TableIndex::from_u32(*table_index),
1544
+ table,
1545
+ dest,
1546
+ src,
1547
+ len,
1548
+ )?;
1549
+ }
1550
+ Operator::ElemDrop { elem_index } => {
1551
+ environ.translate_elem_drop(builder.cursor(), *elem_index)?;
1552
+ }
1553
+ Operator::V128Const { value } => {
1554
+ let data = value.bytes().to_vec().into();
1555
+ let handle = builder.func.dfg.constants.insert(data);
1556
+ let value = builder.ins().vconst(I8X16, handle);
1557
+ // the v128.const is typed in CLIF as a I8x16 but bitcast to a different type
1558
+ // before use
1559
+ state.push1(value)
1560
+ }
1561
+ Operator::I8x16Splat | Operator::I16x8Splat => {
1562
+ let reduced = builder.ins().ireduce(type_of(op).lane_type(), state.pop1());
1563
+ let splatted = builder.ins().splat(type_of(op), reduced);
1564
+ state.push1(splatted)
1565
+ }
1566
+ Operator::I32x4Splat
1567
+ | Operator::I64x2Splat
1568
+ | Operator::F32x4Splat
1569
+ | Operator::F64x2Splat => {
1570
+ let splatted = builder.ins().splat(type_of(op), state.pop1());
1571
+ state.push1(splatted)
1572
+ }
1573
+ Operator::V128Load8Splat { memarg }
1574
+ | Operator::V128Load16Splat { memarg }
1575
+ | Operator::V128Load32Splat { memarg }
1576
+ | Operator::V128Load64Splat { memarg } => {
1577
+ unwrap_or_return_unreachable_state!(
1578
+ state,
1579
+ translate_load(
1580
+ memarg,
1581
+ ir::Opcode::Load,
1582
+ type_of(op).lane_type(),
1583
+ builder,
1584
+ state,
1585
+ environ,
1586
+ )?
1587
+ );
1588
+ let splatted = builder.ins().splat(type_of(op), state.pop1());
1589
+ state.push1(splatted)
1590
+ }
1591
+ Operator::V128Load32Zero { memarg } | Operator::V128Load64Zero { memarg } => {
1592
+ unwrap_or_return_unreachable_state!(
1593
+ state,
1594
+ translate_load(
1595
+ memarg,
1596
+ ir::Opcode::Load,
1597
+ type_of(op).lane_type(),
1598
+ builder,
1599
+ state,
1600
+ environ,
1601
+ )?
1602
+ );
1603
+ let as_vector = builder.ins().scalar_to_vector(type_of(op), state.pop1());
1604
+ state.push1(as_vector)
1605
+ }
1606
+ Operator::V128Load8Lane { memarg, lane }
1607
+ | Operator::V128Load16Lane { memarg, lane }
1608
+ | Operator::V128Load32Lane { memarg, lane }
1609
+ | Operator::V128Load64Lane { memarg, lane } => {
1610
+ let vector = pop1_with_bitcast(state, type_of(op), builder);
1611
+ unwrap_or_return_unreachable_state!(
1612
+ state,
1613
+ translate_load(
1614
+ memarg,
1615
+ ir::Opcode::Load,
1616
+ type_of(op).lane_type(),
1617
+ builder,
1618
+ state,
1619
+ environ,
1620
+ )?
1621
+ );
1622
+ let replacement = state.pop1();
1623
+ state.push1(builder.ins().insertlane(vector, replacement, *lane))
1624
+ }
1625
+ Operator::V128Store8Lane { memarg, lane }
1626
+ | Operator::V128Store16Lane { memarg, lane }
1627
+ | Operator::V128Store32Lane { memarg, lane }
1628
+ | Operator::V128Store64Lane { memarg, lane } => {
1629
+ let vector = pop1_with_bitcast(state, type_of(op), builder);
1630
+ state.push1(builder.ins().extractlane(vector, lane.clone()));
1631
+ translate_store(memarg, ir::Opcode::Store, builder, state, environ)?;
1632
+ }
1633
+ Operator::I8x16ExtractLaneS { lane } | Operator::I16x8ExtractLaneS { lane } => {
1634
+ let vector = pop1_with_bitcast(state, type_of(op), builder);
1635
+ let extracted = builder.ins().extractlane(vector, lane.clone());
1636
+ state.push1(builder.ins().sextend(I32, extracted))
1637
+ }
1638
+ Operator::I8x16ExtractLaneU { lane } | Operator::I16x8ExtractLaneU { lane } => {
1639
+ let vector = pop1_with_bitcast(state, type_of(op), builder);
1640
+ let extracted = builder.ins().extractlane(vector, lane.clone());
1641
+ state.push1(builder.ins().uextend(I32, extracted));
1642
+ // On x86, PEXTRB zeroes the upper bits of the destination register of extractlane so
1643
+ // uextend could be elided; for now, uextend is needed for Cranelift's type checks to
1644
+ // work.
1645
+ }
1646
+ Operator::I32x4ExtractLane { lane }
1647
+ | Operator::I64x2ExtractLane { lane }
1648
+ | Operator::F32x4ExtractLane { lane }
1649
+ | Operator::F64x2ExtractLane { lane } => {
1650
+ let vector = pop1_with_bitcast(state, type_of(op), builder);
1651
+ state.push1(builder.ins().extractlane(vector, lane.clone()))
1652
+ }
1653
+ Operator::I8x16ReplaceLane { lane } | Operator::I16x8ReplaceLane { lane } => {
1654
+ let (vector, replacement) = state.pop2();
1655
+ let ty = type_of(op);
1656
+ let reduced = builder.ins().ireduce(ty.lane_type(), replacement);
1657
+ let vector = optionally_bitcast_vector(vector, ty, builder);
1658
+ state.push1(builder.ins().insertlane(vector, reduced, *lane))
1659
+ }
1660
+ Operator::I32x4ReplaceLane { lane }
1661
+ | Operator::I64x2ReplaceLane { lane }
1662
+ | Operator::F32x4ReplaceLane { lane }
1663
+ | Operator::F64x2ReplaceLane { lane } => {
1664
+ let (vector, replacement) = state.pop2();
1665
+ let vector = optionally_bitcast_vector(vector, type_of(op), builder);
1666
+ state.push1(builder.ins().insertlane(vector, replacement, *lane))
1667
+ }
1668
+ Operator::I8x16Shuffle { lanes, .. } => {
1669
+ let (a, b) = pop2_with_bitcast(state, I8X16, builder);
1670
+ let lanes = ConstantData::from(lanes.as_ref());
1671
+ let mask = builder.func.dfg.immediates.push(lanes);
1672
+ let shuffled = builder.ins().shuffle(a, b, mask);
1673
+ state.push1(shuffled)
1674
+ // At this point the original types of a and b are lost; users of this value (i.e. this
1675
+ // WASM-to-CLIF translator) may need to bitcast for type-correctness. This is due
1676
+ // to WASM using the less specific v128 type for certain operations and more specific
1677
+ // types (e.g. i8x16) for others.
1678
+ }
1679
+ Operator::I8x16Swizzle => {
1680
+ let (a, b) = pop2_with_bitcast(state, I8X16, builder);
1681
+ state.push1(builder.ins().swizzle(a, b))
1682
+ }
1683
+ Operator::I8x16Add | Operator::I16x8Add | Operator::I32x4Add | Operator::I64x2Add => {
1684
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1685
+ state.push1(builder.ins().iadd(a, b))
1686
+ }
1687
+ Operator::I8x16AddSatS | Operator::I16x8AddSatS => {
1688
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1689
+ state.push1(builder.ins().sadd_sat(a, b))
1690
+ }
1691
+ Operator::I8x16AddSatU | Operator::I16x8AddSatU => {
1692
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1693
+ state.push1(builder.ins().uadd_sat(a, b))
1694
+ }
1695
+ Operator::I8x16Sub | Operator::I16x8Sub | Operator::I32x4Sub | Operator::I64x2Sub => {
1696
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1697
+ state.push1(builder.ins().isub(a, b))
1698
+ }
1699
+ Operator::I8x16SubSatS | Operator::I16x8SubSatS => {
1700
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1701
+ state.push1(builder.ins().ssub_sat(a, b))
1702
+ }
1703
+ Operator::I8x16SubSatU | Operator::I16x8SubSatU => {
1704
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1705
+ state.push1(builder.ins().usub_sat(a, b))
1706
+ }
1707
+ Operator::I8x16MinS | Operator::I16x8MinS | Operator::I32x4MinS => {
1708
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1709
+ state.push1(builder.ins().smin(a, b))
1710
+ }
1711
+ Operator::I8x16MinU | Operator::I16x8MinU | Operator::I32x4MinU => {
1712
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1713
+ state.push1(builder.ins().umin(a, b))
1714
+ }
1715
+ Operator::I8x16MaxS | Operator::I16x8MaxS | Operator::I32x4MaxS => {
1716
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1717
+ state.push1(builder.ins().smax(a, b))
1718
+ }
1719
+ Operator::I8x16MaxU | Operator::I16x8MaxU | Operator::I32x4MaxU => {
1720
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1721
+ state.push1(builder.ins().umax(a, b))
1722
+ }
1723
+ Operator::I8x16AvgrU | Operator::I16x8AvgrU => {
1724
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1725
+ state.push1(builder.ins().avg_round(a, b))
1726
+ }
1727
+ Operator::I8x16Neg | Operator::I16x8Neg | Operator::I32x4Neg | Operator::I64x2Neg => {
1728
+ let a = pop1_with_bitcast(state, type_of(op), builder);
1729
+ state.push1(builder.ins().ineg(a))
1730
+ }
1731
+ Operator::I8x16Abs | Operator::I16x8Abs | Operator::I32x4Abs | Operator::I64x2Abs => {
1732
+ let a = pop1_with_bitcast(state, type_of(op), builder);
1733
+ state.push1(builder.ins().iabs(a))
1734
+ }
1735
+ Operator::I16x8Mul | Operator::I32x4Mul | Operator::I64x2Mul => {
1736
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1737
+ state.push1(builder.ins().imul(a, b))
1738
+ }
1739
+ Operator::V128Or => {
1740
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1741
+ state.push1(builder.ins().bor(a, b))
1742
+ }
1743
+ Operator::V128Xor => {
1744
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1745
+ state.push1(builder.ins().bxor(a, b))
1746
+ }
1747
+ Operator::V128And => {
1748
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1749
+ state.push1(builder.ins().band(a, b))
1750
+ }
1751
+ Operator::V128AndNot => {
1752
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1753
+ state.push1(builder.ins().band_not(a, b))
1754
+ }
1755
+ Operator::V128Not => {
1756
+ let a = state.pop1();
1757
+ state.push1(builder.ins().bnot(a));
1758
+ }
1759
+ Operator::I8x16Shl | Operator::I16x8Shl | Operator::I32x4Shl | Operator::I64x2Shl => {
1760
+ let (a, b) = state.pop2();
1761
+ let bitcast_a = optionally_bitcast_vector(a, type_of(op), builder);
1762
+ // The spec expects to shift with `b mod lanewidth`; This is directly compatible
1763
+ // with cranelift's instruction.
1764
+ state.push1(builder.ins().ishl(bitcast_a, b))
1765
+ }
1766
+ Operator::I8x16ShrU | Operator::I16x8ShrU | Operator::I32x4ShrU | Operator::I64x2ShrU => {
1767
+ let (a, b) = state.pop2();
1768
+ let bitcast_a = optionally_bitcast_vector(a, type_of(op), builder);
1769
+ // The spec expects to shift with `b mod lanewidth`; This is directly compatible
1770
+ // with cranelift's instruction.
1771
+ state.push1(builder.ins().ushr(bitcast_a, b))
1772
+ }
1773
+ Operator::I8x16ShrS | Operator::I16x8ShrS | Operator::I32x4ShrS | Operator::I64x2ShrS => {
1774
+ let (a, b) = state.pop2();
1775
+ let bitcast_a = optionally_bitcast_vector(a, type_of(op), builder);
1776
+ // The spec expects to shift with `b mod lanewidth`; This is directly compatible
1777
+ // with cranelift's instruction.
1778
+ state.push1(builder.ins().sshr(bitcast_a, b))
1779
+ }
1780
+ Operator::V128Bitselect => {
1781
+ let (a, b, c) = pop3_with_bitcast(state, I8X16, builder);
1782
+ // The CLIF operand ordering is slightly different and the types of all three
1783
+ // operands must match (hence the bitcast).
1784
+ state.push1(builder.ins().bitselect(c, a, b))
1785
+ }
1786
+ Operator::V128AnyTrue => {
1787
+ let a = pop1_with_bitcast(state, type_of(op), builder);
1788
+ let bool_result = builder.ins().vany_true(a);
1789
+ state.push1(builder.ins().uextend(I32, bool_result))
1790
+ }
1791
+ Operator::I8x16AllTrue
1792
+ | Operator::I16x8AllTrue
1793
+ | Operator::I32x4AllTrue
1794
+ | Operator::I64x2AllTrue => {
1795
+ let a = pop1_with_bitcast(state, type_of(op), builder);
1796
+ let bool_result = builder.ins().vall_true(a);
1797
+ state.push1(builder.ins().uextend(I32, bool_result))
1798
+ }
1799
+ Operator::I8x16Bitmask
1800
+ | Operator::I16x8Bitmask
1801
+ | Operator::I32x4Bitmask
1802
+ | Operator::I64x2Bitmask => {
1803
+ let a = pop1_with_bitcast(state, type_of(op), builder);
1804
+ state.push1(builder.ins().vhigh_bits(I32, a));
1805
+ }
1806
+ Operator::I8x16Eq | Operator::I16x8Eq | Operator::I32x4Eq | Operator::I64x2Eq => {
1807
+ translate_vector_icmp(IntCC::Equal, type_of(op), builder, state)
1808
+ }
1809
+ Operator::I8x16Ne | Operator::I16x8Ne | Operator::I32x4Ne | Operator::I64x2Ne => {
1810
+ translate_vector_icmp(IntCC::NotEqual, type_of(op), builder, state)
1811
+ }
1812
+ Operator::I8x16GtS | Operator::I16x8GtS | Operator::I32x4GtS | Operator::I64x2GtS => {
1813
+ translate_vector_icmp(IntCC::SignedGreaterThan, type_of(op), builder, state)
1814
+ }
1815
+ Operator::I8x16LtS | Operator::I16x8LtS | Operator::I32x4LtS | Operator::I64x2LtS => {
1816
+ translate_vector_icmp(IntCC::SignedLessThan, type_of(op), builder, state)
1817
+ }
1818
+ Operator::I8x16GtU | Operator::I16x8GtU | Operator::I32x4GtU => {
1819
+ translate_vector_icmp(IntCC::UnsignedGreaterThan, type_of(op), builder, state)
1820
+ }
1821
+ Operator::I8x16LtU | Operator::I16x8LtU | Operator::I32x4LtU => {
1822
+ translate_vector_icmp(IntCC::UnsignedLessThan, type_of(op), builder, state)
1823
+ }
1824
+ Operator::I8x16GeS | Operator::I16x8GeS | Operator::I32x4GeS | Operator::I64x2GeS => {
1825
+ translate_vector_icmp(IntCC::SignedGreaterThanOrEqual, type_of(op), builder, state)
1826
+ }
1827
+ Operator::I8x16LeS | Operator::I16x8LeS | Operator::I32x4LeS | Operator::I64x2LeS => {
1828
+ translate_vector_icmp(IntCC::SignedLessThanOrEqual, type_of(op), builder, state)
1829
+ }
1830
+ Operator::I8x16GeU | Operator::I16x8GeU | Operator::I32x4GeU => translate_vector_icmp(
1831
+ IntCC::UnsignedGreaterThanOrEqual,
1832
+ type_of(op),
1833
+ builder,
1834
+ state,
1835
+ ),
1836
+ Operator::I8x16LeU | Operator::I16x8LeU | Operator::I32x4LeU => {
1837
+ translate_vector_icmp(IntCC::UnsignedLessThanOrEqual, type_of(op), builder, state)
1838
+ }
1839
+ Operator::F32x4Eq | Operator::F64x2Eq => {
1840
+ translate_vector_fcmp(FloatCC::Equal, type_of(op), builder, state)
1841
+ }
1842
+ Operator::F32x4Ne | Operator::F64x2Ne => {
1843
+ translate_vector_fcmp(FloatCC::NotEqual, type_of(op), builder, state)
1844
+ }
1845
+ Operator::F32x4Lt | Operator::F64x2Lt => {
1846
+ translate_vector_fcmp(FloatCC::LessThan, type_of(op), builder, state)
1847
+ }
1848
+ Operator::F32x4Gt | Operator::F64x2Gt => {
1849
+ translate_vector_fcmp(FloatCC::GreaterThan, type_of(op), builder, state)
1850
+ }
1851
+ Operator::F32x4Le | Operator::F64x2Le => {
1852
+ translate_vector_fcmp(FloatCC::LessThanOrEqual, type_of(op), builder, state)
1853
+ }
1854
+ Operator::F32x4Ge | Operator::F64x2Ge => {
1855
+ translate_vector_fcmp(FloatCC::GreaterThanOrEqual, type_of(op), builder, state)
1856
+ }
1857
+ Operator::F32x4Add | Operator::F64x2Add => {
1858
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1859
+ state.push1(builder.ins().fadd(a, b))
1860
+ }
1861
+ Operator::F32x4Sub | Operator::F64x2Sub => {
1862
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1863
+ state.push1(builder.ins().fsub(a, b))
1864
+ }
1865
+ Operator::F32x4Mul | Operator::F64x2Mul => {
1866
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1867
+ state.push1(builder.ins().fmul(a, b))
1868
+ }
1869
+ Operator::F32x4Div | Operator::F64x2Div => {
1870
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1871
+ state.push1(builder.ins().fdiv(a, b))
1872
+ }
1873
+ Operator::F32x4Max | Operator::F64x2Max => {
1874
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1875
+ state.push1(builder.ins().fmax(a, b))
1876
+ }
1877
+ Operator::F32x4Min | Operator::F64x2Min => {
1878
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1879
+ state.push1(builder.ins().fmin(a, b))
1880
+ }
1881
+ Operator::F32x4PMax | Operator::F64x2PMax => {
1882
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1883
+ state.push1(builder.ins().fmax_pseudo(a, b))
1884
+ }
1885
+ Operator::F32x4PMin | Operator::F64x2PMin => {
1886
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
1887
+ state.push1(builder.ins().fmin_pseudo(a, b))
1888
+ }
1889
+ Operator::F32x4Sqrt | Operator::F64x2Sqrt => {
1890
+ let a = pop1_with_bitcast(state, type_of(op), builder);
1891
+ state.push1(builder.ins().sqrt(a))
1892
+ }
1893
+ Operator::F32x4Neg | Operator::F64x2Neg => {
1894
+ let a = pop1_with_bitcast(state, type_of(op), builder);
1895
+ state.push1(builder.ins().fneg(a))
1896
+ }
1897
+ Operator::F32x4Abs | Operator::F64x2Abs => {
1898
+ let a = pop1_with_bitcast(state, type_of(op), builder);
1899
+ state.push1(builder.ins().fabs(a))
1900
+ }
1901
+ Operator::F32x4ConvertI32x4S => {
1902
+ let a = pop1_with_bitcast(state, I32X4, builder);
1903
+ state.push1(builder.ins().fcvt_from_sint(F32X4, a))
1904
+ }
1905
+ Operator::F32x4ConvertI32x4U => {
1906
+ let a = pop1_with_bitcast(state, I32X4, builder);
1907
+ state.push1(builder.ins().fcvt_from_uint(F32X4, a))
1908
+ }
1909
+ Operator::F64x2ConvertLowI32x4S => {
1910
+ let a = pop1_with_bitcast(state, I32X4, builder);
1911
+ state.push1(builder.ins().fcvt_low_from_sint(F64X2, a));
1912
+ }
1913
+ Operator::F64x2ConvertLowI32x4U => {
1914
+ let a = pop1_with_bitcast(state, I32X4, builder);
1915
+ let widened_a = builder.ins().uwiden_low(a);
1916
+ state.push1(builder.ins().fcvt_from_uint(F64X2, widened_a));
1917
+ }
1918
+ Operator::F64x2PromoteLowF32x4 => {
1919
+ let a = pop1_with_bitcast(state, F32X4, builder);
1920
+ state.push1(builder.ins().fvpromote_low(a));
1921
+ }
1922
+ Operator::F32x4DemoteF64x2Zero => {
1923
+ let a = pop1_with_bitcast(state, F64X2, builder);
1924
+ state.push1(builder.ins().fvdemote(a));
1925
+ }
1926
+ Operator::I32x4TruncSatF32x4S => {
1927
+ let a = pop1_with_bitcast(state, F32X4, builder);
1928
+ state.push1(builder.ins().fcvt_to_sint_sat(I32X4, a))
1929
+ }
1930
+ Operator::I32x4TruncSatF64x2SZero => {
1931
+ let a = pop1_with_bitcast(state, F64X2, builder);
1932
+ let converted_a = builder.ins().fcvt_to_sint_sat(I64X2, a);
1933
+ let handle = builder.func.dfg.constants.insert(vec![0u8; 16].into());
1934
+ let zero = builder.ins().vconst(I64X2, handle);
1935
+
1936
+ state.push1(builder.ins().snarrow(converted_a, zero));
1937
+ }
1938
+
1939
+ // FIXME(#5913): the relaxed instructions here are translated the same
1940
+ // as the saturating instructions, even when the code generator
1941
+ // configuration allow for different semantics across hosts. On x86,
1942
+ // however, it's theoretically possible to have a slightly more optimal
1943
+ // lowering which accounts for NaN differently, although the lowering is
1944
+ // still not trivial (e.g. one instruction). At this time the
1945
+ // more-optimal-but-still-large lowering for x86 is not implemented so
1946
+ // the relaxed instructions are listed here instead of down below with
1947
+ // the other relaxed instructions. An x86-specific implementation (or
1948
+ // perhaps for other backends too) should be added and the codegen for
1949
+ // the relaxed instruction should conditionally be different.
1950
+ Operator::I32x4RelaxedTruncF32x4U | Operator::I32x4TruncSatF32x4U => {
1951
+ let a = pop1_with_bitcast(state, F32X4, builder);
1952
+ state.push1(builder.ins().fcvt_to_uint_sat(I32X4, a))
1953
+ }
1954
+ Operator::I32x4RelaxedTruncF64x2UZero | Operator::I32x4TruncSatF64x2UZero => {
1955
+ let a = pop1_with_bitcast(state, F64X2, builder);
1956
+ let converted_a = builder.ins().fcvt_to_uint_sat(I64X2, a);
1957
+ let handle = builder.func.dfg.constants.insert(vec![0u8; 16].into());
1958
+ let zero = builder.ins().vconst(I64X2, handle);
1959
+
1960
+ state.push1(builder.ins().uunarrow(converted_a, zero));
1961
+ }
1962
+
1963
+ Operator::I8x16NarrowI16x8S => {
1964
+ let (a, b) = pop2_with_bitcast(state, I16X8, builder);
1965
+ state.push1(builder.ins().snarrow(a, b))
1966
+ }
1967
+ Operator::I16x8NarrowI32x4S => {
1968
+ let (a, b) = pop2_with_bitcast(state, I32X4, builder);
1969
+ state.push1(builder.ins().snarrow(a, b))
1970
+ }
1971
+ Operator::I8x16NarrowI16x8U => {
1972
+ let (a, b) = pop2_with_bitcast(state, I16X8, builder);
1973
+ state.push1(builder.ins().unarrow(a, b))
1974
+ }
1975
+ Operator::I16x8NarrowI32x4U => {
1976
+ let (a, b) = pop2_with_bitcast(state, I32X4, builder);
1977
+ state.push1(builder.ins().unarrow(a, b))
1978
+ }
1979
+ Operator::I16x8ExtendLowI8x16S => {
1980
+ let a = pop1_with_bitcast(state, I8X16, builder);
1981
+ state.push1(builder.ins().swiden_low(a))
1982
+ }
1983
+ Operator::I16x8ExtendHighI8x16S => {
1984
+ let a = pop1_with_bitcast(state, I8X16, builder);
1985
+ state.push1(builder.ins().swiden_high(a))
1986
+ }
1987
+ Operator::I16x8ExtendLowI8x16U => {
1988
+ let a = pop1_with_bitcast(state, I8X16, builder);
1989
+ state.push1(builder.ins().uwiden_low(a))
1990
+ }
1991
+ Operator::I16x8ExtendHighI8x16U => {
1992
+ let a = pop1_with_bitcast(state, I8X16, builder);
1993
+ state.push1(builder.ins().uwiden_high(a))
1994
+ }
1995
+ Operator::I32x4ExtendLowI16x8S => {
1996
+ let a = pop1_with_bitcast(state, I16X8, builder);
1997
+ state.push1(builder.ins().swiden_low(a))
1998
+ }
1999
+ Operator::I32x4ExtendHighI16x8S => {
2000
+ let a = pop1_with_bitcast(state, I16X8, builder);
2001
+ state.push1(builder.ins().swiden_high(a))
2002
+ }
2003
+ Operator::I32x4ExtendLowI16x8U => {
2004
+ let a = pop1_with_bitcast(state, I16X8, builder);
2005
+ state.push1(builder.ins().uwiden_low(a))
2006
+ }
2007
+ Operator::I32x4ExtendHighI16x8U => {
2008
+ let a = pop1_with_bitcast(state, I16X8, builder);
2009
+ state.push1(builder.ins().uwiden_high(a))
2010
+ }
2011
+ Operator::I64x2ExtendLowI32x4S => {
2012
+ let a = pop1_with_bitcast(state, I32X4, builder);
2013
+ state.push1(builder.ins().swiden_low(a))
2014
+ }
2015
+ Operator::I64x2ExtendHighI32x4S => {
2016
+ let a = pop1_with_bitcast(state, I32X4, builder);
2017
+ state.push1(builder.ins().swiden_high(a))
2018
+ }
2019
+ Operator::I64x2ExtendLowI32x4U => {
2020
+ let a = pop1_with_bitcast(state, I32X4, builder);
2021
+ state.push1(builder.ins().uwiden_low(a))
2022
+ }
2023
+ Operator::I64x2ExtendHighI32x4U => {
2024
+ let a = pop1_with_bitcast(state, I32X4, builder);
2025
+ state.push1(builder.ins().uwiden_high(a))
2026
+ }
2027
+ Operator::I16x8ExtAddPairwiseI8x16S => {
2028
+ let a = pop1_with_bitcast(state, I8X16, builder);
2029
+ let widen_low = builder.ins().swiden_low(a);
2030
+ let widen_high = builder.ins().swiden_high(a);
2031
+ state.push1(builder.ins().iadd_pairwise(widen_low, widen_high));
2032
+ }
2033
+ Operator::I32x4ExtAddPairwiseI16x8S => {
2034
+ let a = pop1_with_bitcast(state, I16X8, builder);
2035
+ let widen_low = builder.ins().swiden_low(a);
2036
+ let widen_high = builder.ins().swiden_high(a);
2037
+ state.push1(builder.ins().iadd_pairwise(widen_low, widen_high));
2038
+ }
2039
+ Operator::I16x8ExtAddPairwiseI8x16U => {
2040
+ let a = pop1_with_bitcast(state, I8X16, builder);
2041
+ let widen_low = builder.ins().uwiden_low(a);
2042
+ let widen_high = builder.ins().uwiden_high(a);
2043
+ state.push1(builder.ins().iadd_pairwise(widen_low, widen_high));
2044
+ }
2045
+ Operator::I32x4ExtAddPairwiseI16x8U => {
2046
+ let a = pop1_with_bitcast(state, I16X8, builder);
2047
+ let widen_low = builder.ins().uwiden_low(a);
2048
+ let widen_high = builder.ins().uwiden_high(a);
2049
+ state.push1(builder.ins().iadd_pairwise(widen_low, widen_high));
2050
+ }
2051
+ Operator::F32x4Ceil | Operator::F64x2Ceil => {
2052
+ // This is something of a misuse of `type_of`, because that produces the return type
2053
+ // of `op`. In this case we want the arg type, but we know it's the same as the
2054
+ // return type. Same for the 3 cases below.
2055
+ let arg = pop1_with_bitcast(state, type_of(op), builder);
2056
+ state.push1(builder.ins().ceil(arg));
2057
+ }
2058
+ Operator::F32x4Floor | Operator::F64x2Floor => {
2059
+ let arg = pop1_with_bitcast(state, type_of(op), builder);
2060
+ state.push1(builder.ins().floor(arg));
2061
+ }
2062
+ Operator::F32x4Trunc | Operator::F64x2Trunc => {
2063
+ let arg = pop1_with_bitcast(state, type_of(op), builder);
2064
+ state.push1(builder.ins().trunc(arg));
2065
+ }
2066
+ Operator::F32x4Nearest | Operator::F64x2Nearest => {
2067
+ let arg = pop1_with_bitcast(state, type_of(op), builder);
2068
+ state.push1(builder.ins().nearest(arg));
2069
+ }
2070
+ Operator::I32x4DotI16x8S => {
2071
+ let (a, b) = pop2_with_bitcast(state, I16X8, builder);
2072
+ let alow = builder.ins().swiden_low(a);
2073
+ let blow = builder.ins().swiden_low(b);
2074
+ let low = builder.ins().imul(alow, blow);
2075
+ let ahigh = builder.ins().swiden_high(a);
2076
+ let bhigh = builder.ins().swiden_high(b);
2077
+ let high = builder.ins().imul(ahigh, bhigh);
2078
+ state.push1(builder.ins().iadd_pairwise(low, high));
2079
+ }
2080
+ Operator::I8x16Popcnt => {
2081
+ let arg = pop1_with_bitcast(state, type_of(op), builder);
2082
+ state.push1(builder.ins().popcnt(arg));
2083
+ }
2084
+ Operator::I16x8Q15MulrSatS => {
2085
+ let (a, b) = pop2_with_bitcast(state, I16X8, builder);
2086
+ state.push1(builder.ins().sqmul_round_sat(a, b))
2087
+ }
2088
+ Operator::I16x8ExtMulLowI8x16S => {
2089
+ let (a, b) = pop2_with_bitcast(state, I8X16, builder);
2090
+ let a_low = builder.ins().swiden_low(a);
2091
+ let b_low = builder.ins().swiden_low(b);
2092
+ state.push1(builder.ins().imul(a_low, b_low));
2093
+ }
2094
+ Operator::I16x8ExtMulHighI8x16S => {
2095
+ let (a, b) = pop2_with_bitcast(state, I8X16, builder);
2096
+ let a_high = builder.ins().swiden_high(a);
2097
+ let b_high = builder.ins().swiden_high(b);
2098
+ state.push1(builder.ins().imul(a_high, b_high));
2099
+ }
2100
+ Operator::I16x8ExtMulLowI8x16U => {
2101
+ let (a, b) = pop2_with_bitcast(state, I8X16, builder);
2102
+ let a_low = builder.ins().uwiden_low(a);
2103
+ let b_low = builder.ins().uwiden_low(b);
2104
+ state.push1(builder.ins().imul(a_low, b_low));
2105
+ }
2106
+ Operator::I16x8ExtMulHighI8x16U => {
2107
+ let (a, b) = pop2_with_bitcast(state, I8X16, builder);
2108
+ let a_high = builder.ins().uwiden_high(a);
2109
+ let b_high = builder.ins().uwiden_high(b);
2110
+ state.push1(builder.ins().imul(a_high, b_high));
2111
+ }
2112
+ Operator::I32x4ExtMulLowI16x8S => {
2113
+ let (a, b) = pop2_with_bitcast(state, I16X8, builder);
2114
+ let a_low = builder.ins().swiden_low(a);
2115
+ let b_low = builder.ins().swiden_low(b);
2116
+ state.push1(builder.ins().imul(a_low, b_low));
2117
+ }
2118
+ Operator::I32x4ExtMulHighI16x8S => {
2119
+ let (a, b) = pop2_with_bitcast(state, I16X8, builder);
2120
+ let a_high = builder.ins().swiden_high(a);
2121
+ let b_high = builder.ins().swiden_high(b);
2122
+ state.push1(builder.ins().imul(a_high, b_high));
2123
+ }
2124
+ Operator::I32x4ExtMulLowI16x8U => {
2125
+ let (a, b) = pop2_with_bitcast(state, I16X8, builder);
2126
+ let a_low = builder.ins().uwiden_low(a);
2127
+ let b_low = builder.ins().uwiden_low(b);
2128
+ state.push1(builder.ins().imul(a_low, b_low));
2129
+ }
2130
+ Operator::I32x4ExtMulHighI16x8U => {
2131
+ let (a, b) = pop2_with_bitcast(state, I16X8, builder);
2132
+ let a_high = builder.ins().uwiden_high(a);
2133
+ let b_high = builder.ins().uwiden_high(b);
2134
+ state.push1(builder.ins().imul(a_high, b_high));
2135
+ }
2136
+ Operator::I64x2ExtMulLowI32x4S => {
2137
+ let (a, b) = pop2_with_bitcast(state, I32X4, builder);
2138
+ let a_low = builder.ins().swiden_low(a);
2139
+ let b_low = builder.ins().swiden_low(b);
2140
+ state.push1(builder.ins().imul(a_low, b_low));
2141
+ }
2142
+ Operator::I64x2ExtMulHighI32x4S => {
2143
+ let (a, b) = pop2_with_bitcast(state, I32X4, builder);
2144
+ let a_high = builder.ins().swiden_high(a);
2145
+ let b_high = builder.ins().swiden_high(b);
2146
+ state.push1(builder.ins().imul(a_high, b_high));
2147
+ }
2148
+ Operator::I64x2ExtMulLowI32x4U => {
2149
+ let (a, b) = pop2_with_bitcast(state, I32X4, builder);
2150
+ let a_low = builder.ins().uwiden_low(a);
2151
+ let b_low = builder.ins().uwiden_low(b);
2152
+ state.push1(builder.ins().imul(a_low, b_low));
2153
+ }
2154
+ Operator::I64x2ExtMulHighI32x4U => {
2155
+ let (a, b) = pop2_with_bitcast(state, I32X4, builder);
2156
+ let a_high = builder.ins().uwiden_high(a);
2157
+ let b_high = builder.ins().uwiden_high(b);
2158
+ state.push1(builder.ins().imul(a_high, b_high));
2159
+ }
2160
+ Operator::ReturnCall { .. } | Operator::ReturnCallIndirect { .. } => {
2161
+ return Err(wasm_unsupported!("proposed tail-call operator {:?}", op));
2162
+ }
2163
+ Operator::MemoryDiscard { .. } => {
2164
+ return Err(wasm_unsupported!(
2165
+ "proposed memory-control operator {:?}",
2166
+ op
2167
+ ));
2168
+ }
2169
+
2170
+ Operator::F32x4RelaxedMax | Operator::F64x2RelaxedMax => {
2171
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
2172
+ state.push1(
2173
+ if environ.relaxed_simd_deterministic() || !environ.is_x86() {
2174
+ // Deterministic semantics match the `fmax` instruction, or
2175
+ // the `fAAxBB.max` wasm instruction.
2176
+ builder.ins().fmax(a, b)
2177
+ } else {
2178
+ builder.ins().fmax_pseudo(a, b)
2179
+ },
2180
+ )
2181
+ }
2182
+
2183
+ Operator::F32x4RelaxedMin | Operator::F64x2RelaxedMin => {
2184
+ let (a, b) = pop2_with_bitcast(state, type_of(op), builder);
2185
+ state.push1(
2186
+ if environ.relaxed_simd_deterministic() || !environ.is_x86() {
2187
+ // Deterministic semantics match the `fmin` instruction, or
2188
+ // the `fAAxBB.min` wasm instruction.
2189
+ builder.ins().fmin(a, b)
2190
+ } else {
2191
+ builder.ins().fmin_pseudo(a, b)
2192
+ },
2193
+ );
2194
+ }
2195
+
2196
+ Operator::I8x16RelaxedSwizzle => {
2197
+ let (a, b) = pop2_with_bitcast(state, I8X16, builder);
2198
+ state.push1(
2199
+ if environ.relaxed_simd_deterministic() || !environ.is_x86() {
2200
+ // Deterministic semantics match the `i8x16.swizzle`
2201
+ // instruction which is the CLIF `swizzle`.
2202
+ builder.ins().swizzle(a, b)
2203
+ } else {
2204
+ builder.ins().x86_pshufb(a, b)
2205
+ },
2206
+ );
2207
+ }
2208
+
2209
+ Operator::F32x4RelaxedMadd | Operator::F64x2RelaxedMadd => {
2210
+ let (a, b, c) = pop3_with_bitcast(state, type_of(op), builder);
2211
+ state.push1(
2212
+ if environ.relaxed_simd_deterministic() || environ.has_native_fma() {
2213
+ // Deterministic semantics are "fused multiply and add"
2214
+ // which the CLIF `fma` guarantees.
2215
+ builder.ins().fma(a, b, c)
2216
+ } else {
2217
+ let mul = builder.ins().fmul(a, b);
2218
+ builder.ins().fadd(mul, c)
2219
+ },
2220
+ );
2221
+ }
2222
+ Operator::F32x4RelaxedNmadd | Operator::F64x2RelaxedNmadd => {
2223
+ let (a, b, c) = pop3_with_bitcast(state, type_of(op), builder);
2224
+ let a = builder.ins().fneg(a);
2225
+ state.push1(
2226
+ if environ.relaxed_simd_deterministic() || environ.has_native_fma() {
2227
+ // Deterministic semantics are "fused multiply and add"
2228
+ // which the CLIF `fma` guarantees.
2229
+ builder.ins().fma(a, b, c)
2230
+ } else {
2231
+ let mul = builder.ins().fmul(a, b);
2232
+ builder.ins().fadd(mul, c)
2233
+ },
2234
+ );
2235
+ }
2236
+
2237
+ Operator::I8x16RelaxedLaneselect
2238
+ | Operator::I16x8RelaxedLaneselect
2239
+ | Operator::I32x4RelaxedLaneselect
2240
+ | Operator::I64x2RelaxedLaneselect => {
2241
+ let ty = type_of(op);
2242
+ let (a, b, c) = pop3_with_bitcast(state, ty, builder);
2243
+ // Note that the variable swaps here are intentional due to
2244
+ // the difference of the order of the wasm op and the clif
2245
+ // op.
2246
+ state.push1(
2247
+ if environ.relaxed_simd_deterministic()
2248
+ || !environ.use_x86_blendv_for_relaxed_laneselect(ty)
2249
+ {
2250
+ // Deterministic semantics are a `bitselect` along the lines
2251
+ // of the wasm `v128.bitselect` instruction.
2252
+ builder.ins().bitselect(c, a, b)
2253
+ } else {
2254
+ builder.ins().x86_blendv(c, a, b)
2255
+ },
2256
+ );
2257
+ }
2258
+
2259
+ Operator::I32x4RelaxedTruncF32x4S => {
2260
+ let a = pop1_with_bitcast(state, F32X4, builder);
2261
+ state.push1(
2262
+ if environ.relaxed_simd_deterministic() || !environ.is_x86() {
2263
+ // Deterministic semantics are to match the
2264
+ // `i32x4.trunc_sat_f32x4_s` instruction.
2265
+ builder.ins().fcvt_to_sint_sat(I32X4, a)
2266
+ } else {
2267
+ builder.ins().x86_cvtt2dq(I32X4, a)
2268
+ },
2269
+ )
2270
+ }
2271
+ Operator::I32x4RelaxedTruncF64x2SZero => {
2272
+ let a = pop1_with_bitcast(state, F64X2, builder);
2273
+ let converted_a = if environ.relaxed_simd_deterministic() || !environ.is_x86() {
2274
+ // Deterministic semantics are to match the
2275
+ // `i32x4.trunc_sat_f64x2_s_zero` instruction.
2276
+ builder.ins().fcvt_to_sint_sat(I64X2, a)
2277
+ } else {
2278
+ builder.ins().x86_cvtt2dq(I64X2, a)
2279
+ };
2280
+ let handle = builder.func.dfg.constants.insert(vec![0u8; 16].into());
2281
+ let zero = builder.ins().vconst(I64X2, handle);
2282
+
2283
+ state.push1(builder.ins().snarrow(converted_a, zero));
2284
+ }
2285
+ Operator::I16x8RelaxedQ15mulrS => {
2286
+ let (a, b) = pop2_with_bitcast(state, I16X8, builder);
2287
+ state.push1(
2288
+ if environ.relaxed_simd_deterministic() || !environ.is_x86() {
2289
+ // Deterministic semantics are to match the
2290
+ // `i16x8.q15mulr_sat_s` instruction.
2291
+ builder.ins().sqmul_round_sat(a, b)
2292
+ } else {
2293
+ builder.ins().x86_pmulhrsw(a, b)
2294
+ },
2295
+ );
2296
+ }
2297
+ Operator::I16x8RelaxedDotI8x16I7x16S => {
2298
+ let (a, b) = pop2_with_bitcast(state, I8X16, builder);
2299
+ state.push1(
2300
+ if environ.relaxed_simd_deterministic() || !environ.is_x86() {
2301
+ // Deterministic semantics are to treat both operands as
2302
+ // signed integers and perform the dot product.
2303
+ let alo = builder.ins().swiden_low(a);
2304
+ let blo = builder.ins().swiden_low(b);
2305
+ let lo = builder.ins().imul(alo, blo);
2306
+ let ahi = builder.ins().swiden_high(a);
2307
+ let bhi = builder.ins().swiden_high(b);
2308
+ let hi = builder.ins().imul(ahi, bhi);
2309
+ builder.ins().iadd_pairwise(lo, hi)
2310
+ } else {
2311
+ builder.ins().x86_pmaddubsw(a, b)
2312
+ },
2313
+ );
2314
+ }
2315
+
2316
+ Operator::I32x4RelaxedDotI8x16I7x16AddS => {
2317
+ let c = pop1_with_bitcast(state, I32X4, builder);
2318
+ let (a, b) = pop2_with_bitcast(state, I8X16, builder);
2319
+ let dot = if environ.relaxed_simd_deterministic() || !environ.is_x86() {
2320
+ // Deterministic semantics are to treat both operands as
2321
+ // signed integers and perform the dot product.
2322
+ let alo = builder.ins().swiden_low(a);
2323
+ let blo = builder.ins().swiden_low(b);
2324
+ let lo = builder.ins().imul(alo, blo);
2325
+ let ahi = builder.ins().swiden_high(a);
2326
+ let bhi = builder.ins().swiden_high(b);
2327
+ let hi = builder.ins().imul(ahi, bhi);
2328
+ builder.ins().iadd_pairwise(lo, hi)
2329
+ } else {
2330
+ builder.ins().x86_pmaddubsw(a, b)
2331
+ };
2332
+ let dotlo = builder.ins().swiden_low(dot);
2333
+ let dothi = builder.ins().swiden_high(dot);
2334
+ let dot32 = builder.ins().iadd_pairwise(dotlo, dothi);
2335
+ state.push1(builder.ins().iadd(dot32, c));
2336
+ }
2337
+
2338
+ Operator::ReturnCallRef { type_index: _ } => {
2339
+ return Err(wasm_unsupported!(
2340
+ "proposed tail-call operator for function references {:?}",
2341
+ op
2342
+ ));
2343
+ }
2344
+ Operator::BrOnNull { relative_depth } => {
2345
+ let r = state.pop1();
2346
+ let (br_destination, inputs) = translate_br_if_args(*relative_depth, state);
2347
+ let is_null = environ.translate_ref_is_null(builder.cursor(), r)?;
2348
+ let else_block = builder.create_block();
2349
+ canonicalise_brif(builder, is_null, br_destination, inputs, else_block, &[]);
2350
+
2351
+ builder.seal_block(else_block); // The only predecessor is the current block.
2352
+ builder.switch_to_block(else_block);
2353
+ state.push1(r);
2354
+ }
2355
+ Operator::BrOnNonNull { relative_depth } => {
2356
+ // We write this a bit differently from the spec to avoid an extra
2357
+ // block/branch and the typed accounting thereof. Instead of the
2358
+ // spec's approach, it's described as such:
2359
+ // Peek the value val from the stack.
2360
+ // If val is ref.null ht, then: pop the value val from the stack.
2361
+ // Else: Execute the instruction (br relative_depth).
2362
+ let is_null = environ.translate_ref_is_null(builder.cursor(), state.peek1())?;
2363
+ let (br_destination, inputs) = translate_br_if_args(*relative_depth, state);
2364
+ let else_block = builder.create_block();
2365
+ canonicalise_brif(builder, is_null, else_block, &[], br_destination, inputs);
2366
+
2367
+ // In the null case, pop the ref
2368
+ state.pop1();
2369
+
2370
+ builder.seal_block(else_block); // The only predecessor is the current block.
2371
+
2372
+ // The rest of the translation operates on our is null case, which is
2373
+ // currently an empty block
2374
+ builder.switch_to_block(else_block);
2375
+ }
2376
+ Operator::CallRef { type_index } => {
2377
+ // Get function signature
2378
+ // `index` is the index of the function's signature and `table_index` is the index of
2379
+ // the table to search the function in.
2380
+ let (sigref, num_args) = state.get_indirect_sig(builder.func, *type_index, environ)?;
2381
+ let callee = state.pop1();
2382
+
2383
+ // Bitcast any vector arguments to their default type, I8X16, before calling.
2384
+ let args = state.peekn_mut(num_args);
2385
+ bitcast_wasm_params(environ, sigref, args, builder);
2386
+
2387
+ let call =
2388
+ environ.translate_call_ref(builder, sigref, callee, state.peekn(num_args))?;
2389
+
2390
+ let inst_results = builder.inst_results(call);
2391
+ debug_assert_eq!(
2392
+ inst_results.len(),
2393
+ builder.func.dfg.signatures[sigref].returns.len(),
2394
+ "translate_call_ref results should match the call signature"
2395
+ );
2396
+ state.popn(num_args);
2397
+ state.pushn(inst_results);
2398
+ }
2399
+ Operator::RefAsNonNull => {
2400
+ let r = state.pop1();
2401
+ let is_null = environ.translate_ref_is_null(builder.cursor(), r)?;
2402
+ builder.ins().trapnz(is_null, ir::TrapCode::NullReference);
2403
+ state.push1(r);
2404
+ }
2405
+
2406
+ Operator::I31New | Operator::I31GetS | Operator::I31GetU => {
2407
+ unimplemented!("GC operators not yet implemented")
2408
+ }
2409
+ };
2410
+ Ok(())
2411
+ }
2412
+
2413
+ // Clippy warns us of some fields we are deliberately ignoring
2414
+ #[cfg_attr(feature = "cargo-clippy", allow(clippy::unneeded_field_pattern))]
2415
+ /// Deals with a Wasm instruction located in an unreachable portion of the code. Most of them
2416
+ /// are dropped but special ones like `End` or `Else` signal the potential end of the unreachable
2417
+ /// portion so the translation state must be updated accordingly.
2418
+ fn translate_unreachable_operator<FE: FuncEnvironment + ?Sized>(
2419
+ validator: &FuncValidator<impl WasmModuleResources>,
2420
+ op: &Operator,
2421
+ builder: &mut FunctionBuilder,
2422
+ state: &mut FuncTranslationState,
2423
+ environ: &mut FE,
2424
+ ) -> WasmResult<()> {
2425
+ debug_assert!(!state.reachable);
2426
+ match *op {
2427
+ Operator::If { blockty } => {
2428
+ // Push a placeholder control stack entry. The if isn't reachable,
2429
+ // so we don't have any branches anywhere.
2430
+ state.push_if(
2431
+ ir::Block::reserved_value(),
2432
+ ElseData::NoElse {
2433
+ branch_inst: ir::Inst::reserved_value(),
2434
+ placeholder: ir::Block::reserved_value(),
2435
+ },
2436
+ 0,
2437
+ 0,
2438
+ blockty,
2439
+ );
2440
+ }
2441
+ Operator::Loop { blockty: _ } | Operator::Block { blockty: _ } => {
2442
+ state.push_block(ir::Block::reserved_value(), 0, 0);
2443
+ }
2444
+ Operator::Else => {
2445
+ let i = state.control_stack.len() - 1;
2446
+ match state.control_stack[i] {
2447
+ ControlStackFrame::If {
2448
+ ref else_data,
2449
+ head_is_reachable,
2450
+ ref mut consequent_ends_reachable,
2451
+ blocktype,
2452
+ ..
2453
+ } => {
2454
+ debug_assert!(consequent_ends_reachable.is_none());
2455
+ *consequent_ends_reachable = Some(state.reachable);
2456
+
2457
+ if head_is_reachable {
2458
+ // We have a branch from the head of the `if` to the `else`.
2459
+ state.reachable = true;
2460
+
2461
+ let else_block = match *else_data {
2462
+ ElseData::NoElse {
2463
+ branch_inst,
2464
+ placeholder,
2465
+ } => {
2466
+ let (params, _results) =
2467
+ blocktype_params_results(validator, blocktype)?;
2468
+ let else_block = block_with_params(builder, params, environ)?;
2469
+ let frame = state.control_stack.last().unwrap();
2470
+ frame.truncate_value_stack_to_else_params(&mut state.stack);
2471
+
2472
+ // We change the target of the branch instruction.
2473
+ builder.change_jump_destination(
2474
+ branch_inst,
2475
+ placeholder,
2476
+ else_block,
2477
+ );
2478
+ builder.seal_block(else_block);
2479
+ else_block
2480
+ }
2481
+ ElseData::WithElse { else_block } => {
2482
+ let frame = state.control_stack.last().unwrap();
2483
+ frame.truncate_value_stack_to_else_params(&mut state.stack);
2484
+ else_block
2485
+ }
2486
+ };
2487
+
2488
+ builder.switch_to_block(else_block);
2489
+
2490
+ // Again, no need to push the parameters for the `else`,
2491
+ // since we already did when we saw the original `if`. See
2492
+ // the comment for translating `Operator::Else` in
2493
+ // `translate_operator` for details.
2494
+ }
2495
+ }
2496
+ _ => unreachable!(),
2497
+ }
2498
+ }
2499
+ Operator::End => {
2500
+ let stack = &mut state.stack;
2501
+ let control_stack = &mut state.control_stack;
2502
+ let frame = control_stack.pop().unwrap();
2503
+
2504
+ // Pop unused parameters from stack.
2505
+ frame.truncate_value_stack_to_original_size(stack);
2506
+
2507
+ let reachable_anyway = match frame {
2508
+ // If it is a loop we also have to seal the body loop block
2509
+ ControlStackFrame::Loop { header, .. } => {
2510
+ builder.seal_block(header);
2511
+ // And loops can't have branches to the end.
2512
+ false
2513
+ }
2514
+ // If we never set `consequent_ends_reachable` then that means
2515
+ // we are finishing the consequent now, and there was no
2516
+ // `else`. Whether the following block is reachable depends only
2517
+ // on if the head was reachable.
2518
+ ControlStackFrame::If {
2519
+ head_is_reachable,
2520
+ consequent_ends_reachable: None,
2521
+ ..
2522
+ } => head_is_reachable,
2523
+ // Since we are only in this function when in unreachable code,
2524
+ // we know that the alternative just ended unreachable. Whether
2525
+ // the following block is reachable depends on if the consequent
2526
+ // ended reachable or not.
2527
+ ControlStackFrame::If {
2528
+ head_is_reachable,
2529
+ consequent_ends_reachable: Some(consequent_ends_reachable),
2530
+ ..
2531
+ } => head_is_reachable && consequent_ends_reachable,
2532
+ // All other control constructs are already handled.
2533
+ _ => false,
2534
+ };
2535
+
2536
+ if frame.exit_is_branched_to() || reachable_anyway {
2537
+ builder.switch_to_block(frame.following_code());
2538
+ builder.seal_block(frame.following_code());
2539
+
2540
+ // And add the return values of the block but only if the next block is reachable
2541
+ // (which corresponds to testing if the stack depth is 1)
2542
+ stack.extend_from_slice(builder.block_params(frame.following_code()));
2543
+ state.reachable = true;
2544
+ }
2545
+ }
2546
+ _ => {
2547
+ // We don't translate because this is unreachable code
2548
+ }
2549
+ }
2550
+
2551
+ Ok(())
2552
+ }
2553
+
2554
+ /// This function is a generalized helper for validating that a wasm-supplied
2555
+ /// heap address is in-bounds.
2556
+ ///
2557
+ /// This function takes a litany of parameters and requires that the *Wasm*
2558
+ /// address to be verified is at the top of the stack in `state`. This will
2559
+ /// generate necessary IR to validate that the heap address is correctly
2560
+ /// in-bounds, and various parameters are returned describing the valid *native*
2561
+ /// heap address if execution reaches that point.
2562
+ ///
2563
+ /// Returns `None` when the Wasm access will unconditionally trap.
2564
+ fn prepare_addr<FE>(
2565
+ memarg: &MemArg,
2566
+ access_size: u8,
2567
+ builder: &mut FunctionBuilder,
2568
+ state: &mut FuncTranslationState,
2569
+ environ: &mut FE,
2570
+ ) -> WasmResult<Reachability<(MemFlags, Value)>>
2571
+ where
2572
+ FE: FuncEnvironment + ?Sized,
2573
+ {
2574
+ let index = state.pop1();
2575
+ let heap = state.get_heap(builder.func, memarg.memory, environ)?;
2576
+
2577
+ // How exactly the bounds check is performed here and what it's performed
2578
+ // on is a bit tricky. Generally we want to rely on access violations (e.g.
2579
+ // segfaults) to generate traps since that means we don't have to bounds
2580
+ // check anything explicitly.
2581
+ //
2582
+ // (1) If we don't have a guard page of unmapped memory, though, then we
2583
+ // can't rely on this trapping behavior through segfaults. Instead we need
2584
+ // to bounds-check the entire memory access here which is everything from
2585
+ // `addr32 + offset` to `addr32 + offset + width` (not inclusive). In this
2586
+ // scenario our adjusted offset that we're checking is `memarg.offset +
2587
+ // access_size`. Note that we do saturating arithmetic here to avoid
2588
+ // overflow. THe addition here is in the 64-bit space, which means that
2589
+ // we'll never overflow for 32-bit wasm but for 64-bit this is an issue. If
2590
+ // our effective offset is u64::MAX though then it's impossible for for
2591
+ // that to actually be a valid offset because otherwise the wasm linear
2592
+ // memory would take all of the host memory!
2593
+ //
2594
+ // (2) If we have a guard page, however, then we can perform a further
2595
+ // optimization of the generated code by only checking multiples of the
2596
+ // offset-guard size to be more CSE-friendly. Knowing that we have at least
2597
+ // 1 page of a guard page we're then able to disregard the `width` since we
2598
+ // know it's always less than one page. Our bounds check will be for the
2599
+ // first byte which will either succeed and be guaranteed to fault if it's
2600
+ // actually out of bounds, or the bounds check itself will fail. In any case
2601
+ // we assert that the width is reasonably small for now so this assumption
2602
+ // can be adjusted in the future if we get larger widths.
2603
+ //
2604
+ // Put another way we can say, where `y < offset_guard_size`:
2605
+ //
2606
+ // n * offset_guard_size + y = offset
2607
+ //
2608
+ // We'll then pass `n * offset_guard_size` as the bounds check value. If
2609
+ // this traps then our `offset` would have trapped anyway. If this check
2610
+ // passes we know
2611
+ //
2612
+ // addr32 + n * offset_guard_size < bound
2613
+ //
2614
+ // which means
2615
+ //
2616
+ // addr32 + n * offset_guard_size + y < bound + offset_guard_size
2617
+ //
2618
+ // because `y < offset_guard_size`, which then means:
2619
+ //
2620
+ // addr32 + offset < bound + offset_guard_size
2621
+ //
2622
+ // Since we know that that guard size bytes are all unmapped we're
2623
+ // guaranteed that `offset` and the `width` bytes after it are either
2624
+ // in-bounds or will hit the guard page, meaning we'll get the desired
2625
+ // semantics we want.
2626
+ //
2627
+ // ---
2628
+ //
2629
+ // With all that in mind remember that the goal is to bounds check as few
2630
+ // things as possible. To facilitate this the "fast path" is expected to be
2631
+ // hit like so:
2632
+ //
2633
+ // * For wasm32, wasmtime defaults to 4gb "static" memories with 2gb guard
2634
+ // regions. This means that for all offsets <=2gb, we hit the optimized
2635
+ // case for `heap_addr` on static memories 4gb in size in cranelift's
2636
+ // legalization of `heap_addr`, eliding the bounds check entirely.
2637
+ //
2638
+ // * For wasm64 offsets <=2gb will generate a single `heap_addr`
2639
+ // instruction, but at this time all heaps are "dyanmic" which means that
2640
+ // a single bounds check is forced. Ideally we'd do better here, but
2641
+ // that's the current state of affairs.
2642
+ //
2643
+ // Basically we assume that most configurations have a guard page and most
2644
+ // offsets in `memarg` are <=2gb, which means we get the fast path of one
2645
+ // `heap_addr` instruction plus a hardcoded i32-offset in memory-related
2646
+ // instructions.
2647
+ let heap = environ.heaps()[heap].clone();
2648
+ let addr = match u32::try_from(memarg.offset) {
2649
+ // If our offset fits within a u32, then we can place the it into the
2650
+ // offset immediate of the `heap_addr` instruction.
2651
+ Ok(offset) => bounds_checks::bounds_check_and_compute_addr(
2652
+ builder,
2653
+ environ,
2654
+ &heap,
2655
+ index,
2656
+ offset,
2657
+ access_size,
2658
+ )?,
2659
+
2660
+ // If the offset doesn't fit within a u32, then we can't pass it
2661
+ // directly into `heap_addr`.
2662
+ //
2663
+ // One reasonable question you might ask is "why not?". There's no
2664
+ // fundamental reason why `heap_addr` *must* take a 32-bit offset. The
2665
+ // reason this isn't done, though, is that blindly changing the offset
2666
+ // to a 64-bit offset increases the size of the `InstructionData` enum
2667
+ // in cranelift by 8 bytes (16 to 24). This can have significant
2668
+ // performance implications so the conclusion when this was written was
2669
+ // that we shouldn't do that.
2670
+ //
2671
+ // Without the ability to put the whole offset into the `heap_addr`
2672
+ // instruction we need to fold the offset into the address itself with
2673
+ // an unsigned addition. In doing so though we need to check for
2674
+ // overflow because that would mean the address is out-of-bounds (wasm
2675
+ // bounds checks happen on the effective 33 or 65 bit address once the
2676
+ // offset is factored in).
2677
+ //
2678
+ // Once we have the effective address, offset already folded in, then
2679
+ // `heap_addr` is used to verify that the address is indeed in-bounds.
2680
+ //
2681
+ // Note that this is generating what's likely to be at least two
2682
+ // branches, one for the overflow and one for the bounds check itself.
2683
+ // For now though that should hopefully be ok since 4gb+ offsets are
2684
+ // relatively odd/rare. In the future if needed we can look into
2685
+ // optimizing this more.
2686
+ Err(_) => {
2687
+ let offset = builder.ins().iconst(heap.index_type, memarg.offset as i64);
2688
+ let adjusted_index =
2689
+ builder
2690
+ .ins()
2691
+ .uadd_overflow_trap(index, offset, ir::TrapCode::HeapOutOfBounds);
2692
+ bounds_checks::bounds_check_and_compute_addr(
2693
+ builder,
2694
+ environ,
2695
+ &heap,
2696
+ adjusted_index,
2697
+ 0,
2698
+ access_size,
2699
+ )?
2700
+ }
2701
+ };
2702
+ let addr = match addr {
2703
+ Reachability::Unreachable => return Ok(Reachability::Unreachable),
2704
+ Reachability::Reachable(a) => a,
2705
+ };
2706
+
2707
+ // Note that we don't set `is_aligned` here, even if the load instruction's
2708
+ // alignment immediate may says it's aligned, because WebAssembly's
2709
+ // immediate field is just a hint, while Cranelift's aligned flag needs a
2710
+ // guarantee. WebAssembly memory accesses are always little-endian.
2711
+ let mut flags = MemFlags::new();
2712
+ flags.set_endianness(ir::Endianness::Little);
2713
+
2714
+ // The access occurs to the `heap` disjoint category of abstract
2715
+ // state. This may allow alias analysis to merge redundant loads,
2716
+ // etc. when heap accesses occur interleaved with other (table,
2717
+ // vmctx, stack) accesses.
2718
+ flags.set_heap();
2719
+
2720
+ Ok(Reachability::Reachable((flags, addr)))
2721
+ }
2722
+
2723
+ fn align_atomic_addr(
2724
+ memarg: &MemArg,
2725
+ loaded_bytes: u8,
2726
+ builder: &mut FunctionBuilder,
2727
+ state: &mut FuncTranslationState,
2728
+ ) {
2729
+ // Atomic addresses must all be aligned correctly, and for now we check
2730
+ // alignment before we check out-of-bounds-ness. The order of this check may
2731
+ // need to be updated depending on the outcome of the official threads
2732
+ // proposal itself.
2733
+ //
2734
+ // Note that with an offset>0 we generate an `iadd_imm` where the result is
2735
+ // thrown away after the offset check. This may truncate the offset and the
2736
+ // result may overflow as well, but those conditions won't affect the
2737
+ // alignment check itself. This can probably be optimized better and we
2738
+ // should do so in the future as well.
2739
+ if loaded_bytes > 1 {
2740
+ let addr = state.pop1(); // "peek" via pop then push
2741
+ state.push1(addr);
2742
+ let effective_addr = if memarg.offset == 0 {
2743
+ addr
2744
+ } else {
2745
+ builder
2746
+ .ins()
2747
+ .iadd_imm(addr, i64::from(memarg.offset as i32))
2748
+ };
2749
+ debug_assert!(loaded_bytes.is_power_of_two());
2750
+ let misalignment = builder
2751
+ .ins()
2752
+ .band_imm(effective_addr, i64::from(loaded_bytes - 1));
2753
+ let f = builder.ins().icmp_imm(IntCC::NotEqual, misalignment, 0);
2754
+ builder.ins().trapnz(f, ir::TrapCode::HeapMisaligned);
2755
+ }
2756
+ }
2757
+
2758
+ /// Like `prepare_addr` but for atomic accesses.
2759
+ ///
2760
+ /// Returns `None` when the Wasm access will unconditionally trap.
2761
+ fn prepare_atomic_addr<FE: FuncEnvironment + ?Sized>(
2762
+ memarg: &MemArg,
2763
+ loaded_bytes: u8,
2764
+ builder: &mut FunctionBuilder,
2765
+ state: &mut FuncTranslationState,
2766
+ environ: &mut FE,
2767
+ ) -> WasmResult<Reachability<(MemFlags, Value)>> {
2768
+ align_atomic_addr(memarg, loaded_bytes, builder, state);
2769
+ prepare_addr(memarg, loaded_bytes, builder, state, environ)
2770
+ }
2771
+
2772
+ /// Like `Option<T>` but specifically for passing information about transitions
2773
+ /// from reachable to unreachable state and the like from callees to callers.
2774
+ ///
2775
+ /// Marked `must_use` to force callers to update
2776
+ /// `FuncTranslationState::reachable` as necessary.
2777
+ #[derive(PartialEq, Eq)]
2778
+ #[must_use]
2779
+ pub enum Reachability<T> {
2780
+ /// The Wasm execution state is reachable, here is a `T`.
2781
+ Reachable(T),
2782
+ /// The Wasm execution state has been determined to be statically
2783
+ /// unreachable. It is the receiver of this value's responsibility to update
2784
+ /// `FuncTranslationState::reachable` as necessary.
2785
+ Unreachable,
2786
+ }
2787
+
2788
+ /// Translate a load instruction.
2789
+ ///
2790
+ /// Returns the execution state's reachability after the load is translated.
2791
+ fn translate_load<FE: FuncEnvironment + ?Sized>(
2792
+ memarg: &MemArg,
2793
+ opcode: ir::Opcode,
2794
+ result_ty: Type,
2795
+ builder: &mut FunctionBuilder,
2796
+ state: &mut FuncTranslationState,
2797
+ environ: &mut FE,
2798
+ ) -> WasmResult<Reachability<()>> {
2799
+ let (flags, base) = match prepare_addr(
2800
+ memarg,
2801
+ mem_op_size(opcode, result_ty),
2802
+ builder,
2803
+ state,
2804
+ environ,
2805
+ )? {
2806
+ Reachability::Unreachable => return Ok(Reachability::Unreachable),
2807
+ Reachability::Reachable((f, b)) => (f, b),
2808
+ };
2809
+ let (load, dfg) = builder
2810
+ .ins()
2811
+ .Load(opcode, result_ty, flags, Offset32::new(0), base);
2812
+ state.push1(dfg.first_result(load));
2813
+ Ok(Reachability::Reachable(()))
2814
+ }
2815
+
2816
+ /// Translate a store instruction.
2817
+ fn translate_store<FE: FuncEnvironment + ?Sized>(
2818
+ memarg: &MemArg,
2819
+ opcode: ir::Opcode,
2820
+ builder: &mut FunctionBuilder,
2821
+ state: &mut FuncTranslationState,
2822
+ environ: &mut FE,
2823
+ ) -> WasmResult<()> {
2824
+ let val = state.pop1();
2825
+ let val_ty = builder.func.dfg.value_type(val);
2826
+
2827
+ let (flags, base) = unwrap_or_return_unreachable_state!(
2828
+ state,
2829
+ prepare_addr(memarg, mem_op_size(opcode, val_ty), builder, state, environ)?
2830
+ );
2831
+ builder
2832
+ .ins()
2833
+ .Store(opcode, val_ty, flags, Offset32::new(0), val, base);
2834
+ Ok(())
2835
+ }
2836
+
2837
+ fn mem_op_size(opcode: ir::Opcode, ty: Type) -> u8 {
2838
+ match opcode {
2839
+ ir::Opcode::Istore8 | ir::Opcode::Sload8 | ir::Opcode::Uload8 => 1,
2840
+ ir::Opcode::Istore16 | ir::Opcode::Sload16 | ir::Opcode::Uload16 => 2,
2841
+ ir::Opcode::Istore32 | ir::Opcode::Sload32 | ir::Opcode::Uload32 => 4,
2842
+ ir::Opcode::Store | ir::Opcode::Load => u8::try_from(ty.bytes()).unwrap(),
2843
+ _ => panic!("unknown size of mem op for {:?}", opcode),
2844
+ }
2845
+ }
2846
+
2847
+ fn translate_icmp(cc: IntCC, builder: &mut FunctionBuilder, state: &mut FuncTranslationState) {
2848
+ let (arg0, arg1) = state.pop2();
2849
+ let val = builder.ins().icmp(cc, arg0, arg1);
2850
+ state.push1(builder.ins().uextend(I32, val));
2851
+ }
2852
+
2853
+ fn translate_atomic_rmw<FE: FuncEnvironment + ?Sized>(
2854
+ widened_ty: Type,
2855
+ access_ty: Type,
2856
+ op: AtomicRmwOp,
2857
+ memarg: &MemArg,
2858
+ builder: &mut FunctionBuilder,
2859
+ state: &mut FuncTranslationState,
2860
+ environ: &mut FE,
2861
+ ) -> WasmResult<()> {
2862
+ let mut arg2 = state.pop1();
2863
+ let arg2_ty = builder.func.dfg.value_type(arg2);
2864
+
2865
+ // The operation is performed at type `access_ty`, and the old value is zero-extended
2866
+ // to type `widened_ty`.
2867
+ match access_ty {
2868
+ I8 | I16 | I32 | I64 => {}
2869
+ _ => {
2870
+ return Err(wasm_unsupported!(
2871
+ "atomic_rmw: unsupported access type {:?}",
2872
+ access_ty
2873
+ ))
2874
+ }
2875
+ };
2876
+ let w_ty_ok = match widened_ty {
2877
+ I32 | I64 => true,
2878
+ _ => false,
2879
+ };
2880
+ assert!(w_ty_ok && widened_ty.bytes() >= access_ty.bytes());
2881
+
2882
+ assert!(arg2_ty.bytes() >= access_ty.bytes());
2883
+ if arg2_ty.bytes() > access_ty.bytes() {
2884
+ arg2 = builder.ins().ireduce(access_ty, arg2);
2885
+ }
2886
+
2887
+ let (flags, addr) = unwrap_or_return_unreachable_state!(
2888
+ state,
2889
+ prepare_atomic_addr(
2890
+ memarg,
2891
+ u8::try_from(access_ty.bytes()).unwrap(),
2892
+ builder,
2893
+ state,
2894
+ environ,
2895
+ )?
2896
+ );
2897
+
2898
+ let mut res = builder.ins().atomic_rmw(access_ty, flags, op, addr, arg2);
2899
+ if access_ty != widened_ty {
2900
+ res = builder.ins().uextend(widened_ty, res);
2901
+ }
2902
+ state.push1(res);
2903
+ Ok(())
2904
+ }
2905
+
2906
+ fn translate_atomic_cas<FE: FuncEnvironment + ?Sized>(
2907
+ widened_ty: Type,
2908
+ access_ty: Type,
2909
+ memarg: &MemArg,
2910
+ builder: &mut FunctionBuilder,
2911
+ state: &mut FuncTranslationState,
2912
+ environ: &mut FE,
2913
+ ) -> WasmResult<()> {
2914
+ let (mut expected, mut replacement) = state.pop2();
2915
+ let expected_ty = builder.func.dfg.value_type(expected);
2916
+ let replacement_ty = builder.func.dfg.value_type(replacement);
2917
+
2918
+ // The compare-and-swap is performed at type `access_ty`, and the old value is zero-extended
2919
+ // to type `widened_ty`.
2920
+ match access_ty {
2921
+ I8 | I16 | I32 | I64 => {}
2922
+ _ => {
2923
+ return Err(wasm_unsupported!(
2924
+ "atomic_cas: unsupported access type {:?}",
2925
+ access_ty
2926
+ ))
2927
+ }
2928
+ };
2929
+ let w_ty_ok = match widened_ty {
2930
+ I32 | I64 => true,
2931
+ _ => false,
2932
+ };
2933
+ assert!(w_ty_ok && widened_ty.bytes() >= access_ty.bytes());
2934
+
2935
+ assert!(expected_ty.bytes() >= access_ty.bytes());
2936
+ if expected_ty.bytes() > access_ty.bytes() {
2937
+ expected = builder.ins().ireduce(access_ty, expected);
2938
+ }
2939
+ assert!(replacement_ty.bytes() >= access_ty.bytes());
2940
+ if replacement_ty.bytes() > access_ty.bytes() {
2941
+ replacement = builder.ins().ireduce(access_ty, replacement);
2942
+ }
2943
+
2944
+ let (flags, addr) = unwrap_or_return_unreachable_state!(
2945
+ state,
2946
+ prepare_atomic_addr(
2947
+ memarg,
2948
+ u8::try_from(access_ty.bytes()).unwrap(),
2949
+ builder,
2950
+ state,
2951
+ environ,
2952
+ )?
2953
+ );
2954
+ let mut res = builder.ins().atomic_cas(flags, addr, expected, replacement);
2955
+ if access_ty != widened_ty {
2956
+ res = builder.ins().uextend(widened_ty, res);
2957
+ }
2958
+ state.push1(res);
2959
+ Ok(())
2960
+ }
2961
+
2962
+ fn translate_atomic_load<FE: FuncEnvironment + ?Sized>(
2963
+ widened_ty: Type,
2964
+ access_ty: Type,
2965
+ memarg: &MemArg,
2966
+ builder: &mut FunctionBuilder,
2967
+ state: &mut FuncTranslationState,
2968
+ environ: &mut FE,
2969
+ ) -> WasmResult<()> {
2970
+ // The load is performed at type `access_ty`, and the loaded value is zero extended
2971
+ // to `widened_ty`.
2972
+ match access_ty {
2973
+ I8 | I16 | I32 | I64 => {}
2974
+ _ => {
2975
+ return Err(wasm_unsupported!(
2976
+ "atomic_load: unsupported access type {:?}",
2977
+ access_ty
2978
+ ))
2979
+ }
2980
+ };
2981
+ let w_ty_ok = match widened_ty {
2982
+ I32 | I64 => true,
2983
+ _ => false,
2984
+ };
2985
+ assert!(w_ty_ok && widened_ty.bytes() >= access_ty.bytes());
2986
+
2987
+ let (flags, addr) = unwrap_or_return_unreachable_state!(
2988
+ state,
2989
+ prepare_atomic_addr(
2990
+ memarg,
2991
+ u8::try_from(access_ty.bytes()).unwrap(),
2992
+ builder,
2993
+ state,
2994
+ environ,
2995
+ )?
2996
+ );
2997
+ let mut res = builder.ins().atomic_load(access_ty, flags, addr);
2998
+ if access_ty != widened_ty {
2999
+ res = builder.ins().uextend(widened_ty, res);
3000
+ }
3001
+ state.push1(res);
3002
+ Ok(())
3003
+ }
3004
+
3005
+ fn translate_atomic_store<FE: FuncEnvironment + ?Sized>(
3006
+ access_ty: Type,
3007
+ memarg: &MemArg,
3008
+ builder: &mut FunctionBuilder,
3009
+ state: &mut FuncTranslationState,
3010
+ environ: &mut FE,
3011
+ ) -> WasmResult<()> {
3012
+ let mut data = state.pop1();
3013
+ let data_ty = builder.func.dfg.value_type(data);
3014
+
3015
+ // The operation is performed at type `access_ty`, and the data to be stored may first
3016
+ // need to be narrowed accordingly.
3017
+ match access_ty {
3018
+ I8 | I16 | I32 | I64 => {}
3019
+ _ => {
3020
+ return Err(wasm_unsupported!(
3021
+ "atomic_store: unsupported access type {:?}",
3022
+ access_ty
3023
+ ))
3024
+ }
3025
+ };
3026
+ let d_ty_ok = match data_ty {
3027
+ I32 | I64 => true,
3028
+ _ => false,
3029
+ };
3030
+ assert!(d_ty_ok && data_ty.bytes() >= access_ty.bytes());
3031
+
3032
+ if data_ty.bytes() > access_ty.bytes() {
3033
+ data = builder.ins().ireduce(access_ty, data);
3034
+ }
3035
+
3036
+ let (flags, addr) = unwrap_or_return_unreachable_state!(
3037
+ state,
3038
+ prepare_atomic_addr(
3039
+ memarg,
3040
+ u8::try_from(access_ty.bytes()).unwrap(),
3041
+ builder,
3042
+ state,
3043
+ environ,
3044
+ )?
3045
+ );
3046
+ builder.ins().atomic_store(flags, data, addr);
3047
+ Ok(())
3048
+ }
3049
+
3050
+ fn translate_vector_icmp(
3051
+ cc: IntCC,
3052
+ needed_type: Type,
3053
+ builder: &mut FunctionBuilder,
3054
+ state: &mut FuncTranslationState,
3055
+ ) {
3056
+ let (a, b) = state.pop2();
3057
+ let bitcast_a = optionally_bitcast_vector(a, needed_type, builder);
3058
+ let bitcast_b = optionally_bitcast_vector(b, needed_type, builder);
3059
+ state.push1(builder.ins().icmp(cc, bitcast_a, bitcast_b))
3060
+ }
3061
+
3062
+ fn translate_fcmp(cc: FloatCC, builder: &mut FunctionBuilder, state: &mut FuncTranslationState) {
3063
+ let (arg0, arg1) = state.pop2();
3064
+ let val = builder.ins().fcmp(cc, arg0, arg1);
3065
+ state.push1(builder.ins().uextend(I32, val));
3066
+ }
3067
+
3068
+ fn translate_vector_fcmp(
3069
+ cc: FloatCC,
3070
+ needed_type: Type,
3071
+ builder: &mut FunctionBuilder,
3072
+ state: &mut FuncTranslationState,
3073
+ ) {
3074
+ let (a, b) = state.pop2();
3075
+ let bitcast_a = optionally_bitcast_vector(a, needed_type, builder);
3076
+ let bitcast_b = optionally_bitcast_vector(b, needed_type, builder);
3077
+ state.push1(builder.ins().fcmp(cc, bitcast_a, bitcast_b))
3078
+ }
3079
+
3080
+ fn translate_br_if(
3081
+ relative_depth: u32,
3082
+ builder: &mut FunctionBuilder,
3083
+ state: &mut FuncTranslationState,
3084
+ ) {
3085
+ let val = state.pop1();
3086
+ let (br_destination, inputs) = translate_br_if_args(relative_depth, state);
3087
+ let next_block = builder.create_block();
3088
+ canonicalise_brif(builder, val, br_destination, inputs, next_block, &[]);
3089
+
3090
+ builder.seal_block(next_block); // The only predecessor is the current block.
3091
+ builder.switch_to_block(next_block);
3092
+ }
3093
+
3094
+ fn translate_br_if_args(
3095
+ relative_depth: u32,
3096
+ state: &mut FuncTranslationState,
3097
+ ) -> (ir::Block, &mut [ir::Value]) {
3098
+ let i = state.control_stack.len() - 1 - (relative_depth as usize);
3099
+ let (return_count, br_destination) = {
3100
+ let frame = &mut state.control_stack[i];
3101
+ // The values returned by the branch are still available for the reachable
3102
+ // code that comes after it
3103
+ frame.set_branched_to_exit();
3104
+ let return_count = if frame.is_loop() {
3105
+ frame.num_param_values()
3106
+ } else {
3107
+ frame.num_return_values()
3108
+ };
3109
+ (return_count, frame.br_destination())
3110
+ };
3111
+ let inputs = state.peekn_mut(return_count);
3112
+ (br_destination, inputs)
3113
+ }
3114
+
3115
+ /// Determine the returned value type of a WebAssembly operator
3116
+ fn type_of(operator: &Operator) -> Type {
3117
+ match operator {
3118
+ Operator::V128Load { .. }
3119
+ | Operator::V128Store { .. }
3120
+ | Operator::V128Const { .. }
3121
+ | Operator::V128Not
3122
+ | Operator::V128And
3123
+ | Operator::V128AndNot
3124
+ | Operator::V128Or
3125
+ | Operator::V128Xor
3126
+ | Operator::V128AnyTrue
3127
+ | Operator::V128Bitselect => I8X16, // default type representing V128
3128
+
3129
+ Operator::I8x16Shuffle { .. }
3130
+ | Operator::I8x16Splat
3131
+ | Operator::V128Load8Splat { .. }
3132
+ | Operator::V128Load8Lane { .. }
3133
+ | Operator::V128Store8Lane { .. }
3134
+ | Operator::I8x16ExtractLaneS { .. }
3135
+ | Operator::I8x16ExtractLaneU { .. }
3136
+ | Operator::I8x16ReplaceLane { .. }
3137
+ | Operator::I8x16Eq
3138
+ | Operator::I8x16Ne
3139
+ | Operator::I8x16LtS
3140
+ | Operator::I8x16LtU
3141
+ | Operator::I8x16GtS
3142
+ | Operator::I8x16GtU
3143
+ | Operator::I8x16LeS
3144
+ | Operator::I8x16LeU
3145
+ | Operator::I8x16GeS
3146
+ | Operator::I8x16GeU
3147
+ | Operator::I8x16Neg
3148
+ | Operator::I8x16Abs
3149
+ | Operator::I8x16AllTrue
3150
+ | Operator::I8x16Shl
3151
+ | Operator::I8x16ShrS
3152
+ | Operator::I8x16ShrU
3153
+ | Operator::I8x16Add
3154
+ | Operator::I8x16AddSatS
3155
+ | Operator::I8x16AddSatU
3156
+ | Operator::I8x16Sub
3157
+ | Operator::I8x16SubSatS
3158
+ | Operator::I8x16SubSatU
3159
+ | Operator::I8x16MinS
3160
+ | Operator::I8x16MinU
3161
+ | Operator::I8x16MaxS
3162
+ | Operator::I8x16MaxU
3163
+ | Operator::I8x16AvgrU
3164
+ | Operator::I8x16Bitmask
3165
+ | Operator::I8x16Popcnt
3166
+ | Operator::I8x16RelaxedLaneselect => I8X16,
3167
+
3168
+ Operator::I16x8Splat
3169
+ | Operator::V128Load16Splat { .. }
3170
+ | Operator::V128Load16Lane { .. }
3171
+ | Operator::V128Store16Lane { .. }
3172
+ | Operator::I16x8ExtractLaneS { .. }
3173
+ | Operator::I16x8ExtractLaneU { .. }
3174
+ | Operator::I16x8ReplaceLane { .. }
3175
+ | Operator::I16x8Eq
3176
+ | Operator::I16x8Ne
3177
+ | Operator::I16x8LtS
3178
+ | Operator::I16x8LtU
3179
+ | Operator::I16x8GtS
3180
+ | Operator::I16x8GtU
3181
+ | Operator::I16x8LeS
3182
+ | Operator::I16x8LeU
3183
+ | Operator::I16x8GeS
3184
+ | Operator::I16x8GeU
3185
+ | Operator::I16x8Neg
3186
+ | Operator::I16x8Abs
3187
+ | Operator::I16x8AllTrue
3188
+ | Operator::I16x8Shl
3189
+ | Operator::I16x8ShrS
3190
+ | Operator::I16x8ShrU
3191
+ | Operator::I16x8Add
3192
+ | Operator::I16x8AddSatS
3193
+ | Operator::I16x8AddSatU
3194
+ | Operator::I16x8Sub
3195
+ | Operator::I16x8SubSatS
3196
+ | Operator::I16x8SubSatU
3197
+ | Operator::I16x8MinS
3198
+ | Operator::I16x8MinU
3199
+ | Operator::I16x8MaxS
3200
+ | Operator::I16x8MaxU
3201
+ | Operator::I16x8AvgrU
3202
+ | Operator::I16x8Mul
3203
+ | Operator::I16x8Bitmask
3204
+ | Operator::I16x8RelaxedLaneselect => I16X8,
3205
+
3206
+ Operator::I32x4Splat
3207
+ | Operator::V128Load32Splat { .. }
3208
+ | Operator::V128Load32Lane { .. }
3209
+ | Operator::V128Store32Lane { .. }
3210
+ | Operator::I32x4ExtractLane { .. }
3211
+ | Operator::I32x4ReplaceLane { .. }
3212
+ | Operator::I32x4Eq
3213
+ | Operator::I32x4Ne
3214
+ | Operator::I32x4LtS
3215
+ | Operator::I32x4LtU
3216
+ | Operator::I32x4GtS
3217
+ | Operator::I32x4GtU
3218
+ | Operator::I32x4LeS
3219
+ | Operator::I32x4LeU
3220
+ | Operator::I32x4GeS
3221
+ | Operator::I32x4GeU
3222
+ | Operator::I32x4Neg
3223
+ | Operator::I32x4Abs
3224
+ | Operator::I32x4AllTrue
3225
+ | Operator::I32x4Shl
3226
+ | Operator::I32x4ShrS
3227
+ | Operator::I32x4ShrU
3228
+ | Operator::I32x4Add
3229
+ | Operator::I32x4Sub
3230
+ | Operator::I32x4Mul
3231
+ | Operator::I32x4MinS
3232
+ | Operator::I32x4MinU
3233
+ | Operator::I32x4MaxS
3234
+ | Operator::I32x4MaxU
3235
+ | Operator::I32x4Bitmask
3236
+ | Operator::I32x4TruncSatF32x4S
3237
+ | Operator::I32x4TruncSatF32x4U
3238
+ | Operator::I32x4RelaxedLaneselect
3239
+ | Operator::V128Load32Zero { .. } => I32X4,
3240
+
3241
+ Operator::I64x2Splat
3242
+ | Operator::V128Load64Splat { .. }
3243
+ | Operator::V128Load64Lane { .. }
3244
+ | Operator::V128Store64Lane { .. }
3245
+ | Operator::I64x2ExtractLane { .. }
3246
+ | Operator::I64x2ReplaceLane { .. }
3247
+ | Operator::I64x2Eq
3248
+ | Operator::I64x2Ne
3249
+ | Operator::I64x2LtS
3250
+ | Operator::I64x2GtS
3251
+ | Operator::I64x2LeS
3252
+ | Operator::I64x2GeS
3253
+ | Operator::I64x2Neg
3254
+ | Operator::I64x2Abs
3255
+ | Operator::I64x2AllTrue
3256
+ | Operator::I64x2Shl
3257
+ | Operator::I64x2ShrS
3258
+ | Operator::I64x2ShrU
3259
+ | Operator::I64x2Add
3260
+ | Operator::I64x2Sub
3261
+ | Operator::I64x2Mul
3262
+ | Operator::I64x2Bitmask
3263
+ | Operator::I64x2RelaxedLaneselect
3264
+ | Operator::V128Load64Zero { .. } => I64X2,
3265
+
3266
+ Operator::F32x4Splat
3267
+ | Operator::F32x4ExtractLane { .. }
3268
+ | Operator::F32x4ReplaceLane { .. }
3269
+ | Operator::F32x4Eq
3270
+ | Operator::F32x4Ne
3271
+ | Operator::F32x4Lt
3272
+ | Operator::F32x4Gt
3273
+ | Operator::F32x4Le
3274
+ | Operator::F32x4Ge
3275
+ | Operator::F32x4Abs
3276
+ | Operator::F32x4Neg
3277
+ | Operator::F32x4Sqrt
3278
+ | Operator::F32x4Add
3279
+ | Operator::F32x4Sub
3280
+ | Operator::F32x4Mul
3281
+ | Operator::F32x4Div
3282
+ | Operator::F32x4Min
3283
+ | Operator::F32x4Max
3284
+ | Operator::F32x4PMin
3285
+ | Operator::F32x4PMax
3286
+ | Operator::F32x4ConvertI32x4S
3287
+ | Operator::F32x4ConvertI32x4U
3288
+ | Operator::F32x4Ceil
3289
+ | Operator::F32x4Floor
3290
+ | Operator::F32x4Trunc
3291
+ | Operator::F32x4Nearest
3292
+ | Operator::F32x4RelaxedMax
3293
+ | Operator::F32x4RelaxedMin
3294
+ | Operator::F32x4RelaxedMadd
3295
+ | Operator::F32x4RelaxedNmadd => F32X4,
3296
+
3297
+ Operator::F64x2Splat
3298
+ | Operator::F64x2ExtractLane { .. }
3299
+ | Operator::F64x2ReplaceLane { .. }
3300
+ | Operator::F64x2Eq
3301
+ | Operator::F64x2Ne
3302
+ | Operator::F64x2Lt
3303
+ | Operator::F64x2Gt
3304
+ | Operator::F64x2Le
3305
+ | Operator::F64x2Ge
3306
+ | Operator::F64x2Abs
3307
+ | Operator::F64x2Neg
3308
+ | Operator::F64x2Sqrt
3309
+ | Operator::F64x2Add
3310
+ | Operator::F64x2Sub
3311
+ | Operator::F64x2Mul
3312
+ | Operator::F64x2Div
3313
+ | Operator::F64x2Min
3314
+ | Operator::F64x2Max
3315
+ | Operator::F64x2PMin
3316
+ | Operator::F64x2PMax
3317
+ | Operator::F64x2Ceil
3318
+ | Operator::F64x2Floor
3319
+ | Operator::F64x2Trunc
3320
+ | Operator::F64x2Nearest
3321
+ | Operator::F64x2RelaxedMax
3322
+ | Operator::F64x2RelaxedMin
3323
+ | Operator::F64x2RelaxedMadd
3324
+ | Operator::F64x2RelaxedNmadd => F64X2,
3325
+
3326
+ _ => unimplemented!(
3327
+ "Currently only SIMD instructions are mapped to their return type; the \
3328
+ following instruction is not mapped: {:?}",
3329
+ operator
3330
+ ),
3331
+ }
3332
+ }
3333
+
3334
+ /// Some SIMD operations only operate on I8X16 in CLIF; this will convert them to that type by
3335
+ /// adding a bitcast if necessary.
3336
+ fn optionally_bitcast_vector(
3337
+ value: Value,
3338
+ needed_type: Type,
3339
+ builder: &mut FunctionBuilder,
3340
+ ) -> Value {
3341
+ if builder.func.dfg.value_type(value) != needed_type {
3342
+ let mut flags = MemFlags::new();
3343
+ flags.set_endianness(ir::Endianness::Little);
3344
+ builder.ins().bitcast(needed_type, flags, value)
3345
+ } else {
3346
+ value
3347
+ }
3348
+ }
3349
+
3350
+ #[inline(always)]
3351
+ fn is_non_canonical_v128(ty: ir::Type) -> bool {
3352
+ match ty {
3353
+ I64X2 | I32X4 | I16X8 | F32X4 | F64X2 => true,
3354
+ _ => false,
3355
+ }
3356
+ }
3357
+
3358
+ /// Cast to I8X16, any vector values in `values` that are of "non-canonical" type (meaning, not
3359
+ /// I8X16), and return them in a slice. A pre-scan is made to determine whether any casts are
3360
+ /// actually necessary, and if not, the original slice is returned. Otherwise the cast values
3361
+ /// are returned in a slice that belongs to the caller-supplied `SmallVec`.
3362
+ fn canonicalise_v128_values<'a>(
3363
+ tmp_canonicalised: &'a mut SmallVec<[ir::Value; 16]>,
3364
+ builder: &mut FunctionBuilder,
3365
+ values: &'a [ir::Value],
3366
+ ) -> &'a [ir::Value] {
3367
+ debug_assert!(tmp_canonicalised.is_empty());
3368
+ // First figure out if any of the parameters need to be cast. Mostly they don't need to be.
3369
+ let any_non_canonical = values
3370
+ .iter()
3371
+ .any(|v| is_non_canonical_v128(builder.func.dfg.value_type(*v)));
3372
+ // Hopefully we take this exit most of the time, hence doing no heap allocation.
3373
+ if !any_non_canonical {
3374
+ return values;
3375
+ }
3376
+ // Otherwise we'll have to cast, and push the resulting `Value`s into `canonicalised`.
3377
+ for v in values {
3378
+ tmp_canonicalised.push(if is_non_canonical_v128(builder.func.dfg.value_type(*v)) {
3379
+ let mut flags = MemFlags::new();
3380
+ flags.set_endianness(ir::Endianness::Little);
3381
+ builder.ins().bitcast(I8X16, flags, *v)
3382
+ } else {
3383
+ *v
3384
+ });
3385
+ }
3386
+ tmp_canonicalised.as_slice()
3387
+ }
3388
+
3389
+ /// Generate a `jump` instruction, but first cast all 128-bit vector values to I8X16 if they
3390
+ /// don't have that type. This is done in somewhat roundabout way so as to ensure that we
3391
+ /// almost never have to do any heap allocation.
3392
+ fn canonicalise_then_jump(
3393
+ builder: &mut FunctionBuilder,
3394
+ destination: ir::Block,
3395
+ params: &[ir::Value],
3396
+ ) -> ir::Inst {
3397
+ let mut tmp_canonicalised = SmallVec::<[ir::Value; 16]>::new();
3398
+ let canonicalised = canonicalise_v128_values(&mut tmp_canonicalised, builder, params);
3399
+ builder.ins().jump(destination, canonicalised)
3400
+ }
3401
+
3402
+ /// The same but for a `brif` instruction.
3403
+ fn canonicalise_brif(
3404
+ builder: &mut FunctionBuilder,
3405
+ cond: ir::Value,
3406
+ block_then: ir::Block,
3407
+ params_then: &[ir::Value],
3408
+ block_else: ir::Block,
3409
+ params_else: &[ir::Value],
3410
+ ) -> ir::Inst {
3411
+ let mut tmp_canonicalised_then = SmallVec::<[ir::Value; 16]>::new();
3412
+ let canonicalised_then =
3413
+ canonicalise_v128_values(&mut tmp_canonicalised_then, builder, params_then);
3414
+ let mut tmp_canonicalised_else = SmallVec::<[ir::Value; 16]>::new();
3415
+ let canonicalised_else =
3416
+ canonicalise_v128_values(&mut tmp_canonicalised_else, builder, params_else);
3417
+ builder.ins().brif(
3418
+ cond,
3419
+ block_then,
3420
+ canonicalised_then,
3421
+ block_else,
3422
+ canonicalised_else,
3423
+ )
3424
+ }
3425
+
3426
+ /// A helper for popping and bitcasting a single value; since SIMD values can lose their type by
3427
+ /// using v128 (i.e. CLIF's I8x16) we must re-type the values using a bitcast to avoid CLIF
3428
+ /// typing issues.
3429
+ fn pop1_with_bitcast(
3430
+ state: &mut FuncTranslationState,
3431
+ needed_type: Type,
3432
+ builder: &mut FunctionBuilder,
3433
+ ) -> Value {
3434
+ optionally_bitcast_vector(state.pop1(), needed_type, builder)
3435
+ }
3436
+
3437
+ /// A helper for popping and bitcasting two values; since SIMD values can lose their type by
3438
+ /// using v128 (i.e. CLIF's I8x16) we must re-type the values using a bitcast to avoid CLIF
3439
+ /// typing issues.
3440
+ fn pop2_with_bitcast(
3441
+ state: &mut FuncTranslationState,
3442
+ needed_type: Type,
3443
+ builder: &mut FunctionBuilder,
3444
+ ) -> (Value, Value) {
3445
+ let (a, b) = state.pop2();
3446
+ let bitcast_a = optionally_bitcast_vector(a, needed_type, builder);
3447
+ let bitcast_b = optionally_bitcast_vector(b, needed_type, builder);
3448
+ (bitcast_a, bitcast_b)
3449
+ }
3450
+
3451
+ fn pop3_with_bitcast(
3452
+ state: &mut FuncTranslationState,
3453
+ needed_type: Type,
3454
+ builder: &mut FunctionBuilder,
3455
+ ) -> (Value, Value, Value) {
3456
+ let (a, b, c) = state.pop3();
3457
+ let bitcast_a = optionally_bitcast_vector(a, needed_type, builder);
3458
+ let bitcast_b = optionally_bitcast_vector(b, needed_type, builder);
3459
+ let bitcast_c = optionally_bitcast_vector(c, needed_type, builder);
3460
+ (bitcast_a, bitcast_b, bitcast_c)
3461
+ }
3462
+
3463
+ fn bitcast_arguments<'a>(
3464
+ builder: &FunctionBuilder,
3465
+ arguments: &'a mut [Value],
3466
+ params: &[ir::AbiParam],
3467
+ param_predicate: impl Fn(usize) -> bool,
3468
+ ) -> Vec<(Type, &'a mut Value)> {
3469
+ let filtered_param_types = params
3470
+ .iter()
3471
+ .enumerate()
3472
+ .filter(|(i, _)| param_predicate(*i))
3473
+ .map(|(_, param)| param.value_type);
3474
+
3475
+ // zip_eq, from the itertools::Itertools trait, is like Iterator::zip but panics if one
3476
+ // iterator ends before the other. The `param_predicate` is required to select exactly as many
3477
+ // elements of `params` as there are elements in `arguments`.
3478
+ let pairs = filtered_param_types.zip_eq(arguments.iter_mut());
3479
+
3480
+ // The arguments which need to be bitcasted are those which have some vector type but the type
3481
+ // expected by the parameter is not the same vector type as that of the provided argument.
3482
+ pairs
3483
+ .filter(|(param_type, _)| param_type.is_vector())
3484
+ .filter(|(param_type, arg)| {
3485
+ let arg_type = builder.func.dfg.value_type(**arg);
3486
+ assert!(
3487
+ arg_type.is_vector(),
3488
+ "unexpected type mismatch: expected {}, argument {} was actually of type {}",
3489
+ param_type,
3490
+ *arg,
3491
+ arg_type
3492
+ );
3493
+
3494
+ // This is the same check that would be done by `optionally_bitcast_vector`, except we
3495
+ // can't take a mutable borrow of the FunctionBuilder here, so we defer inserting the
3496
+ // bitcast instruction to the caller.
3497
+ arg_type != *param_type
3498
+ })
3499
+ .collect()
3500
+ }
3501
+
3502
+ /// A helper for bitcasting a sequence of return values for the function currently being built. If
3503
+ /// a value is a vector type that does not match its expected type, this will modify the value in
3504
+ /// place to point to the result of a `bitcast`. This conversion is necessary to translate Wasm
3505
+ /// code that uses `V128` as function parameters (or implicitly in block parameters) and still use
3506
+ /// specific CLIF types (e.g. `I32X4`) in the function body.
3507
+ pub fn bitcast_wasm_returns<FE: FuncEnvironment + ?Sized>(
3508
+ environ: &mut FE,
3509
+ arguments: &mut [Value],
3510
+ builder: &mut FunctionBuilder,
3511
+ ) {
3512
+ let changes = bitcast_arguments(builder, arguments, &builder.func.signature.returns, |i| {
3513
+ environ.is_wasm_return(&builder.func.signature, i)
3514
+ });
3515
+ for (t, arg) in changes {
3516
+ let mut flags = MemFlags::new();
3517
+ flags.set_endianness(ir::Endianness::Little);
3518
+ *arg = builder.ins().bitcast(t, flags, *arg);
3519
+ }
3520
+ }
3521
+
3522
+ /// Like `bitcast_wasm_returns`, but for the parameters being passed to a specified callee.
3523
+ fn bitcast_wasm_params<FE: FuncEnvironment + ?Sized>(
3524
+ environ: &mut FE,
3525
+ callee_signature: ir::SigRef,
3526
+ arguments: &mut [Value],
3527
+ builder: &mut FunctionBuilder,
3528
+ ) {
3529
+ let callee_signature = &builder.func.dfg.signatures[callee_signature];
3530
+ let changes = bitcast_arguments(builder, arguments, &callee_signature.params, |i| {
3531
+ environ.is_wasm_parameter(&callee_signature, i)
3532
+ });
3533
+ for (t, arg) in changes {
3534
+ let mut flags = MemFlags::new();
3535
+ flags.set_endianness(ir::Endianness::Little);
3536
+ *arg = builder.ins().bitcast(t, flags, *arg);
3537
+ }
3538
+ }