wasmtime 9.0.4 → 10.0.1

Sign up to get free protection for your applications and to get access to all the features.
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.1/.cargo-checksum.json +1 -0
  325. data/ext/cargo-vendor/wasi-cap-std-sync-10.0.1/Cargo.toml +90 -0
  326. data/ext/cargo-vendor/wasi-cap-std-sync-10.0.1/src/dir.rs +464 -0
  327. data/ext/cargo-vendor/wasi-cap-std-sync-10.0.1/src/lib.rs +141 -0
  328. data/ext/cargo-vendor/wasi-common-10.0.1/.cargo-checksum.json +1 -0
  329. data/ext/cargo-vendor/wasi-common-10.0.1/Cargo.toml +87 -0
  330. data/ext/cargo-vendor/wasi-common-10.0.1/src/ctx.rs +128 -0
  331. data/ext/cargo-vendor/wasi-common-10.0.1/src/file.rs +262 -0
  332. data/ext/cargo-vendor/wasi-common-10.0.1/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.1/.cargo-checksum.json +1 -0
  444. data/ext/cargo-vendor/wasmtime-10.0.1/Cargo.toml +183 -0
  445. data/ext/cargo-vendor/wasmtime-10.0.1/src/compiler.rs +710 -0
  446. data/ext/cargo-vendor/wasmtime-10.0.1/src/component/component.rs +382 -0
  447. data/ext/cargo-vendor/wasmtime-10.0.1/src/component/instance.rs +727 -0
  448. data/ext/cargo-vendor/wasmtime-10.0.1/src/component/matching.rs +112 -0
  449. data/ext/cargo-vendor/wasmtime-10.0.1/src/component/mod.rs +313 -0
  450. data/ext/cargo-vendor/wasmtime-10.0.1/src/config.rs +2066 -0
  451. data/ext/cargo-vendor/wasmtime-10.0.1/src/engine/serialization.rs +622 -0
  452. data/ext/cargo-vendor/wasmtime-10.0.1/src/engine.rs +757 -0
  453. data/ext/cargo-vendor/wasmtime-10.0.1/src/externals.rs +763 -0
  454. data/ext/cargo-vendor/wasmtime-10.0.1/src/func/typed.rs +638 -0
  455. data/ext/cargo-vendor/wasmtime-10.0.1/src/func.rs +2355 -0
  456. data/ext/cargo-vendor/wasmtime-10.0.1/src/instance.rs +905 -0
  457. data/ext/cargo-vendor/wasmtime-10.0.1/src/lib.rs +486 -0
  458. data/ext/cargo-vendor/wasmtime-10.0.1/src/linker.rs +1479 -0
  459. data/ext/cargo-vendor/wasmtime-10.0.1/src/memory.rs +950 -0
  460. data/ext/cargo-vendor/wasmtime-10.0.1/src/module.rs +1274 -0
  461. data/ext/cargo-vendor/wasmtime-10.0.1/src/ref.rs +109 -0
  462. data/ext/cargo-vendor/wasmtime-10.0.1/src/store/context.rs +243 -0
  463. data/ext/cargo-vendor/wasmtime-10.0.1/src/store/func_refs.rs +85 -0
  464. data/ext/cargo-vendor/wasmtime-10.0.1/src/store.rs +2166 -0
  465. data/ext/cargo-vendor/wasmtime-10.0.1/src/trampoline/func.rs +133 -0
  466. data/ext/cargo-vendor/wasmtime-10.0.1/src/trampoline/global.rs +67 -0
  467. data/ext/cargo-vendor/wasmtime-10.0.1/src/types/matching.rs +312 -0
  468. data/ext/cargo-vendor/wasmtime-10.0.1/src/types.rs +572 -0
  469. data/ext/cargo-vendor/wasmtime-10.0.1/src/values.rs +290 -0
  470. data/ext/cargo-vendor/wasmtime-asm-macros-10.0.1/.cargo-checksum.json +1 -0
  471. data/ext/cargo-vendor/wasmtime-asm-macros-10.0.1/Cargo.toml +22 -0
  472. data/ext/cargo-vendor/wasmtime-cache-10.0.1/.cargo-checksum.json +1 -0
  473. data/ext/cargo-vendor/wasmtime-cache-10.0.1/Cargo.toml +73 -0
  474. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/.cargo-checksum.json +1 -0
  475. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/Cargo.toml +58 -0
  476. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/src/bindgen.rs +316 -0
  477. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/char.wit +13 -0
  478. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/conventions.wit +39 -0
  479. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/direct-import.wit +5 -0
  480. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/empty.wit +2 -0
  481. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/flags.wit +55 -0
  482. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/floats.wit +13 -0
  483. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/function-new.wit +4 -0
  484. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/integers.wit +40 -0
  485. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/lists.wit +85 -0
  486. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/many-arguments.wit +52 -0
  487. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/multi-return.wit +14 -0
  488. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/records.wit +61 -0
  489. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/rename.wit +16 -0
  490. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/share-types.wit +21 -0
  491. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/simple-functions.wit +17 -0
  492. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/simple-lists.wit +13 -0
  493. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/simple-wasi.wit +23 -0
  494. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/small-anonymous.wit +15 -0
  495. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/smoke-default.wit +5 -0
  496. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/smoke-export.wit +7 -0
  497. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/smoke.wit +7 -0
  498. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/strings.wit +12 -0
  499. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/unions.wit +66 -0
  500. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/use-paths.wit +29 -0
  501. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/variants.wit +147 -0
  502. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen/worlds-with-types.wit +16 -0
  503. data/ext/cargo-vendor/wasmtime-component-macro-10.0.1/tests/codegen.rs +24 -0
  504. data/ext/cargo-vendor/wasmtime-component-util-10.0.1/.cargo-checksum.json +1 -0
  505. data/ext/cargo-vendor/wasmtime-component-util-10.0.1/Cargo.toml +25 -0
  506. data/ext/cargo-vendor/wasmtime-cranelift-10.0.1/.cargo-checksum.json +1 -0
  507. data/ext/cargo-vendor/wasmtime-cranelift-10.0.1/Cargo.toml +90 -0
  508. data/ext/cargo-vendor/wasmtime-cranelift-10.0.1/src/compiler.rs +1200 -0
  509. data/ext/cargo-vendor/wasmtime-cranelift-10.0.1/src/debug/transform/simulate.rs +410 -0
  510. data/ext/cargo-vendor/wasmtime-cranelift-10.0.1/src/func_environ.rs +2206 -0
  511. data/ext/cargo-vendor/wasmtime-cranelift-10.0.1/src/lib.rs +178 -0
  512. data/ext/cargo-vendor/wasmtime-cranelift-shared-10.0.1/.cargo-checksum.json +1 -0
  513. data/ext/cargo-vendor/wasmtime-cranelift-shared-10.0.1/Cargo.toml +57 -0
  514. data/ext/cargo-vendor/wasmtime-cranelift-shared-10.0.1/src/lib.rs +120 -0
  515. data/ext/cargo-vendor/wasmtime-environ-10.0.1/.cargo-checksum.json +1 -0
  516. data/ext/cargo-vendor/wasmtime-environ-10.0.1/Cargo.lock +681 -0
  517. data/ext/cargo-vendor/wasmtime-environ-10.0.1/Cargo.toml +116 -0
  518. data/ext/cargo-vendor/wasmtime-environ-10.0.1/src/component/compiler.rs +84 -0
  519. data/ext/cargo-vendor/wasmtime-environ-10.0.1/src/component/translate/inline.rs +1067 -0
  520. data/ext/cargo-vendor/wasmtime-environ-10.0.1/src/component/translate.rs +1070 -0
  521. data/ext/cargo-vendor/wasmtime-environ-10.0.1/src/component/types.rs +1916 -0
  522. data/ext/cargo-vendor/wasmtime-environ-10.0.1/src/fact.rs +623 -0
  523. data/ext/cargo-vendor/wasmtime-environ-10.0.1/src/module.rs +1083 -0
  524. data/ext/cargo-vendor/wasmtime-environ-10.0.1/src/module_environ.rs +884 -0
  525. data/ext/cargo-vendor/wasmtime-environ-10.0.1/src/trap_encoding.rs +238 -0
  526. data/ext/cargo-vendor/wasmtime-fiber-10.0.1/.cargo-checksum.json +1 -0
  527. data/ext/cargo-vendor/wasmtime-fiber-10.0.1/Cargo.toml +46 -0
  528. data/ext/cargo-vendor/wasmtime-fiber-10.0.1/src/lib.rs +305 -0
  529. data/ext/cargo-vendor/wasmtime-fiber-10.0.1/src/unix.rs +212 -0
  530. data/ext/cargo-vendor/wasmtime-fiber-10.0.1/src/windows.rs +161 -0
  531. data/ext/cargo-vendor/wasmtime-jit-10.0.1/.cargo-checksum.json +1 -0
  532. data/ext/cargo-vendor/wasmtime-jit-10.0.1/Cargo.toml +104 -0
  533. data/ext/cargo-vendor/wasmtime-jit-10.0.1/src/instantiate.rs +760 -0
  534. data/ext/cargo-vendor/wasmtime-jit-10.0.1/src/lib.rs +38 -0
  535. data/ext/cargo-vendor/wasmtime-jit-10.0.1/src/profiling/jitdump.rs +66 -0
  536. data/ext/cargo-vendor/wasmtime-jit-10.0.1/src/profiling/perfmap.rs +47 -0
  537. data/ext/cargo-vendor/wasmtime-jit-10.0.1/src/profiling/vtune.rs +80 -0
  538. data/ext/cargo-vendor/wasmtime-jit-10.0.1/src/profiling.rs +108 -0
  539. data/ext/cargo-vendor/wasmtime-jit-debug-10.0.1/.cargo-checksum.json +1 -0
  540. data/ext/cargo-vendor/wasmtime-jit-debug-10.0.1/Cargo.toml +55 -0
  541. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-10.0.1/.cargo-checksum.json +1 -0
  542. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-10.0.1/Cargo.toml +37 -0
  543. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/.cargo-checksum.json +1 -0
  544. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/Cargo.toml +110 -0
  545. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/src/component.rs +701 -0
  546. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/src/cow.rs +1060 -0
  547. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/src/debug_builtins.rs +58 -0
  548. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/src/externref.rs +1073 -0
  549. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/src/instance/allocator/pooling.rs +1368 -0
  550. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/src/instance/allocator.rs +531 -0
  551. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/src/instance.rs +1345 -0
  552. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/src/lib.rs +285 -0
  553. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/src/libcalls.rs +578 -0
  554. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/src/memory.rs +958 -0
  555. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/src/mmap/miri.rs +94 -0
  556. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/src/mmap/unix.rs +148 -0
  557. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/src/mmap/windows.rs +208 -0
  558. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/src/send_sync_ptr.rs +69 -0
  559. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/src/table.rs +595 -0
  560. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/src/traphandlers/unix.rs +387 -0
  561. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/src/traphandlers.rs +749 -0
  562. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/src/vmcontext/vm_host_func_context.rs +137 -0
  563. data/ext/cargo-vendor/wasmtime-runtime-10.0.1/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.1/.cargo-checksum.json +1 -0
  568. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/Cargo.toml +153 -0
  569. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/lib.rs +131 -0
  570. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/clocks/host.rs +73 -0
  571. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/clocks.rs +17 -0
  572. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/ctx.rs +206 -0
  573. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/error.rs +16 -0
  574. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/filesystem.rs +269 -0
  575. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/mod.rs +44 -0
  576. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/pipe.rs +233 -0
  577. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/preview1/mod.rs +1860 -0
  578. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/preview2/clocks.rs +80 -0
  579. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/preview2/env.rs +48 -0
  580. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/preview2/exit.rs +12 -0
  581. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/preview2/filesystem.rs +1020 -0
  582. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/preview2/io.rs +215 -0
  583. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/preview2/mod.rs +7 -0
  584. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/preview2/poll.rs +84 -0
  585. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/preview2/random.rs +41 -0
  586. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/random.rs +58 -0
  587. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/sched/subscription.rs +104 -0
  588. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/sched/sync.rs +156 -0
  589. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/sched.rs +105 -0
  590. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/stdio.rs +176 -0
  591. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/stream.rs +210 -0
  592. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/table.rs +107 -0
  593. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/wasi/command.rs +43 -0
  594. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/src/preview2/wasi/mod.rs +30 -0
  595. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/clocks/monotonic-clock.wit +34 -0
  596. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/clocks/timezone.wit +63 -0
  597. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/clocks/wall-clock.wit +43 -0
  598. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/filesystem/filesystem.wit +782 -0
  599. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/http/incoming-handler.wit +24 -0
  600. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/http/outgoing-handler.wit +18 -0
  601. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/http/types.wit +159 -0
  602. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/io/streams.wit +215 -0
  603. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/logging/handler.wit +34 -0
  604. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/poll/poll.wit +41 -0
  605. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/preview/command-extended.wit +36 -0
  606. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/preview/command.wit +26 -0
  607. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/preview/proxy.wit +9 -0
  608. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/preview/reactor.wit +24 -0
  609. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/random/insecure-seed.wit +24 -0
  610. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/random/insecure.wit +21 -0
  611. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/random/random.wit +25 -0
  612. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/sockets/instance-network.wit +9 -0
  613. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/sockets/ip-name-lookup.wit +69 -0
  614. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/sockets/network.wit +187 -0
  615. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/sockets/tcp-create-socket.wit +27 -0
  616. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/sockets/tcp.wit +255 -0
  617. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/sockets/udp-create-socket.wit +27 -0
  618. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/sockets/udp.wit +211 -0
  619. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/wasi-cli-base/environment.wit +16 -0
  620. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/wasi-cli-base/exit.wit +4 -0
  621. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/wasi-cli-base/preopens.wit +7 -0
  622. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/deps/wasi-cli-base/stdio.wit +17 -0
  623. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/main.wit +1 -0
  624. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/wit/test.wit +19 -0
  625. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/witx/typenames.witx +750 -0
  626. data/ext/cargo-vendor/wasmtime-wasi-10.0.1/witx/wasi_snapshot_preview1.witx +521 -0
  627. data/ext/cargo-vendor/wasmtime-winch-10.0.1/.cargo-checksum.json +1 -0
  628. data/ext/cargo-vendor/wasmtime-winch-10.0.1/Cargo.toml +63 -0
  629. data/ext/cargo-vendor/wasmtime-winch-10.0.1/src/compiler.rs +220 -0
  630. data/ext/cargo-vendor/wasmtime-wit-bindgen-10.0.1/.cargo-checksum.json +1 -0
  631. data/ext/cargo-vendor/wasmtime-wit-bindgen-10.0.1/Cargo.toml +29 -0
  632. data/ext/cargo-vendor/wasmtime-wit-bindgen-10.0.1/src/lib.rs +1631 -0
  633. data/ext/cargo-vendor/wasmtime-wit-bindgen-10.0.1/src/types.rs +179 -0
  634. data/ext/cargo-vendor/wiggle-10.0.1/.cargo-checksum.json +1 -0
  635. data/ext/cargo-vendor/wiggle-10.0.1/Cargo.toml +106 -0
  636. data/ext/cargo-vendor/wiggle-10.0.1/LICENSE +220 -0
  637. data/ext/cargo-vendor/wiggle-10.0.1/README.md +18 -0
  638. data/ext/cargo-vendor/wiggle-generate-10.0.1/.cargo-checksum.json +1 -0
  639. data/ext/cargo-vendor/wiggle-generate-10.0.1/Cargo.toml +58 -0
  640. data/ext/cargo-vendor/wiggle-generate-10.0.1/LICENSE +220 -0
  641. data/ext/cargo-vendor/wiggle-macro-10.0.1/.cargo-checksum.json +1 -0
  642. data/ext/cargo-vendor/wiggle-macro-10.0.1/Cargo.toml +55 -0
  643. data/ext/cargo-vendor/wiggle-macro-10.0.1/LICENSE +220 -0
  644. data/ext/cargo-vendor/wiggle-macro-10.0.1/src/lib.rs +210 -0
  645. data/ext/cargo-vendor/winch-codegen-0.8.1/.cargo-checksum.json +1 -0
  646. data/ext/cargo-vendor/winch-codegen-0.8.1/Cargo.toml +62 -0
  647. data/ext/cargo-vendor/winch-codegen-0.8.1/src/abi/local.rs +70 -0
  648. data/ext/cargo-vendor/winch-codegen-0.8.1/src/abi/mod.rs +237 -0
  649. data/ext/cargo-vendor/winch-codegen-0.8.1/src/codegen/call.rs +225 -0
  650. data/ext/cargo-vendor/winch-codegen-0.8.1/src/codegen/context.rs +270 -0
  651. data/ext/cargo-vendor/winch-codegen-0.8.1/src/codegen/env.rs +52 -0
  652. data/ext/cargo-vendor/winch-codegen-0.8.1/src/codegen/mod.rs +214 -0
  653. data/ext/cargo-vendor/winch-codegen-0.8.1/src/frame/mod.rs +172 -0
  654. data/ext/cargo-vendor/winch-codegen-0.8.1/src/isa/aarch64/abi.rs +243 -0
  655. data/ext/cargo-vendor/winch-codegen-0.8.1/src/isa/aarch64/asm.rs +300 -0
  656. data/ext/cargo-vendor/winch-codegen-0.8.1/src/isa/aarch64/masm.rs +230 -0
  657. data/ext/cargo-vendor/winch-codegen-0.8.1/src/isa/aarch64/mod.rs +127 -0
  658. data/ext/cargo-vendor/winch-codegen-0.8.1/src/isa/aarch64/regs.rs +166 -0
  659. data/ext/cargo-vendor/winch-codegen-0.8.1/src/isa/mod.rs +215 -0
  660. data/ext/cargo-vendor/winch-codegen-0.8.1/src/isa/x64/abi.rs +369 -0
  661. data/ext/cargo-vendor/winch-codegen-0.8.1/src/isa/x64/address.rs +17 -0
  662. data/ext/cargo-vendor/winch-codegen-0.8.1/src/isa/x64/asm.rs +576 -0
  663. data/ext/cargo-vendor/winch-codegen-0.8.1/src/isa/x64/masm.rs +288 -0
  664. data/ext/cargo-vendor/winch-codegen-0.8.1/src/isa/x64/mod.rs +149 -0
  665. data/ext/cargo-vendor/winch-codegen-0.8.1/src/isa/x64/regs.rs +192 -0
  666. data/ext/cargo-vendor/winch-codegen-0.8.1/src/lib.rs +21 -0
  667. data/ext/cargo-vendor/winch-codegen-0.8.1/src/masm.rs +255 -0
  668. data/ext/cargo-vendor/winch-codegen-0.8.1/src/regalloc.rs +70 -0
  669. data/ext/cargo-vendor/winch-codegen-0.8.1/src/stack.rs +235 -0
  670. data/ext/cargo-vendor/winch-codegen-0.8.1/src/trampoline.rs +494 -0
  671. data/ext/cargo-vendor/winch-codegen-0.8.1/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.1}/LICENSE +0 -0
  1669. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.1}/README.md +0 -0
  1670. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.1}/src/clocks.rs +0 -0
  1671. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.1}/src/file.rs +0 -0
  1672. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.1}/src/net.rs +0 -0
  1673. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.1}/src/sched/unix.rs +0 -0
  1674. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.1}/src/sched/windows.rs +0 -0
  1675. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.1}/src/sched.rs +0 -0
  1676. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.1}/src/stdio.rs +0 -0
  1677. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/LICENSE +0 -0
  1678. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/README.md +0 -0
  1679. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/README.md +0 -0
  1680. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/docs/README.md +0 -0
  1681. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/phases/README.md +0 -0
  1682. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/phases/ephemeral/docs.md +0 -0
  1683. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/phases/ephemeral/witx/typenames.witx +0 -0
  1684. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_args.witx +0 -0
  1685. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_clock.witx +0 -0
  1686. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_environ.witx +0 -0
  1687. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_fd.witx +0 -0
  1688. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_path.witx +0 -0
  1689. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_poll.witx +0 -0
  1690. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_proc.witx +0 -0
  1691. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_random.witx +0 -0
  1692. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_sched.witx +0 -0
  1693. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_sock.witx +0 -0
  1694. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/phases/old/snapshot_0/docs.md +0 -0
  1695. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/phases/old/snapshot_0/witx/typenames.witx +0 -0
  1696. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/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.1}/WASI/phases/snapshot/docs.html +0 -0
  1698. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/phases/snapshot/docs.md +0 -0
  1699. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/phases/snapshot/witx/typenames.witx +0 -0
  1700. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/phases/snapshot/witx/wasi_snapshot_preview1.witx +0 -0
  1701. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/proposal-template/README.md +0 -0
  1702. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/proposals/README.md +0 -0
  1703. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/snapshots/README.md +0 -0
  1704. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/WASI/standard/README.md +0 -0
  1705. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/build.rs +0 -0
  1706. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/src/clocks.rs +0 -0
  1707. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/src/dir.rs +0 -0
  1708. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/src/error.rs +0 -0
  1709. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/src/lib.rs +0 -0
  1710. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/src/pipe.rs +0 -0
  1711. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/src/random.rs +0 -0
  1712. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/src/sched/subscription.rs +0 -0
  1713. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/src/sched.rs +0 -0
  1714. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/src/snapshots/mod.rs +0 -0
  1715. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/src/snapshots/preview_0.rs +0 -0
  1716. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/src/snapshots/preview_1/error.rs +0 -0
  1717. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/src/string_array.rs +0 -0
  1718. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.1}/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.1}/LICENSE +0 -0
  1749. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/README.md +0 -0
  1750. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/code.rs +0 -0
  1751. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/component/func/host.rs +0 -0
  1752. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/component/func/options.rs +0 -0
  1753. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/component/func/typed.rs +0 -0
  1754. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/component/func.rs +0 -0
  1755. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/component/linker.rs +0 -0
  1756. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/component/storage.rs +0 -0
  1757. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/component/store.rs +0 -0
  1758. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/component/types.rs +0 -0
  1759. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/component/values.rs +0 -0
  1760. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/limits.rs +0 -0
  1761. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/module/registry.rs +0 -0
  1762. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/profiling.rs +0 -0
  1763. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/signatures.rs +0 -0
  1764. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/store/data.rs +0 -0
  1765. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/trampoline/memory.rs +0 -0
  1766. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/trampoline/table.rs +0 -0
  1767. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/trampoline.rs +0 -0
  1768. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/trap.rs +0 -0
  1769. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/unix.rs +0 -0
  1770. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.1}/src/windows.rs +0 -0
  1771. /data/ext/cargo-vendor/{wasmtime-asm-macros-9.0.4 → wasmtime-asm-macros-10.0.1}/src/lib.rs +0 -0
  1772. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-cache-10.0.1}/LICENSE +0 -0
  1773. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.1}/build.rs +0 -0
  1774. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.1}/src/config/tests.rs +0 -0
  1775. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.1}/src/config.rs +0 -0
  1776. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.1}/src/lib.rs +0 -0
  1777. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.1}/src/tests.rs +0 -0
  1778. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.1}/src/worker/tests/system_time_stub.rs +0 -0
  1779. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.1}/src/worker/tests.rs +0 -0
  1780. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.1}/src/worker.rs +0 -0
  1781. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.1}/tests/cache_write_default_config.rs +0 -0
  1782. /data/ext/cargo-vendor/{wasmtime-component-macro-9.0.4 → wasmtime-component-macro-10.0.1}/src/component.rs +0 -0
  1783. /data/ext/cargo-vendor/{wasmtime-component-macro-9.0.4 → wasmtime-component-macro-10.0.1}/src/lib.rs +0 -0
  1784. /data/ext/cargo-vendor/{wasmtime-component-util-9.0.4 → wasmtime-component-util-10.0.1}/src/lib.rs +0 -0
  1785. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-cranelift-10.0.1}/LICENSE +0 -0
  1786. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.1}/SECURITY.md +0 -0
  1787. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.1}/src/builder.rs +0 -0
  1788. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.1}/src/compiler/component.rs +0 -0
  1789. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.1}/src/debug/gc.rs +0 -0
  1790. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.1}/src/debug/transform/address_transform.rs +0 -0
  1791. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.1}/src/debug/transform/attr.rs +0 -0
  1792. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.1}/src/debug/transform/expression.rs +0 -0
  1793. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.1}/src/debug/transform/line_program.rs +0 -0
  1794. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.1}/src/debug/transform/mod.rs +0 -0
  1795. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.1}/src/debug/transform/range_info_builder.rs +0 -0
  1796. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.1}/src/debug/transform/refs.rs +0 -0
  1797. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.1}/src/debug/transform/unit.rs +0 -0
  1798. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.1}/src/debug/transform/utils.rs +0 -0
  1799. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.1}/src/debug/write_debuginfo.rs +0 -0
  1800. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.1}/src/debug.rs +0 -0
  1801. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-9.0.4 → wasmtime-cranelift-shared-10.0.1}/src/compiled_function.rs +0 -0
  1802. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-9.0.4 → wasmtime-cranelift-shared-10.0.1}/src/isa_builder.rs +0 -0
  1803. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-9.0.4 → wasmtime-cranelift-shared-10.0.1}/src/obj.rs +0 -0
  1804. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-environ-10.0.1}/LICENSE +0 -0
  1805. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/examples/factc.rs +0 -0
  1806. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/address_map.rs +0 -0
  1807. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/builtin.rs +0 -0
  1808. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/compilation.rs +0 -0
  1809. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/component/dfg.rs +0 -0
  1810. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/component/info.rs +0 -0
  1811. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/component/translate/adapt.rs +0 -0
  1812. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/component/vmcomponent_offsets.rs +0 -0
  1813. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/component.rs +0 -0
  1814. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/fact/core_types.rs +0 -0
  1815. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/fact/signature.rs +0 -0
  1816. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/fact/trampoline.rs +0 -0
  1817. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/fact/transcode.rs +0 -0
  1818. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/fact/traps.rs +0 -0
  1819. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/lib.rs +0 -0
  1820. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/module_types.rs +0 -0
  1821. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/obj.rs +0 -0
  1822. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/ref_bits.rs +0 -0
  1823. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/scopevec.rs +0 -0
  1824. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/stack_map.rs +0 -0
  1825. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/tunables.rs +0 -0
  1826. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.1}/src/vmoffsets.rs +0 -0
  1827. /data/ext/cargo-vendor/{wasmtime-types-9.0.4 → wasmtime-fiber-10.0.1}/LICENSE +0 -0
  1828. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.1}/build.rs +0 -0
  1829. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.1}/src/unix/aarch64.rs +0 -0
  1830. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.1}/src/unix/arm.rs +0 -0
  1831. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.1}/src/unix/riscv64.rs +0 -0
  1832. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.1}/src/unix/s390x.S +0 -0
  1833. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.1}/src/unix/x86.rs +0 -0
  1834. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.1}/src/unix/x86_64.rs +0 -0
  1835. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.1}/src/windows.c +0 -0
  1836. /data/ext/cargo-vendor/{wasmtime-wasi-9.0.4 → wasmtime-jit-10.0.1}/LICENSE +0 -0
  1837. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.1}/src/code_memory.rs +0 -0
  1838. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.1}/src/debug.rs +0 -0
  1839. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.1}/src/demangling.rs +0 -0
  1840. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.1}/src/unwind/miri.rs +0 -0
  1841. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.1}/src/unwind/systemv.rs +0 -0
  1842. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.1}/src/unwind/winx64.rs +0 -0
  1843. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.1}/src/unwind.rs +0 -0
  1844. /data/ext/cargo-vendor/{wasmtime-jit-debug-9.0.4 → wasmtime-jit-debug-10.0.1}/README.md +0 -0
  1845. /data/ext/cargo-vendor/{wasmtime-jit-debug-9.0.4 → wasmtime-jit-debug-10.0.1}/src/gdb_jit_int.rs +0 -0
  1846. /data/ext/cargo-vendor/{wasmtime-jit-debug-9.0.4 → wasmtime-jit-debug-10.0.1}/src/lib.rs +0 -0
  1847. /data/ext/cargo-vendor/{wasmtime-jit-debug-9.0.4 → wasmtime-jit-debug-10.0.1}/src/perf_jitdump.rs +0 -0
  1848. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-9.0.4 → wasmtime-jit-icache-coherence-10.0.1}/src/lib.rs +0 -0
  1849. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-9.0.4 → wasmtime-jit-icache-coherence-10.0.1}/src/libc.rs +0 -0
  1850. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-9.0.4 → wasmtime-jit-icache-coherence-10.0.1}/src/miri.rs +0 -0
  1851. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-9.0.4 → wasmtime-jit-icache-coherence-10.0.1}/src/win.rs +0 -0
  1852. /data/ext/cargo-vendor/{wiggle-9.0.4 → wasmtime-runtime-10.0.1}/LICENSE +0 -0
  1853. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/build.rs +0 -0
  1854. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/component/transcode.rs +0 -0
  1855. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/export.rs +0 -0
  1856. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/helpers.c +0 -0
  1857. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/imports.rs +0 -0
  1858. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/instance/allocator/pooling/index_allocator.rs +0 -0
  1859. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/instance/allocator/pooling/unix.rs +0 -0
  1860. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/instance/allocator/pooling/windows.rs +0 -0
  1861. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/mmap.rs +0 -0
  1862. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/mmap_vec.rs +0 -0
  1863. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/module_id.rs +0 -0
  1864. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/parking_spot.rs +0 -0
  1865. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/store_box.rs +0 -0
  1866. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/trampolines/aarch64.rs +0 -0
  1867. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/trampolines/riscv64.rs +0 -0
  1868. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/trampolines/s390x.S +0 -0
  1869. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/trampolines/s390x.rs +0 -0
  1870. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/trampolines/x86_64.rs +0 -0
  1871. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/trampolines.rs +0 -0
  1872. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/traphandlers/backtrace/aarch64.rs +0 -0
  1873. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/traphandlers/backtrace/riscv64.rs +0 -0
  1874. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/traphandlers/backtrace/s390x.rs +0 -0
  1875. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/traphandlers/backtrace/x86_64.rs +0 -0
  1876. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/traphandlers/backtrace.rs +0 -0
  1877. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/src/traphandlers/macos.rs +0 -0
  1878. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.1}/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.1}/LICENSE +0 -0
  1882. /data/ext/cargo-vendor/{wasmtime-wasi-9.0.4 → wasmtime-wasi-10.0.1}/README.md +0 -0
  1883. /data/ext/cargo-vendor/{wasmtime-wasi-9.0.4 → wasmtime-wasi-10.0.1}/build.rs +0 -0
  1884. /data/ext/cargo-vendor/{wasmtime-winch-9.0.4 → wasmtime-winch-10.0.1}/LICENSE +0 -0
  1885. /data/ext/cargo-vendor/{wasmtime-winch-9.0.4 → wasmtime-winch-10.0.1}/src/builder.rs +0 -0
  1886. /data/ext/cargo-vendor/{wasmtime-winch-9.0.4 → wasmtime-winch-10.0.1}/src/lib.rs +0 -0
  1887. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-9.0.4 → wasmtime-wit-bindgen-10.0.1}/src/rust.rs +0 -0
  1888. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-9.0.4 → wasmtime-wit-bindgen-10.0.1}/src/source.rs +0 -0
  1889. /data/ext/cargo-vendor/{wiggle-9.0.4 → wiggle-10.0.1}/src/borrow.rs +0 -0
  1890. /data/ext/cargo-vendor/{wiggle-9.0.4 → wiggle-10.0.1}/src/error.rs +0 -0
  1891. /data/ext/cargo-vendor/{wiggle-9.0.4 → wiggle-10.0.1}/src/guest_type.rs +0 -0
  1892. /data/ext/cargo-vendor/{wiggle-9.0.4 → wiggle-10.0.1}/src/lib.rs +0 -0
  1893. /data/ext/cargo-vendor/{wiggle-9.0.4 → wiggle-10.0.1}/src/region.rs +0 -0
  1894. /data/ext/cargo-vendor/{wiggle-9.0.4 → wiggle-10.0.1}/src/wasmtime.rs +0 -0
  1895. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.1}/README.md +0 -0
  1896. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.1}/src/codegen_settings.rs +0 -0
  1897. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.1}/src/config.rs +0 -0
  1898. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.1}/src/funcs.rs +0 -0
  1899. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.1}/src/lib.rs +0 -0
  1900. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.1}/src/lifetimes.rs +0 -0
  1901. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.1}/src/module_trait.rs +0 -0
  1902. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.1}/src/names.rs +0 -0
  1903. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.1}/src/types/error.rs +0 -0
  1904. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.1}/src/types/flags.rs +0 -0
  1905. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.1}/src/types/handle.rs +0 -0
  1906. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.1}/src/types/mod.rs +0 -0
  1907. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.1}/src/types/record.rs +0 -0
  1908. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.1}/src/types/variant.rs +0 -0
  1909. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.1}/src/wasmtime.rs +0 -0
  1910. /data/ext/cargo-vendor/{winch-codegen-0.7.4 → winch-codegen-0.8.1}/LICENSE +0 -0
  1911. /data/ext/cargo-vendor/{winch-codegen-0.7.4 → winch-codegen-0.8.1}/build.rs +0 -0
  1912. /data/ext/cargo-vendor/{winch-codegen-0.7.4 → winch-codegen-0.8.1}/src/isa/aarch64/address.rs +0 -0
  1913. /data/ext/cargo-vendor/{winch-codegen-0.7.4 → winch-codegen-0.8.1}/src/isa/reg.rs +0 -0
  1914. /data/ext/cargo-vendor/{winch-codegen-0.7.4 → winch-codegen-0.8.1}/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,3378 @@
1
+ use crate::alloc::alloc::{handle_alloc_error, Layout};
2
+ use crate::scopeguard::{guard, ScopeGuard};
3
+ use crate::TryReserveError;
4
+ use core::iter::FusedIterator;
5
+ use core::marker::PhantomData;
6
+ use core::mem;
7
+ use core::mem::ManuallyDrop;
8
+ use core::mem::MaybeUninit;
9
+ use core::ptr::NonNull;
10
+ use core::{hint, ptr};
11
+
12
+ cfg_if! {
13
+ // Use the SSE2 implementation if possible: it allows us to scan 16 buckets
14
+ // at once instead of 8. We don't bother with AVX since it would require
15
+ // runtime dispatch and wouldn't gain us much anyways: the probability of
16
+ // finding a match drops off drastically after the first few buckets.
17
+ //
18
+ // I attempted an implementation on ARM using NEON instructions, but it
19
+ // turns out that most NEON instructions have multi-cycle latency, which in
20
+ // the end outweighs any gains over the generic implementation.
21
+ if #[cfg(all(
22
+ target_feature = "sse2",
23
+ any(target_arch = "x86", target_arch = "x86_64"),
24
+ not(miri)
25
+ ))] {
26
+ mod sse2;
27
+ use sse2 as imp;
28
+ } else if #[cfg(all(target_arch = "aarch64", target_feature = "neon"))] {
29
+ mod neon;
30
+ use neon as imp;
31
+ } else {
32
+ mod generic;
33
+ use generic as imp;
34
+ }
35
+ }
36
+
37
+ mod alloc;
38
+ pub(crate) use self::alloc::{do_alloc, Allocator, Global};
39
+
40
+ mod bitmask;
41
+
42
+ use self::bitmask::BitMaskIter;
43
+ use self::imp::Group;
44
+
45
+ // Branch prediction hint. This is currently only available on nightly but it
46
+ // consistently improves performance by 10-15%.
47
+ #[cfg(not(feature = "nightly"))]
48
+ use core::convert::identity as likely;
49
+ #[cfg(not(feature = "nightly"))]
50
+ use core::convert::identity as unlikely;
51
+ #[cfg(feature = "nightly")]
52
+ use core::intrinsics::{likely, unlikely};
53
+
54
+ // Use strict provenance functions if available.
55
+ #[cfg(feature = "nightly")]
56
+ use core::ptr::invalid_mut;
57
+ // Implement it with a cast otherwise.
58
+ #[cfg(not(feature = "nightly"))]
59
+ #[inline(always)]
60
+ fn invalid_mut<T>(addr: usize) -> *mut T {
61
+ addr as *mut T
62
+ }
63
+
64
+ #[inline]
65
+ unsafe fn offset_from<T>(to: *const T, from: *const T) -> usize {
66
+ to.offset_from(from) as usize
67
+ }
68
+
69
+ /// Whether memory allocation errors should return an error or abort.
70
+ #[derive(Copy, Clone)]
71
+ enum Fallibility {
72
+ Fallible,
73
+ Infallible,
74
+ }
75
+
76
+ impl Fallibility {
77
+ /// Error to return on capacity overflow.
78
+ #[cfg_attr(feature = "inline-more", inline)]
79
+ fn capacity_overflow(self) -> TryReserveError {
80
+ match self {
81
+ Fallibility::Fallible => TryReserveError::CapacityOverflow,
82
+ Fallibility::Infallible => panic!("Hash table capacity overflow"),
83
+ }
84
+ }
85
+
86
+ /// Error to return on allocation error.
87
+ #[cfg_attr(feature = "inline-more", inline)]
88
+ fn alloc_err(self, layout: Layout) -> TryReserveError {
89
+ match self {
90
+ Fallibility::Fallible => TryReserveError::AllocError { layout },
91
+ Fallibility::Infallible => handle_alloc_error(layout),
92
+ }
93
+ }
94
+ }
95
+
96
+ /// Control byte value for an empty bucket.
97
+ const EMPTY: u8 = 0b1111_1111;
98
+
99
+ /// Control byte value for a deleted bucket.
100
+ const DELETED: u8 = 0b1000_0000;
101
+
102
+ /// Checks whether a control byte represents a full bucket (top bit is clear).
103
+ #[inline]
104
+ fn is_full(ctrl: u8) -> bool {
105
+ ctrl & 0x80 == 0
106
+ }
107
+
108
+ /// Checks whether a control byte represents a special value (top bit is set).
109
+ #[inline]
110
+ fn is_special(ctrl: u8) -> bool {
111
+ ctrl & 0x80 != 0
112
+ }
113
+
114
+ /// Checks whether a special control value is EMPTY (just check 1 bit).
115
+ #[inline]
116
+ fn special_is_empty(ctrl: u8) -> bool {
117
+ debug_assert!(is_special(ctrl));
118
+ ctrl & 0x01 != 0
119
+ }
120
+
121
+ /// Primary hash function, used to select the initial bucket to probe from.
122
+ #[inline]
123
+ #[allow(clippy::cast_possible_truncation)]
124
+ fn h1(hash: u64) -> usize {
125
+ // On 32-bit platforms we simply ignore the higher hash bits.
126
+ hash as usize
127
+ }
128
+
129
+ // Constant for h2 function that grabing the top 7 bits of the hash.
130
+ const MIN_HASH_LEN: usize = if mem::size_of::<usize>() < mem::size_of::<u64>() {
131
+ mem::size_of::<usize>()
132
+ } else {
133
+ mem::size_of::<u64>()
134
+ };
135
+
136
+ /// Secondary hash function, saved in the low 7 bits of the control byte.
137
+ #[inline]
138
+ #[allow(clippy::cast_possible_truncation)]
139
+ fn h2(hash: u64) -> u8 {
140
+ // Grab the top 7 bits of the hash. While the hash is normally a full 64-bit
141
+ // value, some hash functions (such as FxHash) produce a usize result
142
+ // instead, which means that the top 32 bits are 0 on 32-bit platforms.
143
+ // So we use MIN_HASH_LEN constant to handle this.
144
+ let top7 = hash >> (MIN_HASH_LEN * 8 - 7);
145
+ (top7 & 0x7f) as u8 // truncation
146
+ }
147
+
148
+ /// Probe sequence based on triangular numbers, which is guaranteed (since our
149
+ /// table size is a power of two) to visit every group of elements exactly once.
150
+ ///
151
+ /// A triangular probe has us jump by 1 more group every time. So first we
152
+ /// jump by 1 group (meaning we just continue our linear scan), then 2 groups
153
+ /// (skipping over 1 group), then 3 groups (skipping over 2 groups), and so on.
154
+ ///
155
+ /// Proof that the probe will visit every group in the table:
156
+ /// <https://fgiesen.wordpress.com/2015/02/22/triangular-numbers-mod-2n/>
157
+ struct ProbeSeq {
158
+ pos: usize,
159
+ stride: usize,
160
+ }
161
+
162
+ impl ProbeSeq {
163
+ #[inline]
164
+ fn move_next(&mut self, bucket_mask: usize) {
165
+ // We should have found an empty bucket by now and ended the probe.
166
+ debug_assert!(
167
+ self.stride <= bucket_mask,
168
+ "Went past end of probe sequence"
169
+ );
170
+
171
+ self.stride += Group::WIDTH;
172
+ self.pos += self.stride;
173
+ self.pos &= bucket_mask;
174
+ }
175
+ }
176
+
177
+ /// Returns the number of buckets needed to hold the given number of items,
178
+ /// taking the maximum load factor into account.
179
+ ///
180
+ /// Returns `None` if an overflow occurs.
181
+ // Workaround for emscripten bug emscripten-core/emscripten-fastcomp#258
182
+ #[cfg_attr(target_os = "emscripten", inline(never))]
183
+ #[cfg_attr(not(target_os = "emscripten"), inline)]
184
+ fn capacity_to_buckets(cap: usize) -> Option<usize> {
185
+ debug_assert_ne!(cap, 0);
186
+
187
+ // For small tables we require at least 1 empty bucket so that lookups are
188
+ // guaranteed to terminate if an element doesn't exist in the table.
189
+ if cap < 8 {
190
+ // We don't bother with a table size of 2 buckets since that can only
191
+ // hold a single element. Instead we skip directly to a 4 bucket table
192
+ // which can hold 3 elements.
193
+ return Some(if cap < 4 { 4 } else { 8 });
194
+ }
195
+
196
+ // Otherwise require 1/8 buckets to be empty (87.5% load)
197
+ //
198
+ // Be careful when modifying this, calculate_layout relies on the
199
+ // overflow check here.
200
+ let adjusted_cap = cap.checked_mul(8)? / 7;
201
+
202
+ // Any overflows will have been caught by the checked_mul. Also, any
203
+ // rounding errors from the division above will be cleaned up by
204
+ // next_power_of_two (which can't overflow because of the previous division).
205
+ Some(adjusted_cap.next_power_of_two())
206
+ }
207
+
208
+ /// Returns the maximum effective capacity for the given bucket mask, taking
209
+ /// the maximum load factor into account.
210
+ #[inline]
211
+ fn bucket_mask_to_capacity(bucket_mask: usize) -> usize {
212
+ if bucket_mask < 8 {
213
+ // For tables with 1/2/4/8 buckets, we always reserve one empty slot.
214
+ // Keep in mind that the bucket mask is one less than the bucket count.
215
+ bucket_mask
216
+ } else {
217
+ // For larger tables we reserve 12.5% of the slots as empty.
218
+ ((bucket_mask + 1) / 8) * 7
219
+ }
220
+ }
221
+
222
+ /// Helper which allows the max calculation for ctrl_align to be statically computed for each T
223
+ /// while keeping the rest of `calculate_layout_for` independent of `T`
224
+ #[derive(Copy, Clone)]
225
+ struct TableLayout {
226
+ size: usize,
227
+ ctrl_align: usize,
228
+ }
229
+
230
+ impl TableLayout {
231
+ #[inline]
232
+ const fn new<T>() -> Self {
233
+ let layout = Layout::new::<T>();
234
+ Self {
235
+ size: layout.size(),
236
+ ctrl_align: if layout.align() > Group::WIDTH {
237
+ layout.align()
238
+ } else {
239
+ Group::WIDTH
240
+ },
241
+ }
242
+ }
243
+
244
+ #[inline]
245
+ fn calculate_layout_for(self, buckets: usize) -> Option<(Layout, usize)> {
246
+ debug_assert!(buckets.is_power_of_two());
247
+
248
+ let TableLayout { size, ctrl_align } = self;
249
+ // Manual layout calculation since Layout methods are not yet stable.
250
+ let ctrl_offset =
251
+ size.checked_mul(buckets)?.checked_add(ctrl_align - 1)? & !(ctrl_align - 1);
252
+ let len = ctrl_offset.checked_add(buckets + Group::WIDTH)?;
253
+
254
+ // We need an additional check to ensure that the allocation doesn't
255
+ // exceed `isize::MAX` (https://github.com/rust-lang/rust/pull/95295).
256
+ if len > isize::MAX as usize - (ctrl_align - 1) {
257
+ return None;
258
+ }
259
+
260
+ Some((
261
+ unsafe { Layout::from_size_align_unchecked(len, ctrl_align) },
262
+ ctrl_offset,
263
+ ))
264
+ }
265
+ }
266
+
267
+ /// A reference to an empty bucket into which an can be inserted.
268
+ pub struct InsertSlot {
269
+ index: usize,
270
+ }
271
+
272
+ /// A reference to a hash table bucket containing a `T`.
273
+ ///
274
+ /// This is usually just a pointer to the element itself. However if the element
275
+ /// is a ZST, then we instead track the index of the element in the table so
276
+ /// that `erase` works properly.
277
+ pub struct Bucket<T> {
278
+ // Actually it is pointer to next element than element itself
279
+ // this is needed to maintain pointer arithmetic invariants
280
+ // keeping direct pointer to element introduces difficulty.
281
+ // Using `NonNull` for variance and niche layout
282
+ ptr: NonNull<T>,
283
+ }
284
+
285
+ // This Send impl is needed for rayon support. This is safe since Bucket is
286
+ // never exposed in a public API.
287
+ unsafe impl<T> Send for Bucket<T> {}
288
+
289
+ impl<T> Clone for Bucket<T> {
290
+ #[inline]
291
+ fn clone(&self) -> Self {
292
+ Self { ptr: self.ptr }
293
+ }
294
+ }
295
+
296
+ impl<T> Bucket<T> {
297
+ const IS_ZERO_SIZED_TYPE: bool = mem::size_of::<T>() == 0;
298
+
299
+ /// Creates a [`Bucket`] that contain pointer to the data.
300
+ /// The pointer calculation is performed by calculating the
301
+ /// offset from given `base` pointer (convenience for
302
+ /// `base.as_ptr().sub(index)`).
303
+ ///
304
+ /// `index` is in units of `T`; e.g., an `index` of 3 represents a pointer
305
+ /// offset of `3 * size_of::<T>()` bytes.
306
+ ///
307
+ /// If the `T` is a ZST, then we instead track the index of the element
308
+ /// in the table so that `erase` works properly (return
309
+ /// `NonNull::new_unchecked((index + 1) as *mut T)`)
310
+ ///
311
+ /// # Safety
312
+ ///
313
+ /// If `mem::size_of::<T>() != 0`, then the safety rules are directly derived
314
+ /// from the safety rules for [`<*mut T>::sub`] method of `*mut T` and the safety
315
+ /// rules of [`NonNull::new_unchecked`] function.
316
+ ///
317
+ /// Thus, in order to uphold the safety contracts for the [`<*mut T>::sub`] method
318
+ /// and [`NonNull::new_unchecked`] function, as well as for the correct
319
+ /// logic of the work of this crate, the following rules are necessary and
320
+ /// sufficient:
321
+ ///
322
+ /// * the `base` pointer must not be `dangling` and must points to the
323
+ /// end of the first `value element` from the `data part` of the table, i.e.
324
+ /// must be the pointer that returned by [`RawTable::data_end`] or by
325
+ /// [`RawTableInner::data_end<T>`];
326
+ ///
327
+ /// * `index` must not be greater than `RawTableInner.bucket_mask`, i.e.
328
+ /// `index <= RawTableInner.bucket_mask` or, in other words, `(index + 1)`
329
+ /// must be no greater than the number returned by the function
330
+ /// [`RawTable::buckets`] or [`RawTableInner::buckets`].
331
+ ///
332
+ /// If `mem::size_of::<T>() == 0`, then the only requirement is that the
333
+ /// `index` must not be greater than `RawTableInner.bucket_mask`, i.e.
334
+ /// `index <= RawTableInner.bucket_mask` or, in other words, `(index + 1)`
335
+ /// must be no greater than the number returned by the function
336
+ /// [`RawTable::buckets`] or [`RawTableInner::buckets`].
337
+ ///
338
+ /// [`Bucket`]: crate::raw::Bucket
339
+ /// [`<*mut T>::sub`]: https://doc.rust-lang.org/core/primitive.pointer.html#method.sub-1
340
+ /// [`NonNull::new_unchecked`]: https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.new_unchecked
341
+ /// [`RawTable::data_end`]: crate::raw::RawTable::data_end
342
+ /// [`RawTableInner::data_end<T>`]: RawTableInner::data_end<T>
343
+ /// [`RawTable::buckets`]: crate::raw::RawTable::buckets
344
+ /// [`RawTableInner::buckets`]: RawTableInner::buckets
345
+ #[inline]
346
+ unsafe fn from_base_index(base: NonNull<T>, index: usize) -> Self {
347
+ // If mem::size_of::<T>() != 0 then return a pointer to an `element` in
348
+ // the data part of the table (we start counting from "0", so that
349
+ // in the expression T[last], the "last" index actually one less than the
350
+ // "buckets" number in the table, i.e. "last = RawTableInner.bucket_mask"):
351
+ //
352
+ // `from_base_index(base, 1).as_ptr()` returns a pointer that
353
+ // points here in the data part of the table
354
+ // (to the start of T1)
355
+ // |
356
+ // | `base: NonNull<T>` must point here
357
+ // | (to the end of T0 or to the start of C0)
358
+ // v v
359
+ // [Padding], Tlast, ..., |T1|, T0, |C0, C1, ..., Clast
360
+ // ^
361
+ // `from_base_index(base, 1)` returns a pointer
362
+ // that points here in the data part of the table
363
+ // (to the end of T1)
364
+ //
365
+ // where: T0...Tlast - our stored data; C0...Clast - control bytes
366
+ // or metadata for data.
367
+ let ptr = if Self::IS_ZERO_SIZED_TYPE {
368
+ // won't overflow because index must be less than length (bucket_mask)
369
+ // and bucket_mask is guaranteed to be less than `isize::MAX`
370
+ // (see TableLayout::calculate_layout_for method)
371
+ invalid_mut(index + 1)
372
+ } else {
373
+ base.as_ptr().sub(index)
374
+ };
375
+ Self {
376
+ ptr: NonNull::new_unchecked(ptr),
377
+ }
378
+ }
379
+
380
+ /// Calculates the index of a [`Bucket`] as distance between two pointers
381
+ /// (convenience for `base.as_ptr().offset_from(self.ptr.as_ptr()) as usize`).
382
+ /// The returned value is in units of T: the distance in bytes divided by
383
+ /// [`core::mem::size_of::<T>()`].
384
+ ///
385
+ /// If the `T` is a ZST, then we return the index of the element in
386
+ /// the table so that `erase` works properly (return `self.ptr.as_ptr() as usize - 1`).
387
+ ///
388
+ /// This function is the inverse of [`from_base_index`].
389
+ ///
390
+ /// # Safety
391
+ ///
392
+ /// If `mem::size_of::<T>() != 0`, then the safety rules are directly derived
393
+ /// from the safety rules for [`<*const T>::offset_from`] method of `*const T`.
394
+ ///
395
+ /// Thus, in order to uphold the safety contracts for [`<*const T>::offset_from`]
396
+ /// method, as well as for the correct logic of the work of this crate, the
397
+ /// following rules are necessary and sufficient:
398
+ ///
399
+ /// * `base` contained pointer must not be `dangling` and must point to the
400
+ /// end of the first `element` from the `data part` of the table, i.e.
401
+ /// must be a pointer that returns by [`RawTable::data_end`] or by
402
+ /// [`RawTableInner::data_end<T>`];
403
+ ///
404
+ /// * `self` also must not contain dangling pointer;
405
+ ///
406
+ /// * both `self` and `base` must be created from the same [`RawTable`]
407
+ /// (or [`RawTableInner`]).
408
+ ///
409
+ /// If `mem::size_of::<T>() == 0`, this function is always safe.
410
+ ///
411
+ /// [`Bucket`]: crate::raw::Bucket
412
+ /// [`from_base_index`]: crate::raw::Bucket::from_base_index
413
+ /// [`RawTable::data_end`]: crate::raw::RawTable::data_end
414
+ /// [`RawTableInner::data_end<T>`]: RawTableInner::data_end<T>
415
+ /// [`RawTable`]: crate::raw::RawTable
416
+ /// [`RawTableInner`]: RawTableInner
417
+ /// [`<*const T>::offset_from`]: https://doc.rust-lang.org/nightly/core/primitive.pointer.html#method.offset_from
418
+ #[inline]
419
+ unsafe fn to_base_index(&self, base: NonNull<T>) -> usize {
420
+ // If mem::size_of::<T>() != 0 then return an index under which we used to store the
421
+ // `element` in the data part of the table (we start counting from "0", so
422
+ // that in the expression T[last], the "last" index actually is one less than the
423
+ // "buckets" number in the table, i.e. "last = RawTableInner.bucket_mask").
424
+ // For example for 5th element in table calculation is performed like this:
425
+ //
426
+ // mem::size_of::<T>()
427
+ // |
428
+ // | `self = from_base_index(base, 5)` that returns pointer
429
+ // | that points here in tha data part of the table
430
+ // | (to the end of T5)
431
+ // | | `base: NonNull<T>` must point here
432
+ // v | (to the end of T0 or to the start of C0)
433
+ // /???\ v v
434
+ // [Padding], Tlast, ..., |T10|, ..., T5|, T4, T3, T2, T1, T0, |C0, C1, C2, C3, C4, C5, ..., C10, ..., Clast
435
+ // \__________ __________/
436
+ // \/
437
+ // `bucket.to_base_index(base)` = 5
438
+ // (base.as_ptr() as usize - self.ptr.as_ptr() as usize) / mem::size_of::<T>()
439
+ //
440
+ // where: T0...Tlast - our stored data; C0...Clast - control bytes or metadata for data.
441
+ if Self::IS_ZERO_SIZED_TYPE {
442
+ // this can not be UB
443
+ self.ptr.as_ptr() as usize - 1
444
+ } else {
445
+ offset_from(base.as_ptr(), self.ptr.as_ptr())
446
+ }
447
+ }
448
+
449
+ /// Acquires the underlying raw pointer `*mut T` to `data`.
450
+ ///
451
+ /// # Note
452
+ ///
453
+ /// If `T` is not [`Copy`], do not use `*mut T` methods that can cause calling the
454
+ /// destructor of `T` (for example the [`<*mut T>::drop_in_place`] method), because
455
+ /// for properly dropping the data we also need to clear `data` control bytes. If we
456
+ /// drop data, but do not clear `data control byte` it leads to double drop when
457
+ /// [`RawTable`] goes out of scope.
458
+ ///
459
+ /// If you modify an already initialized `value`, so [`Hash`] and [`Eq`] on the new
460
+ /// `T` value and its borrowed form *must* match those for the old `T` value, as the map
461
+ /// will not re-evaluate where the new value should go, meaning the value may become
462
+ /// "lost" if their location does not reflect their state.
463
+ ///
464
+ /// [`RawTable`]: crate::raw::RawTable
465
+ /// [`<*mut T>::drop_in_place`]: https://doc.rust-lang.org/core/primitive.pointer.html#method.drop_in_place
466
+ /// [`Hash`]: https://doc.rust-lang.org/core/hash/trait.Hash.html
467
+ /// [`Eq`]: https://doc.rust-lang.org/core/cmp/trait.Eq.html
468
+ ///
469
+ /// # Examples
470
+ ///
471
+ /// ```
472
+ /// # #[cfg(feature = "raw")]
473
+ /// # fn test() {
474
+ /// use core::hash::{BuildHasher, Hash};
475
+ /// use hashbrown::raw::{Bucket, RawTable};
476
+ ///
477
+ /// type NewHashBuilder = core::hash::BuildHasherDefault<ahash::AHasher>;
478
+ ///
479
+ /// fn make_hash<K: Hash + ?Sized, S: BuildHasher>(hash_builder: &S, key: &K) -> u64 {
480
+ /// use core::hash::Hasher;
481
+ /// let mut state = hash_builder.build_hasher();
482
+ /// key.hash(&mut state);
483
+ /// state.finish()
484
+ /// }
485
+ ///
486
+ /// let hash_builder = NewHashBuilder::default();
487
+ /// let mut table = RawTable::new();
488
+ ///
489
+ /// let value = ("a", 100);
490
+ /// let hash = make_hash(&hash_builder, &value.0);
491
+ ///
492
+ /// table.insert(hash, value.clone(), |val| make_hash(&hash_builder, &val.0));
493
+ ///
494
+ /// let bucket: Bucket<(&str, i32)> = table.find(hash, |(k1, _)| k1 == &value.0).unwrap();
495
+ ///
496
+ /// assert_eq!(unsafe { &*bucket.as_ptr() }, &("a", 100));
497
+ /// # }
498
+ /// # fn main() {
499
+ /// # #[cfg(feature = "raw")]
500
+ /// # test()
501
+ /// # }
502
+ /// ```
503
+ #[inline]
504
+ pub fn as_ptr(&self) -> *mut T {
505
+ if Self::IS_ZERO_SIZED_TYPE {
506
+ // Just return an arbitrary ZST pointer which is properly aligned
507
+ // invalid pointer is good enough for ZST
508
+ invalid_mut(mem::align_of::<T>())
509
+ } else {
510
+ unsafe { self.ptr.as_ptr().sub(1) }
511
+ }
512
+ }
513
+
514
+ /// Create a new [`Bucket`] that is offset from the `self` by the given
515
+ /// `offset`. The pointer calculation is performed by calculating the
516
+ /// offset from `self` pointer (convenience for `self.ptr.as_ptr().sub(offset)`).
517
+ /// This function is used for iterators.
518
+ ///
519
+ /// `offset` is in units of `T`; e.g., a `offset` of 3 represents a pointer
520
+ /// offset of `3 * size_of::<T>()` bytes.
521
+ ///
522
+ /// # Safety
523
+ ///
524
+ /// If `mem::size_of::<T>() != 0`, then the safety rules are directly derived
525
+ /// from the safety rules for [`<*mut T>::sub`] method of `*mut T` and safety
526
+ /// rules of [`NonNull::new_unchecked`] function.
527
+ ///
528
+ /// Thus, in order to uphold the safety contracts for [`<*mut T>::sub`] method
529
+ /// and [`NonNull::new_unchecked`] function, as well as for the correct
530
+ /// logic of the work of this crate, the following rules are necessary and
531
+ /// sufficient:
532
+ ///
533
+ /// * `self` contained pointer must not be `dangling`;
534
+ ///
535
+ /// * `self.to_base_index() + ofset` must not be greater than `RawTableInner.bucket_mask`,
536
+ /// i.e. `(self.to_base_index() + ofset) <= RawTableInner.bucket_mask` or, in other
537
+ /// words, `self.to_base_index() + ofset + 1` must be no greater than the number returned
538
+ /// by the function [`RawTable::buckets`] or [`RawTableInner::buckets`].
539
+ ///
540
+ /// If `mem::size_of::<T>() == 0`, then the only requirement is that the
541
+ /// `self.to_base_index() + ofset` must not be greater than `RawTableInner.bucket_mask`,
542
+ /// i.e. `(self.to_base_index() + ofset) <= RawTableInner.bucket_mask` or, in other words,
543
+ /// `self.to_base_index() + ofset + 1` must be no greater than the number returned by the
544
+ /// function [`RawTable::buckets`] or [`RawTableInner::buckets`].
545
+ ///
546
+ /// [`Bucket`]: crate::raw::Bucket
547
+ /// [`<*mut T>::sub`]: https://doc.rust-lang.org/core/primitive.pointer.html#method.sub-1
548
+ /// [`NonNull::new_unchecked`]: https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.new_unchecked
549
+ /// [`RawTable::buckets`]: crate::raw::RawTable::buckets
550
+ /// [`RawTableInner::buckets`]: RawTableInner::buckets
551
+ #[inline]
552
+ unsafe fn next_n(&self, offset: usize) -> Self {
553
+ let ptr = if Self::IS_ZERO_SIZED_TYPE {
554
+ // invalid pointer is good enough for ZST
555
+ invalid_mut(self.ptr.as_ptr() as usize + offset)
556
+ } else {
557
+ self.ptr.as_ptr().sub(offset)
558
+ };
559
+ Self {
560
+ ptr: NonNull::new_unchecked(ptr),
561
+ }
562
+ }
563
+
564
+ /// Executes the destructor (if any) of the pointed-to `data`.
565
+ ///
566
+ /// # Safety
567
+ ///
568
+ /// See [`ptr::drop_in_place`] for safety concerns.
569
+ ///
570
+ /// You should use [`RawTable::erase`] instead of this function,
571
+ /// or be careful with calling this function directly, because for
572
+ /// properly dropping the data we need also clear `data` control bytes.
573
+ /// If we drop data, but do not erase `data control byte` it leads to
574
+ /// double drop when [`RawTable`] goes out of scope.
575
+ ///
576
+ /// [`ptr::drop_in_place`]: https://doc.rust-lang.org/core/ptr/fn.drop_in_place.html
577
+ /// [`RawTable`]: crate::raw::RawTable
578
+ /// [`RawTable::erase`]: crate::raw::RawTable::erase
579
+ #[cfg_attr(feature = "inline-more", inline)]
580
+ pub(crate) unsafe fn drop(&self) {
581
+ self.as_ptr().drop_in_place();
582
+ }
583
+
584
+ /// Reads the `value` from `self` without moving it. This leaves the
585
+ /// memory in `self` unchanged.
586
+ ///
587
+ /// # Safety
588
+ ///
589
+ /// See [`ptr::read`] for safety concerns.
590
+ ///
591
+ /// You should use [`RawTable::remove`] instead of this function,
592
+ /// or be careful with calling this function directly, because compiler
593
+ /// calls its destructor when readed `value` goes out of scope. It
594
+ /// can cause double dropping when [`RawTable`] goes out of scope,
595
+ /// because of not erased `data control byte`.
596
+ ///
597
+ /// [`ptr::read`]: https://doc.rust-lang.org/core/ptr/fn.read.html
598
+ /// [`RawTable`]: crate::raw::RawTable
599
+ /// [`RawTable::remove`]: crate::raw::RawTable::remove
600
+ #[inline]
601
+ pub(crate) unsafe fn read(&self) -> T {
602
+ self.as_ptr().read()
603
+ }
604
+
605
+ /// Overwrites a memory location with the given `value` without reading
606
+ /// or dropping the old value (like [`ptr::write`] function).
607
+ ///
608
+ /// # Safety
609
+ ///
610
+ /// See [`ptr::write`] for safety concerns.
611
+ ///
612
+ /// # Note
613
+ ///
614
+ /// [`Hash`] and [`Eq`] on the new `T` value and its borrowed form *must* match
615
+ /// those for the old `T` value, as the map will not re-evaluate where the new
616
+ /// value should go, meaning the value may become "lost" if their location
617
+ /// does not reflect their state.
618
+ ///
619
+ /// [`ptr::write`]: https://doc.rust-lang.org/core/ptr/fn.write.html
620
+ /// [`Hash`]: https://doc.rust-lang.org/core/hash/trait.Hash.html
621
+ /// [`Eq`]: https://doc.rust-lang.org/core/cmp/trait.Eq.html
622
+ #[inline]
623
+ pub(crate) unsafe fn write(&self, val: T) {
624
+ self.as_ptr().write(val);
625
+ }
626
+
627
+ /// Returns a shared immutable reference to the `value`.
628
+ ///
629
+ /// # Safety
630
+ ///
631
+ /// See [`NonNull::as_ref`] for safety concerns.
632
+ ///
633
+ /// [`NonNull::as_ref`]: https://doc.rust-lang.org/core/ptr/struct.NonNull.html#method.as_ref
634
+ ///
635
+ /// # Examples
636
+ ///
637
+ /// ```
638
+ /// # #[cfg(feature = "raw")]
639
+ /// # fn test() {
640
+ /// use core::hash::{BuildHasher, Hash};
641
+ /// use hashbrown::raw::{Bucket, RawTable};
642
+ ///
643
+ /// type NewHashBuilder = core::hash::BuildHasherDefault<ahash::AHasher>;
644
+ ///
645
+ /// fn make_hash<K: Hash + ?Sized, S: BuildHasher>(hash_builder: &S, key: &K) -> u64 {
646
+ /// use core::hash::Hasher;
647
+ /// let mut state = hash_builder.build_hasher();
648
+ /// key.hash(&mut state);
649
+ /// state.finish()
650
+ /// }
651
+ ///
652
+ /// let hash_builder = NewHashBuilder::default();
653
+ /// let mut table = RawTable::new();
654
+ ///
655
+ /// let value: (&str, String) = ("A pony", "is a small horse".to_owned());
656
+ /// let hash = make_hash(&hash_builder, &value.0);
657
+ ///
658
+ /// table.insert(hash, value.clone(), |val| make_hash(&hash_builder, &val.0));
659
+ ///
660
+ /// let bucket: Bucket<(&str, String)> = table.find(hash, |(k, _)| k == &value.0).unwrap();
661
+ ///
662
+ /// assert_eq!(
663
+ /// unsafe { bucket.as_ref() },
664
+ /// &("A pony", "is a small horse".to_owned())
665
+ /// );
666
+ /// # }
667
+ /// # fn main() {
668
+ /// # #[cfg(feature = "raw")]
669
+ /// # test()
670
+ /// # }
671
+ /// ```
672
+ #[inline]
673
+ pub unsafe fn as_ref<'a>(&self) -> &'a T {
674
+ &*self.as_ptr()
675
+ }
676
+
677
+ /// Returns a unique mutable reference to the `value`.
678
+ ///
679
+ /// # Safety
680
+ ///
681
+ /// See [`NonNull::as_mut`] for safety concerns.
682
+ ///
683
+ /// # Note
684
+ ///
685
+ /// [`Hash`] and [`Eq`] on the new `T` value and its borrowed form *must* match
686
+ /// those for the old `T` value, as the map will not re-evaluate where the new
687
+ /// value should go, meaning the value may become "lost" if their location
688
+ /// does not reflect their state.
689
+ ///
690
+ /// [`NonNull::as_mut`]: https://doc.rust-lang.org/core/ptr/struct.NonNull.html#method.as_mut
691
+ /// [`Hash`]: https://doc.rust-lang.org/core/hash/trait.Hash.html
692
+ /// [`Eq`]: https://doc.rust-lang.org/core/cmp/trait.Eq.html
693
+ ///
694
+ /// # Examples
695
+ ///
696
+ /// ```
697
+ /// # #[cfg(feature = "raw")]
698
+ /// # fn test() {
699
+ /// use core::hash::{BuildHasher, Hash};
700
+ /// use hashbrown::raw::{Bucket, RawTable};
701
+ ///
702
+ /// type NewHashBuilder = core::hash::BuildHasherDefault<ahash::AHasher>;
703
+ ///
704
+ /// fn make_hash<K: Hash + ?Sized, S: BuildHasher>(hash_builder: &S, key: &K) -> u64 {
705
+ /// use core::hash::Hasher;
706
+ /// let mut state = hash_builder.build_hasher();
707
+ /// key.hash(&mut state);
708
+ /// state.finish()
709
+ /// }
710
+ ///
711
+ /// let hash_builder = NewHashBuilder::default();
712
+ /// let mut table = RawTable::new();
713
+ ///
714
+ /// let value: (&str, String) = ("A pony", "is a small horse".to_owned());
715
+ /// let hash = make_hash(&hash_builder, &value.0);
716
+ ///
717
+ /// table.insert(hash, value.clone(), |val| make_hash(&hash_builder, &val.0));
718
+ ///
719
+ /// let bucket: Bucket<(&str, String)> = table.find(hash, |(k, _)| k == &value.0).unwrap();
720
+ ///
721
+ /// unsafe {
722
+ /// bucket
723
+ /// .as_mut()
724
+ /// .1
725
+ /// .push_str(" less than 147 cm at the withers")
726
+ /// };
727
+ /// assert_eq!(
728
+ /// unsafe { bucket.as_ref() },
729
+ /// &(
730
+ /// "A pony",
731
+ /// "is a small horse less than 147 cm at the withers".to_owned()
732
+ /// )
733
+ /// );
734
+ /// # }
735
+ /// # fn main() {
736
+ /// # #[cfg(feature = "raw")]
737
+ /// # test()
738
+ /// # }
739
+ /// ```
740
+ #[inline]
741
+ pub unsafe fn as_mut<'a>(&self) -> &'a mut T {
742
+ &mut *self.as_ptr()
743
+ }
744
+
745
+ /// Copies `size_of<T>` bytes from `other` to `self`. The source
746
+ /// and destination may *not* overlap.
747
+ ///
748
+ /// # Safety
749
+ ///
750
+ /// See [`ptr::copy_nonoverlapping`] for safety concerns.
751
+ ///
752
+ /// Like [`read`], `copy_nonoverlapping` creates a bitwise copy of `T`, regardless of
753
+ /// whether `T` is [`Copy`]. If `T` is not [`Copy`], using *both* the values
754
+ /// in the region beginning at `*self` and the region beginning at `*other` can
755
+ /// [violate memory safety].
756
+ ///
757
+ /// # Note
758
+ ///
759
+ /// [`Hash`] and [`Eq`] on the new `T` value and its borrowed form *must* match
760
+ /// those for the old `T` value, as the map will not re-evaluate where the new
761
+ /// value should go, meaning the value may become "lost" if their location
762
+ /// does not reflect their state.
763
+ ///
764
+ /// [`ptr::copy_nonoverlapping`]: https://doc.rust-lang.org/core/ptr/fn.copy_nonoverlapping.html
765
+ /// [`read`]: https://doc.rust-lang.org/core/ptr/fn.read.html
766
+ /// [violate memory safety]: https://doc.rust-lang.org/std/ptr/fn.read.html#ownership-of-the-returned-value
767
+ /// [`Hash`]: https://doc.rust-lang.org/core/hash/trait.Hash.html
768
+ /// [`Eq`]: https://doc.rust-lang.org/core/cmp/trait.Eq.html
769
+ #[cfg(feature = "raw")]
770
+ #[inline]
771
+ pub unsafe fn copy_from_nonoverlapping(&self, other: &Self) {
772
+ self.as_ptr().copy_from_nonoverlapping(other.as_ptr(), 1);
773
+ }
774
+ }
775
+
776
+ /// A raw hash table with an unsafe API.
777
+ pub struct RawTable<T, A: Allocator + Clone = Global> {
778
+ table: RawTableInner<A>,
779
+ // Tell dropck that we own instances of T.
780
+ marker: PhantomData<T>,
781
+ }
782
+
783
+ /// Non-generic part of `RawTable` which allows functions to be instantiated only once regardless
784
+ /// of how many different key-value types are used.
785
+ struct RawTableInner<A> {
786
+ // Mask to get an index from a hash value. The value is one less than the
787
+ // number of buckets in the table.
788
+ bucket_mask: usize,
789
+
790
+ // [Padding], T1, T2, ..., Tlast, C1, C2, ...
791
+ // ^ points here
792
+ ctrl: NonNull<u8>,
793
+
794
+ // Number of elements that can be inserted before we need to grow the table
795
+ growth_left: usize,
796
+
797
+ // Number of elements in the table, only really used by len()
798
+ items: usize,
799
+
800
+ alloc: A,
801
+ }
802
+
803
+ impl<T> RawTable<T, Global> {
804
+ /// Creates a new empty hash table without allocating any memory.
805
+ ///
806
+ /// In effect this returns a table with exactly 1 bucket. However we can
807
+ /// leave the data pointer dangling since that bucket is never written to
808
+ /// due to our load factor forcing us to always have at least 1 free bucket.
809
+ #[inline]
810
+ pub const fn new() -> Self {
811
+ Self {
812
+ table: RawTableInner::new_in(Global),
813
+ marker: PhantomData,
814
+ }
815
+ }
816
+
817
+ /// Attempts to allocate a new hash table with at least enough capacity
818
+ /// for inserting the given number of elements without reallocating.
819
+ #[cfg(feature = "raw")]
820
+ pub fn try_with_capacity(capacity: usize) -> Result<Self, TryReserveError> {
821
+ Self::try_with_capacity_in(capacity, Global)
822
+ }
823
+
824
+ /// Allocates a new hash table with at least enough capacity for inserting
825
+ /// the given number of elements without reallocating.
826
+ pub fn with_capacity(capacity: usize) -> Self {
827
+ Self::with_capacity_in(capacity, Global)
828
+ }
829
+ }
830
+
831
+ impl<T, A: Allocator + Clone> RawTable<T, A> {
832
+ const TABLE_LAYOUT: TableLayout = TableLayout::new::<T>();
833
+ const DATA_NEEDS_DROP: bool = mem::needs_drop::<T>();
834
+
835
+ /// Creates a new empty hash table without allocating any memory, using the
836
+ /// given allocator.
837
+ ///
838
+ /// In effect this returns a table with exactly 1 bucket. However we can
839
+ /// leave the data pointer dangling since that bucket is never written to
840
+ /// due to our load factor forcing us to always have at least 1 free bucket.
841
+ #[inline]
842
+ pub const fn new_in(alloc: A) -> Self {
843
+ Self {
844
+ table: RawTableInner::new_in(alloc),
845
+ marker: PhantomData,
846
+ }
847
+ }
848
+
849
+ /// Allocates a new hash table with the given number of buckets.
850
+ ///
851
+ /// The control bytes are left uninitialized.
852
+ #[cfg_attr(feature = "inline-more", inline)]
853
+ unsafe fn new_uninitialized(
854
+ alloc: A,
855
+ buckets: usize,
856
+ fallibility: Fallibility,
857
+ ) -> Result<Self, TryReserveError> {
858
+ debug_assert!(buckets.is_power_of_two());
859
+
860
+ Ok(Self {
861
+ table: RawTableInner::new_uninitialized(
862
+ alloc,
863
+ Self::TABLE_LAYOUT,
864
+ buckets,
865
+ fallibility,
866
+ )?,
867
+ marker: PhantomData,
868
+ })
869
+ }
870
+
871
+ /// Attempts to allocate a new hash table with at least enough capacity
872
+ /// for inserting the given number of elements without reallocating.
873
+ fn fallible_with_capacity(
874
+ alloc: A,
875
+ capacity: usize,
876
+ fallibility: Fallibility,
877
+ ) -> Result<Self, TryReserveError> {
878
+ Ok(Self {
879
+ table: RawTableInner::fallible_with_capacity(
880
+ alloc,
881
+ Self::TABLE_LAYOUT,
882
+ capacity,
883
+ fallibility,
884
+ )?,
885
+ marker: PhantomData,
886
+ })
887
+ }
888
+
889
+ /// Attempts to allocate a new hash table using the given allocator, with at least enough
890
+ /// capacity for inserting the given number of elements without reallocating.
891
+ #[cfg(feature = "raw")]
892
+ pub fn try_with_capacity_in(capacity: usize, alloc: A) -> Result<Self, TryReserveError> {
893
+ Self::fallible_with_capacity(alloc, capacity, Fallibility::Fallible)
894
+ }
895
+
896
+ /// Allocates a new hash table using the given allocator, with at least enough capacity for
897
+ /// inserting the given number of elements without reallocating.
898
+ pub fn with_capacity_in(capacity: usize, alloc: A) -> Self {
899
+ // Avoid `Result::unwrap_or_else` because it bloats LLVM IR.
900
+ match Self::fallible_with_capacity(alloc, capacity, Fallibility::Infallible) {
901
+ Ok(capacity) => capacity,
902
+ Err(_) => unsafe { hint::unreachable_unchecked() },
903
+ }
904
+ }
905
+
906
+ /// Returns a reference to the underlying allocator.
907
+ #[inline]
908
+ pub fn allocator(&self) -> &A {
909
+ &self.table.alloc
910
+ }
911
+
912
+ /// Deallocates the table without dropping any entries.
913
+ #[cfg_attr(feature = "inline-more", inline)]
914
+ unsafe fn free_buckets(&mut self) {
915
+ self.table.free_buckets(Self::TABLE_LAYOUT);
916
+ }
917
+
918
+ /// Returns pointer to one past last element of data table.
919
+ #[inline]
920
+ pub unsafe fn data_end(&self) -> NonNull<T> {
921
+ NonNull::new_unchecked(self.table.ctrl.as_ptr().cast())
922
+ }
923
+
924
+ /// Returns pointer to start of data table.
925
+ #[inline]
926
+ #[cfg(any(feature = "raw", feature = "nightly"))]
927
+ pub unsafe fn data_start(&self) -> NonNull<T> {
928
+ NonNull::new_unchecked(self.data_end().as_ptr().wrapping_sub(self.buckets()))
929
+ }
930
+
931
+ /// Return the information about memory allocated by the table.
932
+ ///
933
+ /// `RawTable` allocates single memory block to store both data and metadata.
934
+ /// This function returns allocation size and alignment and the beginning of the area.
935
+ /// These are the arguments which will be passed to `dealloc` when the table is dropped.
936
+ ///
937
+ /// This function might be useful for memory profiling.
938
+ #[inline]
939
+ #[cfg(feature = "raw")]
940
+ pub fn allocation_info(&self) -> (NonNull<u8>, Layout) {
941
+ self.table.allocation_info_or_zero(Self::TABLE_LAYOUT)
942
+ }
943
+
944
+ /// Returns the index of a bucket from a `Bucket`.
945
+ #[inline]
946
+ pub unsafe fn bucket_index(&self, bucket: &Bucket<T>) -> usize {
947
+ bucket.to_base_index(self.data_end())
948
+ }
949
+
950
+ /// Returns a pointer to an element in the table.
951
+ #[inline]
952
+ pub unsafe fn bucket(&self, index: usize) -> Bucket<T> {
953
+ debug_assert_ne!(self.table.bucket_mask, 0);
954
+ debug_assert!(index < self.buckets());
955
+ Bucket::from_base_index(self.data_end(), index)
956
+ }
957
+
958
+ /// Erases an element from the table without dropping it.
959
+ #[cfg_attr(feature = "inline-more", inline)]
960
+ unsafe fn erase_no_drop(&mut self, item: &Bucket<T>) {
961
+ let index = self.bucket_index(item);
962
+ self.table.erase(index);
963
+ }
964
+
965
+ /// Erases an element from the table, dropping it in place.
966
+ #[cfg_attr(feature = "inline-more", inline)]
967
+ #[allow(clippy::needless_pass_by_value)]
968
+ pub unsafe fn erase(&mut self, item: Bucket<T>) {
969
+ // Erase the element from the table first since drop might panic.
970
+ self.erase_no_drop(&item);
971
+ item.drop();
972
+ }
973
+
974
+ /// Finds and erases an element from the table, dropping it in place.
975
+ /// Returns true if an element was found.
976
+ #[cfg(feature = "raw")]
977
+ #[cfg_attr(feature = "inline-more", inline)]
978
+ pub fn erase_entry(&mut self, hash: u64, eq: impl FnMut(&T) -> bool) -> bool {
979
+ // Avoid `Option::map` because it bloats LLVM IR.
980
+ if let Some(bucket) = self.find(hash, eq) {
981
+ unsafe {
982
+ self.erase(bucket);
983
+ }
984
+ true
985
+ } else {
986
+ false
987
+ }
988
+ }
989
+
990
+ /// Removes an element from the table, returning it.
991
+ ///
992
+ /// This also returns an `InsertSlot` pointing to the newly free bucket.
993
+ #[cfg_attr(feature = "inline-more", inline)]
994
+ #[allow(clippy::needless_pass_by_value)]
995
+ pub unsafe fn remove(&mut self, item: Bucket<T>) -> (T, InsertSlot) {
996
+ self.erase_no_drop(&item);
997
+ (
998
+ item.read(),
999
+ InsertSlot {
1000
+ index: self.bucket_index(&item),
1001
+ },
1002
+ )
1003
+ }
1004
+
1005
+ /// Finds and removes an element from the table, returning it.
1006
+ #[cfg_attr(feature = "inline-more", inline)]
1007
+ pub fn remove_entry(&mut self, hash: u64, eq: impl FnMut(&T) -> bool) -> Option<T> {
1008
+ // Avoid `Option::map` because it bloats LLVM IR.
1009
+ match self.find(hash, eq) {
1010
+ Some(bucket) => Some(unsafe { self.remove(bucket).0 }),
1011
+ None => None,
1012
+ }
1013
+ }
1014
+
1015
+ /// Marks all table buckets as empty without dropping their contents.
1016
+ #[cfg_attr(feature = "inline-more", inline)]
1017
+ pub fn clear_no_drop(&mut self) {
1018
+ self.table.clear_no_drop();
1019
+ }
1020
+
1021
+ /// Removes all elements from the table without freeing the backing memory.
1022
+ #[cfg_attr(feature = "inline-more", inline)]
1023
+ pub fn clear(&mut self) {
1024
+ if self.is_empty() {
1025
+ // Special case empty table to avoid surprising O(capacity) time.
1026
+ return;
1027
+ }
1028
+ // Ensure that the table is reset even if one of the drops panic
1029
+ let mut self_ = guard(self, |self_| self_.clear_no_drop());
1030
+ unsafe {
1031
+ self_.drop_elements();
1032
+ }
1033
+ }
1034
+
1035
+ unsafe fn drop_elements(&mut self) {
1036
+ if Self::DATA_NEEDS_DROP && !self.is_empty() {
1037
+ for item in self.iter() {
1038
+ item.drop();
1039
+ }
1040
+ }
1041
+ }
1042
+
1043
+ /// Shrinks the table to fit `max(self.len(), min_size)` elements.
1044
+ #[cfg_attr(feature = "inline-more", inline)]
1045
+ pub fn shrink_to(&mut self, min_size: usize, hasher: impl Fn(&T) -> u64) {
1046
+ // Calculate the minimal number of elements that we need to reserve
1047
+ // space for.
1048
+ let min_size = usize::max(self.table.items, min_size);
1049
+ if min_size == 0 {
1050
+ *self = Self::new_in(self.table.alloc.clone());
1051
+ return;
1052
+ }
1053
+
1054
+ // Calculate the number of buckets that we need for this number of
1055
+ // elements. If the calculation overflows then the requested bucket
1056
+ // count must be larger than what we have right and nothing needs to be
1057
+ // done.
1058
+ let min_buckets = match capacity_to_buckets(min_size) {
1059
+ Some(buckets) => buckets,
1060
+ None => return,
1061
+ };
1062
+
1063
+ // If we have more buckets than we need, shrink the table.
1064
+ if min_buckets < self.buckets() {
1065
+ // Fast path if the table is empty
1066
+ if self.table.items == 0 {
1067
+ *self = Self::with_capacity_in(min_size, self.table.alloc.clone());
1068
+ } else {
1069
+ // Avoid `Result::unwrap_or_else` because it bloats LLVM IR.
1070
+ if self
1071
+ .resize(min_size, hasher, Fallibility::Infallible)
1072
+ .is_err()
1073
+ {
1074
+ unsafe { hint::unreachable_unchecked() }
1075
+ }
1076
+ }
1077
+ }
1078
+ }
1079
+
1080
+ /// Ensures that at least `additional` items can be inserted into the table
1081
+ /// without reallocation.
1082
+ #[cfg_attr(feature = "inline-more", inline)]
1083
+ pub fn reserve(&mut self, additional: usize, hasher: impl Fn(&T) -> u64) {
1084
+ if unlikely(additional > self.table.growth_left) {
1085
+ // Avoid `Result::unwrap_or_else` because it bloats LLVM IR.
1086
+ if self
1087
+ .reserve_rehash(additional, hasher, Fallibility::Infallible)
1088
+ .is_err()
1089
+ {
1090
+ unsafe { hint::unreachable_unchecked() }
1091
+ }
1092
+ }
1093
+ }
1094
+
1095
+ /// Tries to ensure that at least `additional` items can be inserted into
1096
+ /// the table without reallocation.
1097
+ #[cfg_attr(feature = "inline-more", inline)]
1098
+ pub fn try_reserve(
1099
+ &mut self,
1100
+ additional: usize,
1101
+ hasher: impl Fn(&T) -> u64,
1102
+ ) -> Result<(), TryReserveError> {
1103
+ if additional > self.table.growth_left {
1104
+ self.reserve_rehash(additional, hasher, Fallibility::Fallible)
1105
+ } else {
1106
+ Ok(())
1107
+ }
1108
+ }
1109
+
1110
+ /// Out-of-line slow path for `reserve` and `try_reserve`.
1111
+ #[cold]
1112
+ #[inline(never)]
1113
+ fn reserve_rehash(
1114
+ &mut self,
1115
+ additional: usize,
1116
+ hasher: impl Fn(&T) -> u64,
1117
+ fallibility: Fallibility,
1118
+ ) -> Result<(), TryReserveError> {
1119
+ unsafe {
1120
+ self.table.reserve_rehash_inner(
1121
+ additional,
1122
+ &|table, index| hasher(table.bucket::<T>(index).as_ref()),
1123
+ fallibility,
1124
+ Self::TABLE_LAYOUT,
1125
+ if Self::DATA_NEEDS_DROP {
1126
+ Some(mem::transmute(ptr::drop_in_place::<T> as unsafe fn(*mut T)))
1127
+ } else {
1128
+ None
1129
+ },
1130
+ )
1131
+ }
1132
+ }
1133
+
1134
+ /// Allocates a new table of a different size and moves the contents of the
1135
+ /// current table into it.
1136
+ fn resize(
1137
+ &mut self,
1138
+ capacity: usize,
1139
+ hasher: impl Fn(&T) -> u64,
1140
+ fallibility: Fallibility,
1141
+ ) -> Result<(), TryReserveError> {
1142
+ unsafe {
1143
+ self.table.resize_inner(
1144
+ capacity,
1145
+ &|table, index| hasher(table.bucket::<T>(index).as_ref()),
1146
+ fallibility,
1147
+ Self::TABLE_LAYOUT,
1148
+ )
1149
+ }
1150
+ }
1151
+
1152
+ /// Inserts a new element into the table, and returns its raw bucket.
1153
+ ///
1154
+ /// This does not check if the given element already exists in the table.
1155
+ #[cfg_attr(feature = "inline-more", inline)]
1156
+ pub fn insert(&mut self, hash: u64, value: T, hasher: impl Fn(&T) -> u64) -> Bucket<T> {
1157
+ unsafe {
1158
+ let mut slot = self.table.find_insert_slot(hash);
1159
+
1160
+ // We can avoid growing the table once we have reached our load
1161
+ // factor if we are replacing a tombstone. This works since the
1162
+ // number of EMPTY slots does not change in this case.
1163
+ let old_ctrl = *self.table.ctrl(slot.index);
1164
+ if unlikely(self.table.growth_left == 0 && special_is_empty(old_ctrl)) {
1165
+ self.reserve(1, hasher);
1166
+ slot = self.table.find_insert_slot(hash);
1167
+ }
1168
+
1169
+ self.insert_in_slot(hash, slot, value)
1170
+ }
1171
+ }
1172
+
1173
+ /// Attempts to insert a new element without growing the table and return its raw bucket.
1174
+ ///
1175
+ /// Returns an `Err` containing the given element if inserting it would require growing the
1176
+ /// table.
1177
+ ///
1178
+ /// This does not check if the given element already exists in the table.
1179
+ #[cfg(feature = "raw")]
1180
+ #[cfg_attr(feature = "inline-more", inline)]
1181
+ pub fn try_insert_no_grow(&mut self, hash: u64, value: T) -> Result<Bucket<T>, T> {
1182
+ unsafe {
1183
+ match self.table.prepare_insert_no_grow(hash) {
1184
+ Ok(index) => {
1185
+ let bucket = self.bucket(index);
1186
+ bucket.write(value);
1187
+ Ok(bucket)
1188
+ }
1189
+ Err(()) => Err(value),
1190
+ }
1191
+ }
1192
+ }
1193
+
1194
+ /// Inserts a new element into the table, and returns a mutable reference to it.
1195
+ ///
1196
+ /// This does not check if the given element already exists in the table.
1197
+ #[cfg_attr(feature = "inline-more", inline)]
1198
+ pub fn insert_entry(&mut self, hash: u64, value: T, hasher: impl Fn(&T) -> u64) -> &mut T {
1199
+ unsafe { self.insert(hash, value, hasher).as_mut() }
1200
+ }
1201
+
1202
+ /// Inserts a new element into the table, without growing the table.
1203
+ ///
1204
+ /// There must be enough space in the table to insert the new element.
1205
+ ///
1206
+ /// This does not check if the given element already exists in the table.
1207
+ #[cfg_attr(feature = "inline-more", inline)]
1208
+ #[cfg(any(feature = "raw", feature = "rustc-internal-api"))]
1209
+ pub unsafe fn insert_no_grow(&mut self, hash: u64, value: T) -> Bucket<T> {
1210
+ let (index, old_ctrl) = self.table.prepare_insert_slot(hash);
1211
+ let bucket = self.table.bucket(index);
1212
+
1213
+ // If we are replacing a DELETED entry then we don't need to update
1214
+ // the load counter.
1215
+ self.table.growth_left -= special_is_empty(old_ctrl) as usize;
1216
+
1217
+ bucket.write(value);
1218
+ self.table.items += 1;
1219
+ bucket
1220
+ }
1221
+
1222
+ /// Temporary removes a bucket, applying the given function to the removed
1223
+ /// element and optionally put back the returned value in the same bucket.
1224
+ ///
1225
+ /// Returns `true` if the bucket still contains an element
1226
+ ///
1227
+ /// This does not check if the given bucket is actually occupied.
1228
+ #[cfg_attr(feature = "inline-more", inline)]
1229
+ pub unsafe fn replace_bucket_with<F>(&mut self, bucket: Bucket<T>, f: F) -> bool
1230
+ where
1231
+ F: FnOnce(T) -> Option<T>,
1232
+ {
1233
+ let index = self.bucket_index(&bucket);
1234
+ let old_ctrl = *self.table.ctrl(index);
1235
+ debug_assert!(self.is_bucket_full(index));
1236
+ let old_growth_left = self.table.growth_left;
1237
+ let item = self.remove(bucket).0;
1238
+ if let Some(new_item) = f(item) {
1239
+ self.table.growth_left = old_growth_left;
1240
+ self.table.set_ctrl(index, old_ctrl);
1241
+ self.table.items += 1;
1242
+ self.bucket(index).write(new_item);
1243
+ true
1244
+ } else {
1245
+ false
1246
+ }
1247
+ }
1248
+
1249
+ /// Searches for an element in the table. If the element is not found,
1250
+ /// returns `Err` with the position of a slot where an element with the
1251
+ /// same hash could be inserted.
1252
+ ///
1253
+ /// This function may resize the table if additional space is required for
1254
+ /// inserting an element.
1255
+ #[inline]
1256
+ pub fn find_or_find_insert_slot(
1257
+ &mut self,
1258
+ hash: u64,
1259
+ mut eq: impl FnMut(&T) -> bool,
1260
+ hasher: impl Fn(&T) -> u64,
1261
+ ) -> Result<Bucket<T>, InsertSlot> {
1262
+ self.reserve(1, hasher);
1263
+
1264
+ match self
1265
+ .table
1266
+ .find_or_find_insert_slot_inner(hash, &mut |index| unsafe {
1267
+ eq(self.bucket(index).as_ref())
1268
+ }) {
1269
+ Ok(index) => Ok(unsafe { self.bucket(index) }),
1270
+ Err(slot) => Err(slot),
1271
+ }
1272
+ }
1273
+
1274
+ /// Inserts a new element into the table in the given slot, and returns its
1275
+ /// raw bucket.
1276
+ ///
1277
+ /// # Safety
1278
+ ///
1279
+ /// `slot` must point to a slot previously returned by
1280
+ /// `find_or_find_insert_slot`, and no mutation of the table must have
1281
+ /// occurred since that call.
1282
+ #[inline]
1283
+ pub unsafe fn insert_in_slot(&mut self, hash: u64, slot: InsertSlot, value: T) -> Bucket<T> {
1284
+ let old_ctrl = *self.table.ctrl(slot.index);
1285
+ self.table.record_item_insert_at(slot.index, old_ctrl, hash);
1286
+
1287
+ let bucket = self.bucket(slot.index);
1288
+ bucket.write(value);
1289
+ bucket
1290
+ }
1291
+
1292
+ /// Searches for an element in the table.
1293
+ #[inline]
1294
+ pub fn find(&self, hash: u64, mut eq: impl FnMut(&T) -> bool) -> Option<Bucket<T>> {
1295
+ let result = self.table.find_inner(hash, &mut |index| unsafe {
1296
+ eq(self.bucket(index).as_ref())
1297
+ });
1298
+
1299
+ // Avoid `Option::map` because it bloats LLVM IR.
1300
+ match result {
1301
+ Some(index) => Some(unsafe { self.bucket(index) }),
1302
+ None => None,
1303
+ }
1304
+ }
1305
+
1306
+ /// Gets a reference to an element in the table.
1307
+ #[inline]
1308
+ pub fn get(&self, hash: u64, eq: impl FnMut(&T) -> bool) -> Option<&T> {
1309
+ // Avoid `Option::map` because it bloats LLVM IR.
1310
+ match self.find(hash, eq) {
1311
+ Some(bucket) => Some(unsafe { bucket.as_ref() }),
1312
+ None => None,
1313
+ }
1314
+ }
1315
+
1316
+ /// Gets a mutable reference to an element in the table.
1317
+ #[inline]
1318
+ pub fn get_mut(&mut self, hash: u64, eq: impl FnMut(&T) -> bool) -> Option<&mut T> {
1319
+ // Avoid `Option::map` because it bloats LLVM IR.
1320
+ match self.find(hash, eq) {
1321
+ Some(bucket) => Some(unsafe { bucket.as_mut() }),
1322
+ None => None,
1323
+ }
1324
+ }
1325
+
1326
+ /// Attempts to get mutable references to `N` entries in the table at once.
1327
+ ///
1328
+ /// Returns an array of length `N` with the results of each query.
1329
+ ///
1330
+ /// At most one mutable reference will be returned to any entry. `None` will be returned if any
1331
+ /// of the hashes are duplicates. `None` will be returned if the hash is not found.
1332
+ ///
1333
+ /// The `eq` argument should be a closure such that `eq(i, k)` returns true if `k` is equal to
1334
+ /// the `i`th key to be looked up.
1335
+ pub fn get_many_mut<const N: usize>(
1336
+ &mut self,
1337
+ hashes: [u64; N],
1338
+ eq: impl FnMut(usize, &T) -> bool,
1339
+ ) -> Option<[&'_ mut T; N]> {
1340
+ unsafe {
1341
+ let ptrs = self.get_many_mut_pointers(hashes, eq)?;
1342
+
1343
+ for (i, &cur) in ptrs.iter().enumerate() {
1344
+ if ptrs[..i].iter().any(|&prev| ptr::eq::<T>(prev, cur)) {
1345
+ return None;
1346
+ }
1347
+ }
1348
+ // All bucket are distinct from all previous buckets so we're clear to return the result
1349
+ // of the lookup.
1350
+
1351
+ // TODO use `MaybeUninit::array_assume_init` here instead once that's stable.
1352
+ Some(mem::transmute_copy(&ptrs))
1353
+ }
1354
+ }
1355
+
1356
+ pub unsafe fn get_many_unchecked_mut<const N: usize>(
1357
+ &mut self,
1358
+ hashes: [u64; N],
1359
+ eq: impl FnMut(usize, &T) -> bool,
1360
+ ) -> Option<[&'_ mut T; N]> {
1361
+ let ptrs = self.get_many_mut_pointers(hashes, eq)?;
1362
+ Some(mem::transmute_copy(&ptrs))
1363
+ }
1364
+
1365
+ unsafe fn get_many_mut_pointers<const N: usize>(
1366
+ &mut self,
1367
+ hashes: [u64; N],
1368
+ mut eq: impl FnMut(usize, &T) -> bool,
1369
+ ) -> Option<[*mut T; N]> {
1370
+ // TODO use `MaybeUninit::uninit_array` here instead once that's stable.
1371
+ let mut outs: MaybeUninit<[*mut T; N]> = MaybeUninit::uninit();
1372
+ let outs_ptr = outs.as_mut_ptr();
1373
+
1374
+ for (i, &hash) in hashes.iter().enumerate() {
1375
+ let cur = self.find(hash, |k| eq(i, k))?;
1376
+ *(*outs_ptr).get_unchecked_mut(i) = cur.as_mut();
1377
+ }
1378
+
1379
+ // TODO use `MaybeUninit::array_assume_init` here instead once that's stable.
1380
+ Some(outs.assume_init())
1381
+ }
1382
+
1383
+ /// Returns the number of elements the map can hold without reallocating.
1384
+ ///
1385
+ /// This number is a lower bound; the table might be able to hold
1386
+ /// more, but is guaranteed to be able to hold at least this many.
1387
+ #[inline]
1388
+ pub fn capacity(&self) -> usize {
1389
+ self.table.items + self.table.growth_left
1390
+ }
1391
+
1392
+ /// Returns the number of elements in the table.
1393
+ #[inline]
1394
+ pub fn len(&self) -> usize {
1395
+ self.table.items
1396
+ }
1397
+
1398
+ /// Returns `true` if the table contains no elements.
1399
+ #[inline]
1400
+ pub fn is_empty(&self) -> bool {
1401
+ self.len() == 0
1402
+ }
1403
+
1404
+ /// Returns the number of buckets in the table.
1405
+ #[inline]
1406
+ pub fn buckets(&self) -> usize {
1407
+ self.table.bucket_mask + 1
1408
+ }
1409
+
1410
+ /// Checks whether the bucket at `index` is full.
1411
+ ///
1412
+ /// # Safety
1413
+ ///
1414
+ /// The caller must ensure `index` is less than the number of buckets.
1415
+ #[inline]
1416
+ pub unsafe fn is_bucket_full(&self, index: usize) -> bool {
1417
+ self.table.is_bucket_full(index)
1418
+ }
1419
+
1420
+ /// Returns an iterator over every element in the table. It is up to
1421
+ /// the caller to ensure that the `RawTable` outlives the `RawIter`.
1422
+ /// Because we cannot make the `next` method unsafe on the `RawIter`
1423
+ /// struct, we have to make the `iter` method unsafe.
1424
+ #[inline]
1425
+ pub unsafe fn iter(&self) -> RawIter<T> {
1426
+ let data = Bucket::from_base_index(self.data_end(), 0);
1427
+ RawIter {
1428
+ iter: RawIterRange::new(self.table.ctrl.as_ptr(), data, self.table.buckets()),
1429
+ items: self.table.items,
1430
+ }
1431
+ }
1432
+
1433
+ /// Returns an iterator over occupied buckets that could match a given hash.
1434
+ ///
1435
+ /// `RawTable` only stores 7 bits of the hash value, so this iterator may
1436
+ /// return items that have a hash value different than the one provided. You
1437
+ /// should always validate the returned values before using them.
1438
+ ///
1439
+ /// It is up to the caller to ensure that the `RawTable` outlives the
1440
+ /// `RawIterHash`. Because we cannot make the `next` method unsafe on the
1441
+ /// `RawIterHash` struct, we have to make the `iter_hash` method unsafe.
1442
+ #[cfg_attr(feature = "inline-more", inline)]
1443
+ #[cfg(feature = "raw")]
1444
+ pub unsafe fn iter_hash(&self, hash: u64) -> RawIterHash<T> {
1445
+ RawIterHash::new(self, hash)
1446
+ }
1447
+
1448
+ /// Returns an iterator which removes all elements from the table without
1449
+ /// freeing the memory.
1450
+ #[cfg_attr(feature = "inline-more", inline)]
1451
+ pub fn drain(&mut self) -> RawDrain<'_, T, A> {
1452
+ unsafe {
1453
+ let iter = self.iter();
1454
+ self.drain_iter_from(iter)
1455
+ }
1456
+ }
1457
+
1458
+ /// Returns an iterator which removes all elements from the table without
1459
+ /// freeing the memory.
1460
+ ///
1461
+ /// Iteration starts at the provided iterator's current location.
1462
+ ///
1463
+ /// It is up to the caller to ensure that the iterator is valid for this
1464
+ /// `RawTable` and covers all items that remain in the table.
1465
+ #[cfg_attr(feature = "inline-more", inline)]
1466
+ pub unsafe fn drain_iter_from(&mut self, iter: RawIter<T>) -> RawDrain<'_, T, A> {
1467
+ debug_assert_eq!(iter.len(), self.len());
1468
+ RawDrain {
1469
+ iter,
1470
+ table: ManuallyDrop::new(mem::replace(self, Self::new_in(self.table.alloc.clone()))),
1471
+ orig_table: NonNull::from(self),
1472
+ marker: PhantomData,
1473
+ }
1474
+ }
1475
+
1476
+ /// Returns an iterator which consumes all elements from the table.
1477
+ ///
1478
+ /// Iteration starts at the provided iterator's current location.
1479
+ ///
1480
+ /// It is up to the caller to ensure that the iterator is valid for this
1481
+ /// `RawTable` and covers all items that remain in the table.
1482
+ pub unsafe fn into_iter_from(self, iter: RawIter<T>) -> RawIntoIter<T, A> {
1483
+ debug_assert_eq!(iter.len(), self.len());
1484
+
1485
+ let alloc = self.table.alloc.clone();
1486
+ let allocation = self.into_allocation();
1487
+ RawIntoIter {
1488
+ iter,
1489
+ allocation,
1490
+ marker: PhantomData,
1491
+ alloc,
1492
+ }
1493
+ }
1494
+
1495
+ /// Converts the table into a raw allocation. The contents of the table
1496
+ /// should be dropped using a `RawIter` before freeing the allocation.
1497
+ #[cfg_attr(feature = "inline-more", inline)]
1498
+ pub(crate) fn into_allocation(self) -> Option<(NonNull<u8>, Layout)> {
1499
+ let alloc = if self.table.is_empty_singleton() {
1500
+ None
1501
+ } else {
1502
+ // Avoid `Option::unwrap_or_else` because it bloats LLVM IR.
1503
+ let (layout, ctrl_offset) =
1504
+ match Self::TABLE_LAYOUT.calculate_layout_for(self.table.buckets()) {
1505
+ Some(lco) => lco,
1506
+ None => unsafe { hint::unreachable_unchecked() },
1507
+ };
1508
+ Some((
1509
+ unsafe { NonNull::new_unchecked(self.table.ctrl.as_ptr().sub(ctrl_offset)) },
1510
+ layout,
1511
+ ))
1512
+ };
1513
+ mem::forget(self);
1514
+ alloc
1515
+ }
1516
+ }
1517
+
1518
+ unsafe impl<T, A: Allocator + Clone> Send for RawTable<T, A>
1519
+ where
1520
+ T: Send,
1521
+ A: Send,
1522
+ {
1523
+ }
1524
+ unsafe impl<T, A: Allocator + Clone> Sync for RawTable<T, A>
1525
+ where
1526
+ T: Sync,
1527
+ A: Sync,
1528
+ {
1529
+ }
1530
+
1531
+ impl<A> RawTableInner<A> {
1532
+ /// Creates a new empty hash table without allocating any memory.
1533
+ ///
1534
+ /// In effect this returns a table with exactly 1 bucket. However we can
1535
+ /// leave the data pointer dangling since that bucket is never accessed
1536
+ /// due to our load factor forcing us to always have at least 1 free bucket.
1537
+ #[inline]
1538
+ const fn new_in(alloc: A) -> Self {
1539
+ Self {
1540
+ // Be careful to cast the entire slice to a raw pointer.
1541
+ ctrl: unsafe { NonNull::new_unchecked(Group::static_empty() as *const _ as *mut u8) },
1542
+ bucket_mask: 0,
1543
+ items: 0,
1544
+ growth_left: 0,
1545
+ alloc,
1546
+ }
1547
+ }
1548
+ }
1549
+
1550
+ impl<A: Allocator + Clone> RawTableInner<A> {
1551
+ /// Allocates a new [`RawTableInner`] with the given number of buckets.
1552
+ /// The control bytes and buckets are left uninitialized.
1553
+ ///
1554
+ /// # Safety
1555
+ ///
1556
+ /// The caller of this function must ensure that the `buckets` is power of two
1557
+ /// and also initialize all control bytes of the length `self.bucket_mask + 1 +
1558
+ /// Group::WIDTH` with the [`EMPTY`] bytes.
1559
+ ///
1560
+ /// See also [`Allocator`] API for other safety concerns.
1561
+ ///
1562
+ /// [`Allocator`]: https://doc.rust-lang.org/alloc/alloc/trait.Allocator.html
1563
+ #[cfg_attr(feature = "inline-more", inline)]
1564
+ unsafe fn new_uninitialized(
1565
+ alloc: A,
1566
+ table_layout: TableLayout,
1567
+ buckets: usize,
1568
+ fallibility: Fallibility,
1569
+ ) -> Result<Self, TryReserveError> {
1570
+ debug_assert!(buckets.is_power_of_two());
1571
+
1572
+ // Avoid `Option::ok_or_else` because it bloats LLVM IR.
1573
+ let (layout, ctrl_offset) = match table_layout.calculate_layout_for(buckets) {
1574
+ Some(lco) => lco,
1575
+ None => return Err(fallibility.capacity_overflow()),
1576
+ };
1577
+
1578
+ let ptr: NonNull<u8> = match do_alloc(&alloc, layout) {
1579
+ Ok(block) => block.cast(),
1580
+ Err(_) => return Err(fallibility.alloc_err(layout)),
1581
+ };
1582
+
1583
+ // SAFETY: null pointer will be caught in above check
1584
+ let ctrl = NonNull::new_unchecked(ptr.as_ptr().add(ctrl_offset));
1585
+ Ok(Self {
1586
+ ctrl,
1587
+ bucket_mask: buckets - 1,
1588
+ items: 0,
1589
+ growth_left: bucket_mask_to_capacity(buckets - 1),
1590
+ alloc,
1591
+ })
1592
+ }
1593
+
1594
+ /// Attempts to allocate a new [`RawTableInner`] with at least enough
1595
+ /// capacity for inserting the given number of elements without reallocating.
1596
+ ///
1597
+ /// All the control bytes are initialized with the [`EMPTY`] bytes.
1598
+ #[inline]
1599
+ fn fallible_with_capacity(
1600
+ alloc: A,
1601
+ table_layout: TableLayout,
1602
+ capacity: usize,
1603
+ fallibility: Fallibility,
1604
+ ) -> Result<Self, TryReserveError> {
1605
+ if capacity == 0 {
1606
+ Ok(Self::new_in(alloc))
1607
+ } else {
1608
+ // SAFETY: We checked that we could successfully allocate the new table, and then
1609
+ // initialized all control bytes with the constant `EMPTY` byte.
1610
+ unsafe {
1611
+ let buckets =
1612
+ capacity_to_buckets(capacity).ok_or_else(|| fallibility.capacity_overflow())?;
1613
+
1614
+ let result = Self::new_uninitialized(alloc, table_layout, buckets, fallibility)?;
1615
+ // SAFETY: We checked that the table is allocated and therefore the table already has
1616
+ // `self.bucket_mask + 1 + Group::WIDTH` number of control bytes (see TableLayout::calculate_layout_for)
1617
+ // so writing `self.num_ctrl_bytes() == bucket_mask + 1 + Group::WIDTH` bytes is safe.
1618
+ result.ctrl(0).write_bytes(EMPTY, result.num_ctrl_bytes());
1619
+
1620
+ Ok(result)
1621
+ }
1622
+ }
1623
+ }
1624
+
1625
+ /// Fixes up an insertion slot due to false positives for groups smaller than the group width.
1626
+ /// This must only be used on insertion slots found by `find_insert_slot_in_group`.
1627
+ #[inline]
1628
+ unsafe fn fix_insert_slot(&self, mut index: usize) -> InsertSlot {
1629
+ // In tables smaller than the group width
1630
+ // (self.buckets() < Group::WIDTH), trailing control
1631
+ // bytes outside the range of the table are filled with
1632
+ // EMPTY entries. These will unfortunately trigger a
1633
+ // match, but once masked may point to a full bucket that
1634
+ // is already occupied. We detect this situation here and
1635
+ // perform a second scan starting at the beginning of the
1636
+ // table. This second scan is guaranteed to find an empty
1637
+ // slot (due to the load factor) before hitting the trailing
1638
+ // control bytes (containing EMPTY).
1639
+ if unlikely(self.is_bucket_full(index)) {
1640
+ debug_assert!(self.bucket_mask < Group::WIDTH);
1641
+ // SAFETY:
1642
+ //
1643
+ // * We are in range and `ptr = self.ctrl(0)` are valid for reads
1644
+ // and properly aligned, because the table is already allocated
1645
+ // (see `TableLayout::calculate_layout_for` and `ptr::read`);
1646
+ //
1647
+ // * For tables larger than the group width (self.buckets() >= Group::WIDTH),
1648
+ // we will never end up in the given branch, since
1649
+ // `(probe_seq.pos + bit) & self.bucket_mask` in `find_insert_slot_in_group` cannot
1650
+ // return a full bucket index. For tables smaller than the group width, calling the
1651
+ // `unwrap_unchecked` function is also
1652
+ // safe, as the trailing control bytes outside the range of the table are filled
1653
+ // with EMPTY bytes, so this second scan either finds an empty slot (due to the
1654
+ // load factor) or hits the trailing control bytes (containing EMPTY).
1655
+ index = Group::load_aligned(self.ctrl(0))
1656
+ .match_empty_or_deleted()
1657
+ .lowest_set_bit()
1658
+ .unwrap_unchecked();
1659
+ }
1660
+ InsertSlot { index }
1661
+ }
1662
+
1663
+ /// Finds the position to insert something in a group.
1664
+ /// This may have false positives and must be fixed up with `fix_insert_slot` before it's used.
1665
+ #[inline]
1666
+ fn find_insert_slot_in_group(&self, group: &Group, probe_seq: &ProbeSeq) -> Option<usize> {
1667
+ let bit = group.match_empty_or_deleted().lowest_set_bit();
1668
+
1669
+ if likely(bit.is_some()) {
1670
+ Some((probe_seq.pos + bit.unwrap()) & self.bucket_mask)
1671
+ } else {
1672
+ None
1673
+ }
1674
+ }
1675
+
1676
+ /// Searches for an element in the table, or a potential slot where that element could be
1677
+ /// inserted.
1678
+ ///
1679
+ /// This uses dynamic dispatch to reduce the amount of code generated, but that is
1680
+ /// eliminated by LLVM optimizations.
1681
+ #[inline]
1682
+ fn find_or_find_insert_slot_inner(
1683
+ &self,
1684
+ hash: u64,
1685
+ eq: &mut dyn FnMut(usize) -> bool,
1686
+ ) -> Result<usize, InsertSlot> {
1687
+ let mut insert_slot = None;
1688
+
1689
+ let h2_hash = h2(hash);
1690
+ let mut probe_seq = self.probe_seq(hash);
1691
+
1692
+ loop {
1693
+ let group = unsafe { Group::load(self.ctrl(probe_seq.pos)) };
1694
+
1695
+ for bit in group.match_byte(h2_hash) {
1696
+ let index = (probe_seq.pos + bit) & self.bucket_mask;
1697
+
1698
+ if likely(eq(index)) {
1699
+ return Ok(index);
1700
+ }
1701
+ }
1702
+
1703
+ // We didn't find the element we were looking for in the group, try to get an
1704
+ // insertion slot from the group if we don't have one yet.
1705
+ if likely(insert_slot.is_none()) {
1706
+ insert_slot = self.find_insert_slot_in_group(&group, &probe_seq);
1707
+ }
1708
+
1709
+ // Only stop the search if the group contains at least one empty element.
1710
+ // Otherwise, the element that we are looking for might be in a following group.
1711
+ if likely(group.match_empty().any_bit_set()) {
1712
+ // We must have found a insert slot by now, since the current group contains at
1713
+ // least one. For tables smaller than the group width, there will still be an
1714
+ // empty element in the current (and only) group due to the load factor.
1715
+ unsafe {
1716
+ return Err(self.fix_insert_slot(insert_slot.unwrap_unchecked()));
1717
+ }
1718
+ }
1719
+
1720
+ probe_seq.move_next(self.bucket_mask);
1721
+ }
1722
+ }
1723
+
1724
+ /// Searches for an empty or deleted bucket which is suitable for inserting
1725
+ /// a new element and sets the hash for that slot.
1726
+ ///
1727
+ /// There must be at least 1 empty bucket in the table.
1728
+ #[inline]
1729
+ unsafe fn prepare_insert_slot(&self, hash: u64) -> (usize, u8) {
1730
+ let index = self.find_insert_slot(hash).index;
1731
+ let old_ctrl = *self.ctrl(index);
1732
+ self.set_ctrl_h2(index, hash);
1733
+ (index, old_ctrl)
1734
+ }
1735
+
1736
+ /// Searches for an empty or deleted bucket which is suitable for inserting
1737
+ /// a new element, returning the `index` for the new [`Bucket`].
1738
+ ///
1739
+ /// This function does not make any changes to the `data` part of the table, or any
1740
+ /// changes to the `items` or `growth_left` field of the table.
1741
+ ///
1742
+ /// The table must have at least 1 empty or deleted `bucket`, otherwise this function
1743
+ /// will never return (will go into an infinite loop) for tables larger than the group
1744
+ /// width, or return an index outside of the table indices range if the table is less
1745
+ /// than the group width.
1746
+ ///
1747
+ /// # Note
1748
+ ///
1749
+ /// Calling this function is always safe, but attempting to write data at
1750
+ /// the index returned by this function when the table is less than the group width
1751
+ /// and if there was not at least one empty bucket in the table will cause immediate
1752
+ /// [`undefined behavior`]. This is because in this case the function will return
1753
+ /// `self.bucket_mask + 1` as an index due to the trailing EMPTY control bytes outside
1754
+ /// the table range.
1755
+ ///
1756
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
1757
+ #[inline]
1758
+ fn find_insert_slot(&self, hash: u64) -> InsertSlot {
1759
+ let mut probe_seq = self.probe_seq(hash);
1760
+ loop {
1761
+ // SAFETY:
1762
+ // * `ProbeSeq.pos` cannot be greater than `self.bucket_mask = self.buckets() - 1`
1763
+ // of the table due to masking with `self.bucket_mask` and also because mumber of
1764
+ // buckets is a power of two (see comment for masking below).
1765
+ //
1766
+ // * Even if `ProbeSeq.pos` returns `position == self.bucket_mask`, it is safe to
1767
+ // call `Group::load` due to the extended control bytes range, which is
1768
+ // `self.bucket_mask + 1 + Group::WIDTH` (in fact, this means that the last control
1769
+ // byte will never be read for the allocated table);
1770
+ //
1771
+ // * Also, even if `RawTableInner` is not already allocated, `ProbeSeq.pos` will
1772
+ // always return "0" (zero), so Group::load will read unaligned `Group::static_empty()`
1773
+ // bytes, which is safe (see RawTableInner::new_in).
1774
+ unsafe {
1775
+ let group = Group::load(self.ctrl(probe_seq.pos));
1776
+ let index = self.find_insert_slot_in_group(&group, &probe_seq);
1777
+
1778
+ if likely(index.is_some()) {
1779
+ return self.fix_insert_slot(index.unwrap_unchecked());
1780
+ }
1781
+ }
1782
+ probe_seq.move_next(self.bucket_mask);
1783
+ }
1784
+ }
1785
+
1786
+ /// Searches for an element in a table, returning the `index` of the found element.
1787
+ /// This uses dynamic dispatch to reduce the amount of code generated, but it is
1788
+ /// eliminated by LLVM optimizations.
1789
+ ///
1790
+ /// This function does not make any changes to the `data` part of the table, or any
1791
+ /// changes to the `items` or `growth_left` field of the table.
1792
+ ///
1793
+ /// The table must have at least 1 empty `bucket`, otherwise, if the
1794
+ /// `eq: &mut dyn FnMut(usize) -> bool` function does not return `true`,
1795
+ /// this function will also never return (will go into an infinite loop).
1796
+ #[inline(always)]
1797
+ fn find_inner(&self, hash: u64, eq: &mut dyn FnMut(usize) -> bool) -> Option<usize> {
1798
+ let h2_hash = h2(hash);
1799
+ let mut probe_seq = self.probe_seq(hash);
1800
+
1801
+ loop {
1802
+ // SAFETY:
1803
+ // * `ProbeSeq.pos` cannot be greater than `self.bucket_mask = self.buckets() - 1`
1804
+ // of the table due to masking with `self.bucket_mask`.
1805
+ //
1806
+ // * Even if `ProbeSeq.pos` returns `position == self.bucket_mask`, it is safe to
1807
+ // call `Group::load` due to the extended control bytes range, which is
1808
+ // `self.bucket_mask + 1 + Group::WIDTH` (in fact, this means that the last control
1809
+ // byte will never be read for the allocated table);
1810
+ //
1811
+ // * Also, even if `RawTableInner` is not already allocated, `ProbeSeq.pos` will
1812
+ // always return "0" (zero), so Group::load will read unaligned `Group::static_empty()`
1813
+ // bytes, which is safe (see RawTableInner::new_in).
1814
+ let group = unsafe { Group::load(self.ctrl(probe_seq.pos)) };
1815
+
1816
+ for bit in group.match_byte(h2_hash) {
1817
+ // This is the same as `(probe_seq.pos + bit) % self.buckets()` because the number
1818
+ // of buckets is a power of two, and `self.bucket_mask = self.buckets() - 1`.
1819
+ let index = (probe_seq.pos + bit) & self.bucket_mask;
1820
+
1821
+ if likely(eq(index)) {
1822
+ return Some(index);
1823
+ }
1824
+ }
1825
+
1826
+ if likely(group.match_empty().any_bit_set()) {
1827
+ return None;
1828
+ }
1829
+
1830
+ probe_seq.move_next(self.bucket_mask);
1831
+ }
1832
+ }
1833
+
1834
+ /// Prepares for rehashing data in place (that is, without allocating new memory).
1835
+ /// Converts all full index `control bytes` to `DELETED` and all `DELETED` control
1836
+ /// bytes to `EMPTY`, i.e. performs the following conversion:
1837
+ ///
1838
+ /// - `EMPTY` control bytes -> `EMPTY`;
1839
+ /// - `DELETED` control bytes -> `EMPTY`;
1840
+ /// - `FULL` control bytes -> `DELETED`.
1841
+ ///
1842
+ /// This function does not make any changes to the `data` parts of the table,
1843
+ /// or any changes to the the `items` or `growth_left` field of the table.
1844
+ ///
1845
+ /// # Safety
1846
+ ///
1847
+ /// You must observe the following safety rules when calling this function:
1848
+ ///
1849
+ /// * The [`RawTableInner`] has already been allocated;
1850
+ ///
1851
+ /// * The caller of this function must convert the `DELETED` bytes back to `FULL`
1852
+ /// bytes when re-inserting them into their ideal position (which was impossible
1853
+ /// to do during the first insert due to tombstones). If the caller does not do
1854
+ /// this, then calling this function may result in a memory leak.
1855
+ ///
1856
+ /// Calling this function on a table that has not been allocated results in
1857
+ /// [`undefined behavior`].
1858
+ ///
1859
+ /// See also [`Bucket::as_ptr`] method, for more information about of properly removing
1860
+ /// or saving `data element` from / into the [`RawTable`] / [`RawTableInner`].
1861
+ ///
1862
+ /// [`Bucket::as_ptr`]: Bucket::as_ptr
1863
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
1864
+ #[allow(clippy::mut_mut)]
1865
+ #[inline]
1866
+ unsafe fn prepare_rehash_in_place(&mut self) {
1867
+ // Bulk convert all full control bytes to DELETED, and all DELETED control bytes to EMPTY.
1868
+ // This effectively frees up all buckets containing a DELETED entry.
1869
+ //
1870
+ // SAFETY:
1871
+ // 1. `i` is guaranteed to be within bounds since we are iterating from zero to `buckets - 1`;
1872
+ // 2. Even if `i` will be `i == self.bucket_mask`, it is safe to call `Group::load_aligned`
1873
+ // due to the extended control bytes range, which is `self.bucket_mask + 1 + Group::WIDTH`;
1874
+ // 3. The caller of this function guarantees that [`RawTableInner`] has already been allocated;
1875
+ // 4. We can use `Group::load_aligned` and `Group::store_aligned` here since we start from 0
1876
+ // and go to the end with a step equal to `Group::WIDTH` (see TableLayout::calculate_layout_for).
1877
+ for i in (0..self.buckets()).step_by(Group::WIDTH) {
1878
+ let group = Group::load_aligned(self.ctrl(i));
1879
+ let group = group.convert_special_to_empty_and_full_to_deleted();
1880
+ group.store_aligned(self.ctrl(i));
1881
+ }
1882
+
1883
+ // Fix up the trailing control bytes. See the comments in set_ctrl
1884
+ // for the handling of tables smaller than the group width.
1885
+ //
1886
+ // SAFETY: The caller of this function guarantees that [`RawTableInner`]
1887
+ // has already been allocated
1888
+ if unlikely(self.buckets() < Group::WIDTH) {
1889
+ // SAFETY: We have `self.bucket_mask + 1 + Group::WIDTH` number of control bytes,
1890
+ // so copying `self.buckets() == self.bucket_mask + 1` bytes with offset equal to
1891
+ // `Group::WIDTH` is safe
1892
+ self.ctrl(0)
1893
+ .copy_to(self.ctrl(Group::WIDTH), self.buckets());
1894
+ } else {
1895
+ // SAFETY: We have `self.bucket_mask + 1 + Group::WIDTH` number of
1896
+ // control bytes,so copying `Group::WIDTH` bytes with offset equal
1897
+ // to `self.buckets() == self.bucket_mask + 1` is safe
1898
+ self.ctrl(0)
1899
+ .copy_to(self.ctrl(self.buckets()), Group::WIDTH);
1900
+ }
1901
+ }
1902
+
1903
+ #[inline]
1904
+ unsafe fn bucket<T>(&self, index: usize) -> Bucket<T> {
1905
+ debug_assert_ne!(self.bucket_mask, 0);
1906
+ debug_assert!(index < self.buckets());
1907
+ Bucket::from_base_index(self.data_end(), index)
1908
+ }
1909
+
1910
+ #[inline]
1911
+ unsafe fn bucket_ptr(&self, index: usize, size_of: usize) -> *mut u8 {
1912
+ debug_assert_ne!(self.bucket_mask, 0);
1913
+ debug_assert!(index < self.buckets());
1914
+ let base: *mut u8 = self.data_end().as_ptr();
1915
+ base.sub((index + 1) * size_of)
1916
+ }
1917
+
1918
+ #[inline]
1919
+ unsafe fn data_end<T>(&self) -> NonNull<T> {
1920
+ NonNull::new_unchecked(self.ctrl.as_ptr().cast())
1921
+ }
1922
+
1923
+ /// Returns an iterator-like object for a probe sequence on the table.
1924
+ ///
1925
+ /// This iterator never terminates, but is guaranteed to visit each bucket
1926
+ /// group exactly once. The loop using `probe_seq` must terminate upon
1927
+ /// reaching a group containing an empty bucket.
1928
+ #[inline]
1929
+ fn probe_seq(&self, hash: u64) -> ProbeSeq {
1930
+ ProbeSeq {
1931
+ pos: h1(hash) & self.bucket_mask,
1932
+ stride: 0,
1933
+ }
1934
+ }
1935
+
1936
+ /// Returns the index of a bucket for which a value must be inserted if there is enough rooom
1937
+ /// in the table, otherwise returns error
1938
+ #[cfg(feature = "raw")]
1939
+ #[inline]
1940
+ unsafe fn prepare_insert_no_grow(&mut self, hash: u64) -> Result<usize, ()> {
1941
+ let index = self.find_insert_slot(hash).index;
1942
+ let old_ctrl = *self.ctrl(index);
1943
+ if unlikely(self.growth_left == 0 && special_is_empty(old_ctrl)) {
1944
+ Err(())
1945
+ } else {
1946
+ self.record_item_insert_at(index, old_ctrl, hash);
1947
+ Ok(index)
1948
+ }
1949
+ }
1950
+
1951
+ #[inline]
1952
+ unsafe fn record_item_insert_at(&mut self, index: usize, old_ctrl: u8, hash: u64) {
1953
+ self.growth_left -= usize::from(special_is_empty(old_ctrl));
1954
+ self.set_ctrl_h2(index, hash);
1955
+ self.items += 1;
1956
+ }
1957
+
1958
+ #[inline]
1959
+ fn is_in_same_group(&self, i: usize, new_i: usize, hash: u64) -> bool {
1960
+ let probe_seq_pos = self.probe_seq(hash).pos;
1961
+ let probe_index =
1962
+ |pos: usize| (pos.wrapping_sub(probe_seq_pos) & self.bucket_mask) / Group::WIDTH;
1963
+ probe_index(i) == probe_index(new_i)
1964
+ }
1965
+
1966
+ /// Sets a control byte to the hash, and possibly also the replicated control byte at
1967
+ /// the end of the array.
1968
+ ///
1969
+ /// This function does not make any changes to the `data` parts of the table,
1970
+ /// or any changes to the the `items` or `growth_left` field of the table.
1971
+ ///
1972
+ /// # Safety
1973
+ ///
1974
+ /// The safety rules are directly derived from the safety rules for [`RawTableInner::set_ctrl`]
1975
+ /// method. Thus, in order to uphold the safety contracts for the method, you must observe the
1976
+ /// following rules when calling this function:
1977
+ ///
1978
+ /// * The [`RawTableInner`] has already been allocated;
1979
+ ///
1980
+ /// * The `index` must not be greater than the `RawTableInner.bucket_mask`, i.e.
1981
+ /// `index <= RawTableInner.bucket_mask` or, in other words, `(index + 1)` must
1982
+ /// be no greater than the number returned by the function [`RawTableInner::buckets`].
1983
+ ///
1984
+ /// Calling this function on a table that has not been allocated results in [`undefined behavior`].
1985
+ ///
1986
+ /// See also [`Bucket::as_ptr`] method, for more information about of properly removing
1987
+ /// or saving `data element` from / into the [`RawTable`] / [`RawTableInner`].
1988
+ ///
1989
+ /// [`RawTableInner::set_ctrl`]: RawTableInner::set_ctrl
1990
+ /// [`RawTableInner::buckets`]: RawTableInner::buckets
1991
+ /// [`Bucket::as_ptr`]: Bucket::as_ptr
1992
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
1993
+ #[inline]
1994
+ unsafe fn set_ctrl_h2(&self, index: usize, hash: u64) {
1995
+ // SAFETY: The caller must uphold the safety rules for the [`RawTableInner::set_ctrl_h2`]
1996
+ self.set_ctrl(index, h2(hash));
1997
+ }
1998
+
1999
+ /// Replaces the hash in the control byte at the given index with the provided one,
2000
+ /// and possibly also replicates the new control byte at the end of the array of control
2001
+ /// bytes, returning the old control byte.
2002
+ ///
2003
+ /// This function does not make any changes to the `data` parts of the table,
2004
+ /// or any changes to the the `items` or `growth_left` field of the table.
2005
+ ///
2006
+ /// # Safety
2007
+ ///
2008
+ /// The safety rules are directly derived from the safety rules for [`RawTableInner::set_ctrl_h2`]
2009
+ /// and [`RawTableInner::ctrl`] methods. Thus, in order to uphold the safety contracts for both
2010
+ /// methods, you must observe the following rules when calling this function:
2011
+ ///
2012
+ /// * The [`RawTableInner`] has already been allocated;
2013
+ ///
2014
+ /// * The `index` must not be greater than the `RawTableInner.bucket_mask`, i.e.
2015
+ /// `index <= RawTableInner.bucket_mask` or, in other words, `(index + 1)` must
2016
+ /// be no greater than the number returned by the function [`RawTableInner::buckets`].
2017
+ ///
2018
+ /// Calling this function on a table that has not been allocated results in [`undefined behavior`].
2019
+ ///
2020
+ /// See also [`Bucket::as_ptr`] method, for more information about of properly removing
2021
+ /// or saving `data element` from / into the [`RawTable`] / [`RawTableInner`].
2022
+ ///
2023
+ /// [`RawTableInner::set_ctrl_h2`]: RawTableInner::set_ctrl_h2
2024
+ /// [`RawTableInner::buckets`]: RawTableInner::buckets
2025
+ /// [`Bucket::as_ptr`]: Bucket::as_ptr
2026
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
2027
+ #[inline]
2028
+ unsafe fn replace_ctrl_h2(&self, index: usize, hash: u64) -> u8 {
2029
+ // SAFETY: The caller must uphold the safety rules for the [`RawTableInner::replace_ctrl_h2`]
2030
+ let prev_ctrl = *self.ctrl(index);
2031
+ self.set_ctrl_h2(index, hash);
2032
+ prev_ctrl
2033
+ }
2034
+
2035
+ /// Sets a control byte, and possibly also the replicated control byte at
2036
+ /// the end of the array.
2037
+ ///
2038
+ /// This function does not make any changes to the `data` parts of the table,
2039
+ /// or any changes to the the `items` or `growth_left` field of the table.
2040
+ ///
2041
+ /// # Safety
2042
+ ///
2043
+ /// You must observe the following safety rules when calling this function:
2044
+ ///
2045
+ /// * The [`RawTableInner`] has already been allocated;
2046
+ ///
2047
+ /// * The `index` must not be greater than the `RawTableInner.bucket_mask`, i.e.
2048
+ /// `index <= RawTableInner.bucket_mask` or, in other words, `(index + 1)` must
2049
+ /// be no greater than the number returned by the function [`RawTableInner::buckets`].
2050
+ ///
2051
+ /// Calling this function on a table that has not been allocated results in [`undefined behavior`].
2052
+ ///
2053
+ /// See also [`Bucket::as_ptr`] method, for more information about of properly removing
2054
+ /// or saving `data element` from / into the [`RawTable`] / [`RawTableInner`].
2055
+ ///
2056
+ /// [`RawTableInner::buckets`]: RawTableInner::buckets
2057
+ /// [`Bucket::as_ptr`]: Bucket::as_ptr
2058
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
2059
+ #[inline]
2060
+ unsafe fn set_ctrl(&self, index: usize, ctrl: u8) {
2061
+ // Replicate the first Group::WIDTH control bytes at the end of
2062
+ // the array without using a branch:
2063
+ // - If index >= Group::WIDTH then index == index2.
2064
+ // - Otherwise index2 == self.bucket_mask + 1 + index.
2065
+ //
2066
+ // The very last replicated control byte is never actually read because
2067
+ // we mask the initial index for unaligned loads, but we write it
2068
+ // anyways because it makes the set_ctrl implementation simpler.
2069
+ //
2070
+ // If there are fewer buckets than Group::WIDTH then this code will
2071
+ // replicate the buckets at the end of the trailing group. For example
2072
+ // with 2 buckets and a group size of 4, the control bytes will look
2073
+ // like this:
2074
+ //
2075
+ // Real | Replicated
2076
+ // ---------------------------------------------
2077
+ // | [A] | [B] | [EMPTY] | [EMPTY] | [A] | [B] |
2078
+ // ---------------------------------------------
2079
+
2080
+ // This is the same as `(index.wrapping_sub(Group::WIDTH)) % self.buckets() + Group::WIDTH`
2081
+ // because the number of buckets is a power of two, and `self.bucket_mask = self.buckets() - 1`.
2082
+ let index2 = ((index.wrapping_sub(Group::WIDTH)) & self.bucket_mask) + Group::WIDTH;
2083
+
2084
+ // SAFETY: The caller must uphold the safety rules for the [`RawTableInner::set_ctrl`]
2085
+ *self.ctrl(index) = ctrl;
2086
+ *self.ctrl(index2) = ctrl;
2087
+ }
2088
+
2089
+ /// Returns a pointer to a control byte.
2090
+ ///
2091
+ /// # Safety
2092
+ ///
2093
+ /// For the allocated [`RawTableInner`], the result is [`Undefined Behavior`],
2094
+ /// if the `index` is greater than the `self.bucket_mask + 1 + Group::WIDTH`.
2095
+ /// In that case, calling this function with `index == self.bucket_mask + 1 + Group::WIDTH`
2096
+ /// will return a pointer to the end of the allocated table and it is useless on its own.
2097
+ ///
2098
+ /// Calling this function with `index >= self.bucket_mask + 1 + Group::WIDTH` on a
2099
+ /// table that has not been allocated results in [`Undefined Behavior`].
2100
+ ///
2101
+ /// So to satisfy both requirements you should always follow the rule that
2102
+ /// `index < self.bucket_mask + 1 + Group::WIDTH`
2103
+ ///
2104
+ /// Calling this function on [`RawTableInner`] that are not already allocated is safe
2105
+ /// for read-only purpose.
2106
+ ///
2107
+ /// See also [`Bucket::as_ptr()`] method, for more information about of properly removing
2108
+ /// or saving `data element` from / into the [`RawTable`] / [`RawTableInner`].
2109
+ ///
2110
+ /// [`Bucket::as_ptr()`]: Bucket::as_ptr()
2111
+ /// [`Undefined Behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
2112
+ #[inline]
2113
+ unsafe fn ctrl(&self, index: usize) -> *mut u8 {
2114
+ debug_assert!(index < self.num_ctrl_bytes());
2115
+ // SAFETY: The caller must uphold the safety rules for the [`RawTableInner::ctrl`]
2116
+ self.ctrl.as_ptr().add(index)
2117
+ }
2118
+
2119
+ #[inline]
2120
+ fn buckets(&self) -> usize {
2121
+ self.bucket_mask + 1
2122
+ }
2123
+
2124
+ /// Checks whether the bucket at `index` is full.
2125
+ ///
2126
+ /// # Safety
2127
+ ///
2128
+ /// The caller must ensure `index` is less than the number of buckets.
2129
+ #[inline]
2130
+ unsafe fn is_bucket_full(&self, index: usize) -> bool {
2131
+ debug_assert!(index < self.buckets());
2132
+ is_full(*self.ctrl(index))
2133
+ }
2134
+
2135
+ #[inline]
2136
+ fn num_ctrl_bytes(&self) -> usize {
2137
+ self.bucket_mask + 1 + Group::WIDTH
2138
+ }
2139
+
2140
+ #[inline]
2141
+ fn is_empty_singleton(&self) -> bool {
2142
+ self.bucket_mask == 0
2143
+ }
2144
+
2145
+ #[allow(clippy::mut_mut)]
2146
+ #[inline]
2147
+ unsafe fn prepare_resize(
2148
+ &self,
2149
+ table_layout: TableLayout,
2150
+ capacity: usize,
2151
+ fallibility: Fallibility,
2152
+ ) -> Result<crate::scopeguard::ScopeGuard<Self, impl FnMut(&mut Self)>, TryReserveError> {
2153
+ debug_assert!(self.items <= capacity);
2154
+
2155
+ // Allocate and initialize the new table.
2156
+ let mut new_table = RawTableInner::fallible_with_capacity(
2157
+ self.alloc.clone(),
2158
+ table_layout,
2159
+ capacity,
2160
+ fallibility,
2161
+ )?;
2162
+ new_table.growth_left -= self.items;
2163
+ new_table.items = self.items;
2164
+
2165
+ // The hash function may panic, in which case we simply free the new
2166
+ // table without dropping any elements that may have been copied into
2167
+ // it.
2168
+ //
2169
+ // This guard is also used to free the old table on success, see
2170
+ // the comment at the bottom of this function.
2171
+ Ok(guard(new_table, move |self_| {
2172
+ if !self_.is_empty_singleton() {
2173
+ self_.free_buckets(table_layout);
2174
+ }
2175
+ }))
2176
+ }
2177
+
2178
+ /// Reserves or rehashes to make room for `additional` more elements.
2179
+ ///
2180
+ /// This uses dynamic dispatch to reduce the amount of
2181
+ /// code generated, but it is eliminated by LLVM optimizations when inlined.
2182
+ #[allow(clippy::inline_always)]
2183
+ #[inline(always)]
2184
+ unsafe fn reserve_rehash_inner(
2185
+ &mut self,
2186
+ additional: usize,
2187
+ hasher: &dyn Fn(&mut Self, usize) -> u64,
2188
+ fallibility: Fallibility,
2189
+ layout: TableLayout,
2190
+ drop: Option<fn(*mut u8)>,
2191
+ ) -> Result<(), TryReserveError> {
2192
+ // Avoid `Option::ok_or_else` because it bloats LLVM IR.
2193
+ let new_items = match self.items.checked_add(additional) {
2194
+ Some(new_items) => new_items,
2195
+ None => return Err(fallibility.capacity_overflow()),
2196
+ };
2197
+ let full_capacity = bucket_mask_to_capacity(self.bucket_mask);
2198
+ if new_items <= full_capacity / 2 {
2199
+ // Rehash in-place without re-allocating if we have plenty of spare
2200
+ // capacity that is locked up due to DELETED entries.
2201
+ self.rehash_in_place(hasher, layout.size, drop);
2202
+ Ok(())
2203
+ } else {
2204
+ // Otherwise, conservatively resize to at least the next size up
2205
+ // to avoid churning deletes into frequent rehashes.
2206
+ self.resize_inner(
2207
+ usize::max(new_items, full_capacity + 1),
2208
+ hasher,
2209
+ fallibility,
2210
+ layout,
2211
+ )
2212
+ }
2213
+ }
2214
+
2215
+ /// Allocates a new table of a different size and moves the contents of the
2216
+ /// current table into it.
2217
+ ///
2218
+ /// This uses dynamic dispatch to reduce the amount of
2219
+ /// code generated, but it is eliminated by LLVM optimizations when inlined.
2220
+ #[allow(clippy::inline_always)]
2221
+ #[inline(always)]
2222
+ unsafe fn resize_inner(
2223
+ &mut self,
2224
+ capacity: usize,
2225
+ hasher: &dyn Fn(&mut Self, usize) -> u64,
2226
+ fallibility: Fallibility,
2227
+ layout: TableLayout,
2228
+ ) -> Result<(), TryReserveError> {
2229
+ let mut new_table = self.prepare_resize(layout, capacity, fallibility)?;
2230
+
2231
+ // Copy all elements to the new table.
2232
+ for i in 0..self.buckets() {
2233
+ if !self.is_bucket_full(i) {
2234
+ continue;
2235
+ }
2236
+
2237
+ // This may panic.
2238
+ let hash = hasher(self, i);
2239
+
2240
+ // We can use a simpler version of insert() here since:
2241
+ // - there are no DELETED entries.
2242
+ // - we know there is enough space in the table.
2243
+ // - all elements are unique.
2244
+ let (index, _) = new_table.prepare_insert_slot(hash);
2245
+
2246
+ ptr::copy_nonoverlapping(
2247
+ self.bucket_ptr(i, layout.size),
2248
+ new_table.bucket_ptr(index, layout.size),
2249
+ layout.size,
2250
+ );
2251
+ }
2252
+
2253
+ // We successfully copied all elements without panicking. Now replace
2254
+ // self with the new table. The old table will have its memory freed but
2255
+ // the items will not be dropped (since they have been moved into the
2256
+ // new table).
2257
+ mem::swap(self, &mut new_table);
2258
+
2259
+ Ok(())
2260
+ }
2261
+
2262
+ /// Rehashes the contents of the table in place (i.e. without changing the
2263
+ /// allocation).
2264
+ ///
2265
+ /// If `hasher` panics then some the table's contents may be lost.
2266
+ ///
2267
+ /// This uses dynamic dispatch to reduce the amount of
2268
+ /// code generated, but it is eliminated by LLVM optimizations when inlined.
2269
+ #[allow(clippy::inline_always)]
2270
+ #[cfg_attr(feature = "inline-more", inline(always))]
2271
+ #[cfg_attr(not(feature = "inline-more"), inline)]
2272
+ unsafe fn rehash_in_place(
2273
+ &mut self,
2274
+ hasher: &dyn Fn(&mut Self, usize) -> u64,
2275
+ size_of: usize,
2276
+ drop: Option<fn(*mut u8)>,
2277
+ ) {
2278
+ // If the hash function panics then properly clean up any elements
2279
+ // that we haven't rehashed yet. We unfortunately can't preserve the
2280
+ // element since we lost their hash and have no way of recovering it
2281
+ // without risking another panic.
2282
+ self.prepare_rehash_in_place();
2283
+
2284
+ let mut guard = guard(self, move |self_| {
2285
+ if let Some(drop) = drop {
2286
+ for i in 0..self_.buckets() {
2287
+ if *self_.ctrl(i) == DELETED {
2288
+ self_.set_ctrl(i, EMPTY);
2289
+ drop(self_.bucket_ptr(i, size_of));
2290
+ self_.items -= 1;
2291
+ }
2292
+ }
2293
+ }
2294
+ self_.growth_left = bucket_mask_to_capacity(self_.bucket_mask) - self_.items;
2295
+ });
2296
+
2297
+ // At this point, DELETED elements are elements that we haven't
2298
+ // rehashed yet. Find them and re-insert them at their ideal
2299
+ // position.
2300
+ 'outer: for i in 0..guard.buckets() {
2301
+ if *guard.ctrl(i) != DELETED {
2302
+ continue;
2303
+ }
2304
+
2305
+ let i_p = guard.bucket_ptr(i, size_of);
2306
+
2307
+ 'inner: loop {
2308
+ // Hash the current item
2309
+ let hash = hasher(*guard, i);
2310
+
2311
+ // Search for a suitable place to put it
2312
+ let new_i = guard.find_insert_slot(hash).index;
2313
+
2314
+ // Probing works by scanning through all of the control
2315
+ // bytes in groups, which may not be aligned to the group
2316
+ // size. If both the new and old position fall within the
2317
+ // same unaligned group, then there is no benefit in moving
2318
+ // it and we can just continue to the next item.
2319
+ if likely(guard.is_in_same_group(i, new_i, hash)) {
2320
+ guard.set_ctrl_h2(i, hash);
2321
+ continue 'outer;
2322
+ }
2323
+
2324
+ let new_i_p = guard.bucket_ptr(new_i, size_of);
2325
+
2326
+ // We are moving the current item to a new position. Write
2327
+ // our H2 to the control byte of the new position.
2328
+ let prev_ctrl = guard.replace_ctrl_h2(new_i, hash);
2329
+ if prev_ctrl == EMPTY {
2330
+ guard.set_ctrl(i, EMPTY);
2331
+ // If the target slot is empty, simply move the current
2332
+ // element into the new slot and clear the old control
2333
+ // byte.
2334
+ ptr::copy_nonoverlapping(i_p, new_i_p, size_of);
2335
+ continue 'outer;
2336
+ } else {
2337
+ // If the target slot is occupied, swap the two elements
2338
+ // and then continue processing the element that we just
2339
+ // swapped into the old slot.
2340
+ debug_assert_eq!(prev_ctrl, DELETED);
2341
+ ptr::swap_nonoverlapping(i_p, new_i_p, size_of);
2342
+ continue 'inner;
2343
+ }
2344
+ }
2345
+ }
2346
+
2347
+ guard.growth_left = bucket_mask_to_capacity(guard.bucket_mask) - guard.items;
2348
+
2349
+ mem::forget(guard);
2350
+ }
2351
+
2352
+ #[inline]
2353
+ unsafe fn free_buckets(&mut self, table_layout: TableLayout) {
2354
+ let (ptr, layout) = self.allocation_info(table_layout);
2355
+ self.alloc.deallocate(ptr, layout);
2356
+ }
2357
+
2358
+ #[inline]
2359
+ fn allocation_info(&self, table_layout: TableLayout) -> (NonNull<u8>, Layout) {
2360
+ debug_assert!(
2361
+ !self.is_empty_singleton(),
2362
+ "this function can only be called on non-empty tables"
2363
+ );
2364
+
2365
+ // Avoid `Option::unwrap_or_else` because it bloats LLVM IR.
2366
+ let (layout, ctrl_offset) = match table_layout.calculate_layout_for(self.buckets()) {
2367
+ Some(lco) => lco,
2368
+ None => unsafe { hint::unreachable_unchecked() },
2369
+ };
2370
+ (
2371
+ unsafe { NonNull::new_unchecked(self.ctrl.as_ptr().sub(ctrl_offset)) },
2372
+ layout,
2373
+ )
2374
+ }
2375
+
2376
+ #[cfg(feature = "raw")]
2377
+ fn allocation_info_or_zero(&self, table_layout: TableLayout) -> (NonNull<u8>, Layout) {
2378
+ if self.is_empty_singleton() {
2379
+ (NonNull::dangling(), Layout::new::<()>())
2380
+ } else {
2381
+ self.allocation_info(table_layout)
2382
+ }
2383
+ }
2384
+
2385
+ /// Marks all table buckets as empty without dropping their contents.
2386
+ #[inline]
2387
+ fn clear_no_drop(&mut self) {
2388
+ if !self.is_empty_singleton() {
2389
+ unsafe {
2390
+ self.ctrl(0).write_bytes(EMPTY, self.num_ctrl_bytes());
2391
+ }
2392
+ }
2393
+ self.items = 0;
2394
+ self.growth_left = bucket_mask_to_capacity(self.bucket_mask);
2395
+ }
2396
+
2397
+ /// Erases the [`Bucket`]'s control byte at the given index so that it does not
2398
+ /// triggered as full, decreases the `items` of the table and, if it can be done,
2399
+ /// increases `self.growth_left`.
2400
+ ///
2401
+ /// This function does not actually erase / drop the [`Bucket`] itself, i.e. it
2402
+ /// does not make any changes to the `data` parts of the table. The caller of this
2403
+ /// function must take care to properly drop the `data`, otherwise calling this
2404
+ /// function may result in a memory leak.
2405
+ ///
2406
+ /// # Safety
2407
+ ///
2408
+ /// You must observe the following safety rules when calling this function:
2409
+ ///
2410
+ /// * The [`RawTableInner`] has already been allocated;
2411
+ ///
2412
+ /// * It must be the full control byte at the given position;
2413
+ ///
2414
+ /// * The `index` must not be greater than the `RawTableInner.bucket_mask`, i.e.
2415
+ /// `index <= RawTableInner.bucket_mask` or, in other words, `(index + 1)` must
2416
+ /// be no greater than the number returned by the function [`RawTableInner::buckets`].
2417
+ ///
2418
+ /// Calling this function on a table that has not been allocated results in [`undefined behavior`].
2419
+ ///
2420
+ /// Calling this function on a table with no elements is unspecified, but calling subsequent
2421
+ /// functions is likely to result in [`undefined behavior`] due to overflow subtraction
2422
+ /// (`self.items -= 1 cause overflow when self.items == 0`).
2423
+ ///
2424
+ /// See also [`Bucket::as_ptr`] method, for more information about of properly removing
2425
+ /// or saving `data element` from / into the [`RawTable`] / [`RawTableInner`].
2426
+ ///
2427
+ /// [`RawTableInner::buckets`]: RawTableInner::buckets
2428
+ /// [`Bucket::as_ptr`]: Bucket::as_ptr
2429
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
2430
+ #[inline]
2431
+ unsafe fn erase(&mut self, index: usize) {
2432
+ debug_assert!(self.is_bucket_full(index));
2433
+
2434
+ // This is the same as `index.wrapping_sub(Group::WIDTH) % self.buckets()` because
2435
+ // the number of buckets is a power of two, and `self.bucket_mask = self.buckets() - 1`.
2436
+ let index_before = index.wrapping_sub(Group::WIDTH) & self.bucket_mask;
2437
+ // SAFETY:
2438
+ // - The caller must uphold the safety contract for `erase` method;
2439
+ // - `index_before` is guaranteed to be in range due to masking with `self.bucket_mask`
2440
+ let empty_before = Group::load(self.ctrl(index_before)).match_empty();
2441
+ let empty_after = Group::load(self.ctrl(index)).match_empty();
2442
+
2443
+ // Inserting and searching in the map is performed by two key functions:
2444
+ //
2445
+ // - The `find_insert_slot` function that looks up the index of any `EMPTY` or `DELETED`
2446
+ // slot in a group to be able to insert. If it doesn't find an `EMPTY` or `DELETED`
2447
+ // slot immediately in the first group, it jumps to the next `Group` looking for it,
2448
+ // and so on until it has gone through all the groups in the control bytes.
2449
+ //
2450
+ // - The `find_inner` function that looks for the index of the desired element by looking
2451
+ // at all the `FULL` bytes in the group. If it did not find the element right away, and
2452
+ // there is no `EMPTY` byte in the group, then this means that the `find_insert_slot`
2453
+ // function may have found a suitable slot in the next group. Therefore, `find_inner`
2454
+ // jumps further, and if it does not find the desired element and again there is no `EMPTY`
2455
+ // byte, then it jumps further, and so on. The search stops only if `find_inner` function
2456
+ // finds the desired element or hits an `EMPTY` slot/byte.
2457
+ //
2458
+ // Accordingly, this leads to two consequences:
2459
+ //
2460
+ // - The map must have `EMPTY` slots (bytes);
2461
+ //
2462
+ // - You can't just mark the byte to be erased as `EMPTY`, because otherwise the `find_inner`
2463
+ // function may stumble upon an `EMPTY` byte before finding the desired element and stop
2464
+ // searching.
2465
+ //
2466
+ // Thus it is necessary to check all bytes after and before the erased element. If we are in
2467
+ // a contiguous `Group` of `FULL` or `DELETED` bytes (the number of `FULL` or `DELETED` bytes
2468
+ // before and after is greater than or equal to `Group::WIDTH`), then we must mark our byte as
2469
+ // `DELETED` in order for the `find_inner` function to go further. On the other hand, if there
2470
+ // is at least one `EMPTY` slot in the `Group`, then the `find_inner` function will still stumble
2471
+ // upon an `EMPTY` byte, so we can safely mark our erased byte as `EMPTY` as well.
2472
+ //
2473
+ // Finally, since `index_before == (index.wrapping_sub(Group::WIDTH) & self.bucket_mask) == index`
2474
+ // and given all of the above, tables smaller than the group width (self.buckets() < Group::WIDTH)
2475
+ // cannot have `DELETED` bytes.
2476
+ //
2477
+ // Note that in this context `leading_zeros` refers to the bytes at the end of a group, while
2478
+ // `trailing_zeros` refers to the bytes at the beginning of a group.
2479
+ let ctrl = if empty_before.leading_zeros() + empty_after.trailing_zeros() >= Group::WIDTH {
2480
+ DELETED
2481
+ } else {
2482
+ self.growth_left += 1;
2483
+ EMPTY
2484
+ };
2485
+ // SAFETY: the caller must uphold the safety contract for `erase` method.
2486
+ self.set_ctrl(index, ctrl);
2487
+ self.items -= 1;
2488
+ }
2489
+ }
2490
+
2491
+ impl<T: Clone, A: Allocator + Clone> Clone for RawTable<T, A> {
2492
+ fn clone(&self) -> Self {
2493
+ if self.table.is_empty_singleton() {
2494
+ Self::new_in(self.table.alloc.clone())
2495
+ } else {
2496
+ unsafe {
2497
+ // Avoid `Result::ok_or_else` because it bloats LLVM IR.
2498
+ let new_table = match Self::new_uninitialized(
2499
+ self.table.alloc.clone(),
2500
+ self.table.buckets(),
2501
+ Fallibility::Infallible,
2502
+ ) {
2503
+ Ok(table) => table,
2504
+ Err(_) => hint::unreachable_unchecked(),
2505
+ };
2506
+
2507
+ // If cloning fails then we need to free the allocation for the
2508
+ // new table. However we don't run its drop since its control
2509
+ // bytes are not initialized yet.
2510
+ let mut guard = guard(ManuallyDrop::new(new_table), |new_table| {
2511
+ new_table.free_buckets();
2512
+ });
2513
+
2514
+ guard.clone_from_spec(self);
2515
+
2516
+ // Disarm the scope guard and return the newly created table.
2517
+ ManuallyDrop::into_inner(ScopeGuard::into_inner(guard))
2518
+ }
2519
+ }
2520
+ }
2521
+
2522
+ fn clone_from(&mut self, source: &Self) {
2523
+ if source.table.is_empty_singleton() {
2524
+ *self = Self::new_in(self.table.alloc.clone());
2525
+ } else {
2526
+ unsafe {
2527
+ // Make sure that if any panics occurs, we clear the table and
2528
+ // leave it in an empty state.
2529
+ let mut self_ = guard(self, |self_| {
2530
+ self_.clear_no_drop();
2531
+ });
2532
+
2533
+ // First, drop all our elements without clearing the control
2534
+ // bytes. If this panics then the scope guard will clear the
2535
+ // table, leaking any elements that were not dropped yet.
2536
+ //
2537
+ // This leak is unavoidable: we can't try dropping more elements
2538
+ // since this could lead to another panic and abort the process.
2539
+ self_.drop_elements();
2540
+
2541
+ // If necessary, resize our table to match the source.
2542
+ if self_.buckets() != source.buckets() {
2543
+ // Skip our drop by using ptr::write.
2544
+ if !self_.table.is_empty_singleton() {
2545
+ self_.free_buckets();
2546
+ }
2547
+ (&mut **self_ as *mut Self).write(
2548
+ // Avoid `Result::unwrap_or_else` because it bloats LLVM IR.
2549
+ match Self::new_uninitialized(
2550
+ self_.table.alloc.clone(),
2551
+ source.buckets(),
2552
+ Fallibility::Infallible,
2553
+ ) {
2554
+ Ok(table) => table,
2555
+ Err(_) => hint::unreachable_unchecked(),
2556
+ },
2557
+ );
2558
+ }
2559
+
2560
+ self_.clone_from_spec(source);
2561
+
2562
+ // Disarm the scope guard if cloning was successful.
2563
+ ScopeGuard::into_inner(self_);
2564
+ }
2565
+ }
2566
+ }
2567
+ }
2568
+
2569
+ /// Specialization of `clone_from` for `Copy` types
2570
+ trait RawTableClone {
2571
+ unsafe fn clone_from_spec(&mut self, source: &Self);
2572
+ }
2573
+ impl<T: Clone, A: Allocator + Clone> RawTableClone for RawTable<T, A> {
2574
+ default_fn! {
2575
+ #[cfg_attr(feature = "inline-more", inline)]
2576
+ unsafe fn clone_from_spec(&mut self, source: &Self) {
2577
+ self.clone_from_impl(source);
2578
+ }
2579
+ }
2580
+ }
2581
+ #[cfg(feature = "nightly")]
2582
+ impl<T: Copy, A: Allocator + Clone> RawTableClone for RawTable<T, A> {
2583
+ #[cfg_attr(feature = "inline-more", inline)]
2584
+ unsafe fn clone_from_spec(&mut self, source: &Self) {
2585
+ source
2586
+ .table
2587
+ .ctrl(0)
2588
+ .copy_to_nonoverlapping(self.table.ctrl(0), self.table.num_ctrl_bytes());
2589
+ source
2590
+ .data_start()
2591
+ .as_ptr()
2592
+ .copy_to_nonoverlapping(self.data_start().as_ptr(), self.table.buckets());
2593
+
2594
+ self.table.items = source.table.items;
2595
+ self.table.growth_left = source.table.growth_left;
2596
+ }
2597
+ }
2598
+
2599
+ impl<T: Clone, A: Allocator + Clone> RawTable<T, A> {
2600
+ /// Common code for clone and clone_from. Assumes:
2601
+ /// - `self.buckets() == source.buckets()`.
2602
+ /// - Any existing elements have been dropped.
2603
+ /// - The control bytes are not initialized yet.
2604
+ #[cfg_attr(feature = "inline-more", inline)]
2605
+ unsafe fn clone_from_impl(&mut self, source: &Self) {
2606
+ // Copy the control bytes unchanged. We do this in a single pass
2607
+ source
2608
+ .table
2609
+ .ctrl(0)
2610
+ .copy_to_nonoverlapping(self.table.ctrl(0), self.table.num_ctrl_bytes());
2611
+
2612
+ // The cloning of elements may panic, in which case we need
2613
+ // to make sure we drop only the elements that have been
2614
+ // cloned so far.
2615
+ let mut guard = guard((0, &mut *self), |(index, self_)| {
2616
+ if Self::DATA_NEEDS_DROP {
2617
+ for i in 0..=*index {
2618
+ if self_.is_bucket_full(i) {
2619
+ self_.bucket(i).drop();
2620
+ }
2621
+ }
2622
+ }
2623
+ });
2624
+
2625
+ for from in source.iter() {
2626
+ let index = source.bucket_index(&from);
2627
+ let to = guard.1.bucket(index);
2628
+ to.write(from.as_ref().clone());
2629
+
2630
+ // Update the index in case we need to unwind.
2631
+ guard.0 = index;
2632
+ }
2633
+
2634
+ // Successfully cloned all items, no need to clean up.
2635
+ mem::forget(guard);
2636
+
2637
+ self.table.items = source.table.items;
2638
+ self.table.growth_left = source.table.growth_left;
2639
+ }
2640
+
2641
+ /// Variant of `clone_from` to use when a hasher is available.
2642
+ #[cfg(feature = "raw")]
2643
+ pub fn clone_from_with_hasher(&mut self, source: &Self, hasher: impl Fn(&T) -> u64) {
2644
+ // If we have enough capacity in the table, just clear it and insert
2645
+ // elements one by one. We don't do this if we have the same number of
2646
+ // buckets as the source since we can just copy the contents directly
2647
+ // in that case.
2648
+ if self.table.buckets() != source.table.buckets()
2649
+ && bucket_mask_to_capacity(self.table.bucket_mask) >= source.len()
2650
+ {
2651
+ self.clear();
2652
+
2653
+ let guard_self = guard(&mut *self, |self_| {
2654
+ // Clear the partially copied table if a panic occurs, otherwise
2655
+ // items and growth_left will be out of sync with the contents
2656
+ // of the table.
2657
+ self_.clear();
2658
+ });
2659
+
2660
+ unsafe {
2661
+ for item in source.iter() {
2662
+ // This may panic.
2663
+ let item = item.as_ref().clone();
2664
+ let hash = hasher(&item);
2665
+
2666
+ // We can use a simpler version of insert() here since:
2667
+ // - there are no DELETED entries.
2668
+ // - we know there is enough space in the table.
2669
+ // - all elements are unique.
2670
+ let (index, _) = guard_self.table.prepare_insert_slot(hash);
2671
+ guard_self.bucket(index).write(item);
2672
+ }
2673
+ }
2674
+
2675
+ // Successfully cloned all items, no need to clean up.
2676
+ mem::forget(guard_self);
2677
+
2678
+ self.table.items = source.table.items;
2679
+ self.table.growth_left -= source.table.items;
2680
+ } else {
2681
+ self.clone_from(source);
2682
+ }
2683
+ }
2684
+ }
2685
+
2686
+ impl<T, A: Allocator + Clone + Default> Default for RawTable<T, A> {
2687
+ #[inline]
2688
+ fn default() -> Self {
2689
+ Self::new_in(Default::default())
2690
+ }
2691
+ }
2692
+
2693
+ #[cfg(feature = "nightly")]
2694
+ unsafe impl<#[may_dangle] T, A: Allocator + Clone> Drop for RawTable<T, A> {
2695
+ #[cfg_attr(feature = "inline-more", inline)]
2696
+ fn drop(&mut self) {
2697
+ if !self.table.is_empty_singleton() {
2698
+ unsafe {
2699
+ self.drop_elements();
2700
+ self.free_buckets();
2701
+ }
2702
+ }
2703
+ }
2704
+ }
2705
+ #[cfg(not(feature = "nightly"))]
2706
+ impl<T, A: Allocator + Clone> Drop for RawTable<T, A> {
2707
+ #[cfg_attr(feature = "inline-more", inline)]
2708
+ fn drop(&mut self) {
2709
+ if !self.table.is_empty_singleton() {
2710
+ unsafe {
2711
+ self.drop_elements();
2712
+ self.free_buckets();
2713
+ }
2714
+ }
2715
+ }
2716
+ }
2717
+
2718
+ impl<T, A: Allocator + Clone> IntoIterator for RawTable<T, A> {
2719
+ type Item = T;
2720
+ type IntoIter = RawIntoIter<T, A>;
2721
+
2722
+ #[cfg_attr(feature = "inline-more", inline)]
2723
+ fn into_iter(self) -> RawIntoIter<T, A> {
2724
+ unsafe {
2725
+ let iter = self.iter();
2726
+ self.into_iter_from(iter)
2727
+ }
2728
+ }
2729
+ }
2730
+
2731
+ /// Iterator over a sub-range of a table. Unlike `RawIter` this iterator does
2732
+ /// not track an item count.
2733
+ pub(crate) struct RawIterRange<T> {
2734
+ // Mask of full buckets in the current group. Bits are cleared from this
2735
+ // mask as each element is processed.
2736
+ current_group: BitMaskIter,
2737
+
2738
+ // Pointer to the buckets for the current group.
2739
+ data: Bucket<T>,
2740
+
2741
+ // Pointer to the next group of control bytes,
2742
+ // Must be aligned to the group size.
2743
+ next_ctrl: *const u8,
2744
+
2745
+ // Pointer one past the last control byte of this range.
2746
+ end: *const u8,
2747
+ }
2748
+
2749
+ impl<T> RawIterRange<T> {
2750
+ /// Returns a `RawIterRange` covering a subset of a table.
2751
+ ///
2752
+ /// The control byte address must be aligned to the group size.
2753
+ #[cfg_attr(feature = "inline-more", inline)]
2754
+ unsafe fn new(ctrl: *const u8, data: Bucket<T>, len: usize) -> Self {
2755
+ debug_assert_ne!(len, 0);
2756
+ debug_assert_eq!(ctrl as usize % Group::WIDTH, 0);
2757
+ let end = ctrl.add(len);
2758
+
2759
+ // Load the first group and advance ctrl to point to the next group
2760
+ let current_group = Group::load_aligned(ctrl).match_full();
2761
+ let next_ctrl = ctrl.add(Group::WIDTH);
2762
+
2763
+ Self {
2764
+ current_group: current_group.into_iter(),
2765
+ data,
2766
+ next_ctrl,
2767
+ end,
2768
+ }
2769
+ }
2770
+
2771
+ /// Splits a `RawIterRange` into two halves.
2772
+ ///
2773
+ /// Returns `None` if the remaining range is smaller than or equal to the
2774
+ /// group width.
2775
+ #[cfg_attr(feature = "inline-more", inline)]
2776
+ #[cfg(feature = "rayon")]
2777
+ pub(crate) fn split(mut self) -> (Self, Option<RawIterRange<T>>) {
2778
+ unsafe {
2779
+ if self.end <= self.next_ctrl {
2780
+ // Nothing to split if the group that we are current processing
2781
+ // is the last one.
2782
+ (self, None)
2783
+ } else {
2784
+ // len is the remaining number of elements after the group that
2785
+ // we are currently processing. It must be a multiple of the
2786
+ // group size (small tables are caught by the check above).
2787
+ let len = offset_from(self.end, self.next_ctrl);
2788
+ debug_assert_eq!(len % Group::WIDTH, 0);
2789
+
2790
+ // Split the remaining elements into two halves, but round the
2791
+ // midpoint down in case there is an odd number of groups
2792
+ // remaining. This ensures that:
2793
+ // - The tail is at least 1 group long.
2794
+ // - The split is roughly even considering we still have the
2795
+ // current group to process.
2796
+ let mid = (len / 2) & !(Group::WIDTH - 1);
2797
+
2798
+ let tail = Self::new(
2799
+ self.next_ctrl.add(mid),
2800
+ self.data.next_n(Group::WIDTH).next_n(mid),
2801
+ len - mid,
2802
+ );
2803
+ debug_assert_eq!(
2804
+ self.data.next_n(Group::WIDTH).next_n(mid).ptr,
2805
+ tail.data.ptr
2806
+ );
2807
+ debug_assert_eq!(self.end, tail.end);
2808
+ self.end = self.next_ctrl.add(mid);
2809
+ debug_assert_eq!(self.end.add(Group::WIDTH), tail.next_ctrl);
2810
+ (self, Some(tail))
2811
+ }
2812
+ }
2813
+ }
2814
+
2815
+ /// # Safety
2816
+ /// If DO_CHECK_PTR_RANGE is false, caller must ensure that we never try to iterate
2817
+ /// after yielding all elements.
2818
+ #[cfg_attr(feature = "inline-more", inline)]
2819
+ unsafe fn next_impl<const DO_CHECK_PTR_RANGE: bool>(&mut self) -> Option<Bucket<T>> {
2820
+ loop {
2821
+ if let Some(index) = self.current_group.next() {
2822
+ return Some(self.data.next_n(index));
2823
+ }
2824
+
2825
+ if DO_CHECK_PTR_RANGE && self.next_ctrl >= self.end {
2826
+ return None;
2827
+ }
2828
+
2829
+ // We might read past self.end up to the next group boundary,
2830
+ // but this is fine because it only occurs on tables smaller
2831
+ // than the group size where the trailing control bytes are all
2832
+ // EMPTY. On larger tables self.end is guaranteed to be aligned
2833
+ // to the group size (since tables are power-of-two sized).
2834
+ self.current_group = Group::load_aligned(self.next_ctrl).match_full().into_iter();
2835
+ self.data = self.data.next_n(Group::WIDTH);
2836
+ self.next_ctrl = self.next_ctrl.add(Group::WIDTH);
2837
+ }
2838
+ }
2839
+ }
2840
+
2841
+ // We make raw iterators unconditionally Send and Sync, and let the PhantomData
2842
+ // in the actual iterator implementations determine the real Send/Sync bounds.
2843
+ unsafe impl<T> Send for RawIterRange<T> {}
2844
+ unsafe impl<T> Sync for RawIterRange<T> {}
2845
+
2846
+ impl<T> Clone for RawIterRange<T> {
2847
+ #[cfg_attr(feature = "inline-more", inline)]
2848
+ fn clone(&self) -> Self {
2849
+ Self {
2850
+ data: self.data.clone(),
2851
+ next_ctrl: self.next_ctrl,
2852
+ current_group: self.current_group,
2853
+ end: self.end,
2854
+ }
2855
+ }
2856
+ }
2857
+
2858
+ impl<T> Iterator for RawIterRange<T> {
2859
+ type Item = Bucket<T>;
2860
+
2861
+ #[cfg_attr(feature = "inline-more", inline)]
2862
+ fn next(&mut self) -> Option<Bucket<T>> {
2863
+ unsafe {
2864
+ // SAFETY: We set checker flag to true.
2865
+ self.next_impl::<true>()
2866
+ }
2867
+ }
2868
+
2869
+ #[inline]
2870
+ fn size_hint(&self) -> (usize, Option<usize>) {
2871
+ // We don't have an item count, so just guess based on the range size.
2872
+ let remaining_buckets = if self.end > self.next_ctrl {
2873
+ unsafe { offset_from(self.end, self.next_ctrl) }
2874
+ } else {
2875
+ 0
2876
+ };
2877
+
2878
+ // Add a group width to include the group we are currently processing.
2879
+ (0, Some(Group::WIDTH + remaining_buckets))
2880
+ }
2881
+ }
2882
+
2883
+ impl<T> FusedIterator for RawIterRange<T> {}
2884
+
2885
+ /// Iterator which returns a raw pointer to every full bucket in the table.
2886
+ ///
2887
+ /// For maximum flexibility this iterator is not bound by a lifetime, but you
2888
+ /// must observe several rules when using it:
2889
+ /// - You must not free the hash table while iterating (including via growing/shrinking).
2890
+ /// - It is fine to erase a bucket that has been yielded by the iterator.
2891
+ /// - Erasing a bucket that has not yet been yielded by the iterator may still
2892
+ /// result in the iterator yielding that bucket (unless `reflect_remove` is called).
2893
+ /// - It is unspecified whether an element inserted after the iterator was
2894
+ /// created will be yielded by that iterator (unless `reflect_insert` is called).
2895
+ /// - The order in which the iterator yields bucket is unspecified and may
2896
+ /// change in the future.
2897
+ pub struct RawIter<T> {
2898
+ pub(crate) iter: RawIterRange<T>,
2899
+ items: usize,
2900
+ }
2901
+
2902
+ impl<T> RawIter<T> {
2903
+ const DATA_NEEDS_DROP: bool = mem::needs_drop::<T>();
2904
+
2905
+ /// Refresh the iterator so that it reflects a removal from the given bucket.
2906
+ ///
2907
+ /// For the iterator to remain valid, this method must be called once
2908
+ /// for each removed bucket before `next` is called again.
2909
+ ///
2910
+ /// This method should be called _before_ the removal is made. It is not necessary to call this
2911
+ /// method if you are removing an item that this iterator yielded in the past.
2912
+ #[cfg(feature = "raw")]
2913
+ pub unsafe fn reflect_remove(&mut self, b: &Bucket<T>) {
2914
+ self.reflect_toggle_full(b, false);
2915
+ }
2916
+
2917
+ /// Refresh the iterator so that it reflects an insertion into the given bucket.
2918
+ ///
2919
+ /// For the iterator to remain valid, this method must be called once
2920
+ /// for each insert before `next` is called again.
2921
+ ///
2922
+ /// This method does not guarantee that an insertion of a bucket with a greater
2923
+ /// index than the last one yielded will be reflected in the iterator.
2924
+ ///
2925
+ /// This method should be called _after_ the given insert is made.
2926
+ #[cfg(feature = "raw")]
2927
+ pub unsafe fn reflect_insert(&mut self, b: &Bucket<T>) {
2928
+ self.reflect_toggle_full(b, true);
2929
+ }
2930
+
2931
+ /// Refresh the iterator so that it reflects a change to the state of the given bucket.
2932
+ #[cfg(feature = "raw")]
2933
+ unsafe fn reflect_toggle_full(&mut self, b: &Bucket<T>, is_insert: bool) {
2934
+ if b.as_ptr() > self.iter.data.as_ptr() {
2935
+ // The iterator has already passed the bucket's group.
2936
+ // So the toggle isn't relevant to this iterator.
2937
+ return;
2938
+ }
2939
+
2940
+ if self.iter.next_ctrl < self.iter.end
2941
+ && b.as_ptr() <= self.iter.data.next_n(Group::WIDTH).as_ptr()
2942
+ {
2943
+ // The iterator has not yet reached the bucket's group.
2944
+ // We don't need to reload anything, but we do need to adjust the item count.
2945
+
2946
+ if cfg!(debug_assertions) {
2947
+ // Double-check that the user isn't lying to us by checking the bucket state.
2948
+ // To do that, we need to find its control byte. We know that self.iter.data is
2949
+ // at self.iter.next_ctrl - Group::WIDTH, so we work from there:
2950
+ let offset = offset_from(self.iter.data.as_ptr(), b.as_ptr());
2951
+ let ctrl = self.iter.next_ctrl.sub(Group::WIDTH).add(offset);
2952
+ // This method should be called _before_ a removal, or _after_ an insert,
2953
+ // so in both cases the ctrl byte should indicate that the bucket is full.
2954
+ assert!(is_full(*ctrl));
2955
+ }
2956
+
2957
+ if is_insert {
2958
+ self.items += 1;
2959
+ } else {
2960
+ self.items -= 1;
2961
+ }
2962
+
2963
+ return;
2964
+ }
2965
+
2966
+ // The iterator is at the bucket group that the toggled bucket is in.
2967
+ // We need to do two things:
2968
+ //
2969
+ // - Determine if the iterator already yielded the toggled bucket.
2970
+ // If it did, we're done.
2971
+ // - Otherwise, update the iterator cached group so that it won't
2972
+ // yield a to-be-removed bucket, or _will_ yield a to-be-added bucket.
2973
+ // We'll also need to update the item count accordingly.
2974
+ if let Some(index) = self.iter.current_group.0.lowest_set_bit() {
2975
+ let next_bucket = self.iter.data.next_n(index);
2976
+ if b.as_ptr() > next_bucket.as_ptr() {
2977
+ // The toggled bucket is "before" the bucket the iterator would yield next. We
2978
+ // therefore don't need to do anything --- the iterator has already passed the
2979
+ // bucket in question.
2980
+ //
2981
+ // The item count must already be correct, since a removal or insert "prior" to
2982
+ // the iterator's position wouldn't affect the item count.
2983
+ } else {
2984
+ // The removed bucket is an upcoming bucket. We need to make sure it does _not_
2985
+ // get yielded, and also that it's no longer included in the item count.
2986
+ //
2987
+ // NOTE: We can't just reload the group here, both since that might reflect
2988
+ // inserts we've already passed, and because that might inadvertently unset the
2989
+ // bits for _other_ removals. If we do that, we'd have to also decrement the
2990
+ // item count for those other bits that we unset. But the presumably subsequent
2991
+ // call to reflect for those buckets might _also_ decrement the item count.
2992
+ // Instead, we _just_ flip the bit for the particular bucket the caller asked
2993
+ // us to reflect.
2994
+ let our_bit = offset_from(self.iter.data.as_ptr(), b.as_ptr());
2995
+ let was_full = self.iter.current_group.flip(our_bit);
2996
+ debug_assert_ne!(was_full, is_insert);
2997
+
2998
+ if is_insert {
2999
+ self.items += 1;
3000
+ } else {
3001
+ self.items -= 1;
3002
+ }
3003
+
3004
+ if cfg!(debug_assertions) {
3005
+ if b.as_ptr() == next_bucket.as_ptr() {
3006
+ // The removed bucket should no longer be next
3007
+ debug_assert_ne!(self.iter.current_group.0.lowest_set_bit(), Some(index));
3008
+ } else {
3009
+ // We should not have changed what bucket comes next.
3010
+ debug_assert_eq!(self.iter.current_group.0.lowest_set_bit(), Some(index));
3011
+ }
3012
+ }
3013
+ }
3014
+ } else {
3015
+ // We must have already iterated past the removed item.
3016
+ }
3017
+ }
3018
+
3019
+ unsafe fn drop_elements(&mut self) {
3020
+ if Self::DATA_NEEDS_DROP && self.len() != 0 {
3021
+ for item in self {
3022
+ item.drop();
3023
+ }
3024
+ }
3025
+ }
3026
+ }
3027
+
3028
+ impl<T> Clone for RawIter<T> {
3029
+ #[cfg_attr(feature = "inline-more", inline)]
3030
+ fn clone(&self) -> Self {
3031
+ Self {
3032
+ iter: self.iter.clone(),
3033
+ items: self.items,
3034
+ }
3035
+ }
3036
+ }
3037
+
3038
+ impl<T> Iterator for RawIter<T> {
3039
+ type Item = Bucket<T>;
3040
+
3041
+ #[cfg_attr(feature = "inline-more", inline)]
3042
+ fn next(&mut self) -> Option<Bucket<T>> {
3043
+ // Inner iterator iterates over buckets
3044
+ // so it can do unnecessary work if we already yielded all items.
3045
+ if self.items == 0 {
3046
+ return None;
3047
+ }
3048
+
3049
+ let nxt = unsafe {
3050
+ // SAFETY: We check number of items to yield using `items` field.
3051
+ self.iter.next_impl::<false>()
3052
+ };
3053
+
3054
+ debug_assert!(nxt.is_some());
3055
+ self.items -= 1;
3056
+
3057
+ nxt
3058
+ }
3059
+
3060
+ #[inline]
3061
+ fn size_hint(&self) -> (usize, Option<usize>) {
3062
+ (self.items, Some(self.items))
3063
+ }
3064
+ }
3065
+
3066
+ impl<T> ExactSizeIterator for RawIter<T> {}
3067
+ impl<T> FusedIterator for RawIter<T> {}
3068
+
3069
+ /// Iterator which consumes a table and returns elements.
3070
+ pub struct RawIntoIter<T, A: Allocator + Clone = Global> {
3071
+ iter: RawIter<T>,
3072
+ allocation: Option<(NonNull<u8>, Layout)>,
3073
+ marker: PhantomData<T>,
3074
+ alloc: A,
3075
+ }
3076
+
3077
+ impl<T, A: Allocator + Clone> RawIntoIter<T, A> {
3078
+ #[cfg_attr(feature = "inline-more", inline)]
3079
+ pub fn iter(&self) -> RawIter<T> {
3080
+ self.iter.clone()
3081
+ }
3082
+ }
3083
+
3084
+ unsafe impl<T, A: Allocator + Clone> Send for RawIntoIter<T, A>
3085
+ where
3086
+ T: Send,
3087
+ A: Send,
3088
+ {
3089
+ }
3090
+ unsafe impl<T, A: Allocator + Clone> Sync for RawIntoIter<T, A>
3091
+ where
3092
+ T: Sync,
3093
+ A: Sync,
3094
+ {
3095
+ }
3096
+
3097
+ #[cfg(feature = "nightly")]
3098
+ unsafe impl<#[may_dangle] T, A: Allocator + Clone> Drop for RawIntoIter<T, A> {
3099
+ #[cfg_attr(feature = "inline-more", inline)]
3100
+ fn drop(&mut self) {
3101
+ unsafe {
3102
+ // Drop all remaining elements
3103
+ self.iter.drop_elements();
3104
+
3105
+ // Free the table
3106
+ if let Some((ptr, layout)) = self.allocation {
3107
+ self.alloc.deallocate(ptr, layout);
3108
+ }
3109
+ }
3110
+ }
3111
+ }
3112
+ #[cfg(not(feature = "nightly"))]
3113
+ impl<T, A: Allocator + Clone> Drop for RawIntoIter<T, A> {
3114
+ #[cfg_attr(feature = "inline-more", inline)]
3115
+ fn drop(&mut self) {
3116
+ unsafe {
3117
+ // Drop all remaining elements
3118
+ self.iter.drop_elements();
3119
+
3120
+ // Free the table
3121
+ if let Some((ptr, layout)) = self.allocation {
3122
+ self.alloc.deallocate(ptr, layout);
3123
+ }
3124
+ }
3125
+ }
3126
+ }
3127
+
3128
+ impl<T, A: Allocator + Clone> Iterator for RawIntoIter<T, A> {
3129
+ type Item = T;
3130
+
3131
+ #[cfg_attr(feature = "inline-more", inline)]
3132
+ fn next(&mut self) -> Option<T> {
3133
+ unsafe { Some(self.iter.next()?.read()) }
3134
+ }
3135
+
3136
+ #[inline]
3137
+ fn size_hint(&self) -> (usize, Option<usize>) {
3138
+ self.iter.size_hint()
3139
+ }
3140
+ }
3141
+
3142
+ impl<T, A: Allocator + Clone> ExactSizeIterator for RawIntoIter<T, A> {}
3143
+ impl<T, A: Allocator + Clone> FusedIterator for RawIntoIter<T, A> {}
3144
+
3145
+ /// Iterator which consumes elements without freeing the table storage.
3146
+ pub struct RawDrain<'a, T, A: Allocator + Clone = Global> {
3147
+ iter: RawIter<T>,
3148
+
3149
+ // The table is moved into the iterator for the duration of the drain. This
3150
+ // ensures that an empty table is left if the drain iterator is leaked
3151
+ // without dropping.
3152
+ table: ManuallyDrop<RawTable<T, A>>,
3153
+ orig_table: NonNull<RawTable<T, A>>,
3154
+
3155
+ // We don't use a &'a mut RawTable<T> because we want RawDrain to be
3156
+ // covariant over T.
3157
+ marker: PhantomData<&'a RawTable<T, A>>,
3158
+ }
3159
+
3160
+ impl<T, A: Allocator + Clone> RawDrain<'_, T, A> {
3161
+ #[cfg_attr(feature = "inline-more", inline)]
3162
+ pub fn iter(&self) -> RawIter<T> {
3163
+ self.iter.clone()
3164
+ }
3165
+ }
3166
+
3167
+ unsafe impl<T, A: Allocator + Copy> Send for RawDrain<'_, T, A>
3168
+ where
3169
+ T: Send,
3170
+ A: Send,
3171
+ {
3172
+ }
3173
+ unsafe impl<T, A: Allocator + Copy> Sync for RawDrain<'_, T, A>
3174
+ where
3175
+ T: Sync,
3176
+ A: Sync,
3177
+ {
3178
+ }
3179
+
3180
+ impl<T, A: Allocator + Clone> Drop for RawDrain<'_, T, A> {
3181
+ #[cfg_attr(feature = "inline-more", inline)]
3182
+ fn drop(&mut self) {
3183
+ unsafe {
3184
+ // Drop all remaining elements. Note that this may panic.
3185
+ self.iter.drop_elements();
3186
+
3187
+ // Reset the contents of the table now that all elements have been
3188
+ // dropped.
3189
+ self.table.clear_no_drop();
3190
+
3191
+ // Move the now empty table back to its original location.
3192
+ self.orig_table
3193
+ .as_ptr()
3194
+ .copy_from_nonoverlapping(&*self.table, 1);
3195
+ }
3196
+ }
3197
+ }
3198
+
3199
+ impl<T, A: Allocator + Clone> Iterator for RawDrain<'_, T, A> {
3200
+ type Item = T;
3201
+
3202
+ #[cfg_attr(feature = "inline-more", inline)]
3203
+ fn next(&mut self) -> Option<T> {
3204
+ unsafe {
3205
+ let item = self.iter.next()?;
3206
+ Some(item.read())
3207
+ }
3208
+ }
3209
+
3210
+ #[inline]
3211
+ fn size_hint(&self) -> (usize, Option<usize>) {
3212
+ self.iter.size_hint()
3213
+ }
3214
+ }
3215
+
3216
+ impl<T, A: Allocator + Clone> ExactSizeIterator for RawDrain<'_, T, A> {}
3217
+ impl<T, A: Allocator + Clone> FusedIterator for RawDrain<'_, T, A> {}
3218
+
3219
+ /// Iterator over occupied buckets that could match a given hash.
3220
+ ///
3221
+ /// `RawTable` only stores 7 bits of the hash value, so this iterator may return
3222
+ /// items that have a hash value different than the one provided. You should
3223
+ /// always validate the returned values before using them.
3224
+ ///
3225
+ /// For maximum flexibility this iterator is not bound by a lifetime, but you
3226
+ /// must observe several rules when using it:
3227
+ /// - You must not free the hash table while iterating (including via growing/shrinking).
3228
+ /// - It is fine to erase a bucket that has been yielded by the iterator.
3229
+ /// - Erasing a bucket that has not yet been yielded by the iterator may still
3230
+ /// result in the iterator yielding that bucket.
3231
+ /// - It is unspecified whether an element inserted after the iterator was
3232
+ /// created will be yielded by that iterator.
3233
+ /// - The order in which the iterator yields buckets is unspecified and may
3234
+ /// change in the future.
3235
+ pub struct RawIterHash<T> {
3236
+ inner: RawIterHashInner,
3237
+ _marker: PhantomData<T>,
3238
+ }
3239
+
3240
+ struct RawIterHashInner {
3241
+ // See `RawTableInner`'s corresponding fields for details.
3242
+ // We can't store a `*const RawTableInner` as it would get
3243
+ // invalidated by the user calling `&mut` methods on `RawTable`.
3244
+ bucket_mask: usize,
3245
+ ctrl: NonNull<u8>,
3246
+
3247
+ // The top 7 bits of the hash.
3248
+ h2_hash: u8,
3249
+
3250
+ // The sequence of groups to probe in the search.
3251
+ probe_seq: ProbeSeq,
3252
+
3253
+ group: Group,
3254
+
3255
+ // The elements within the group with a matching h2-hash.
3256
+ bitmask: BitMaskIter,
3257
+ }
3258
+
3259
+ impl<T> RawIterHash<T> {
3260
+ #[cfg_attr(feature = "inline-more", inline)]
3261
+ #[cfg(feature = "raw")]
3262
+ unsafe fn new<A: Allocator + Clone>(table: &RawTable<T, A>, hash: u64) -> Self {
3263
+ RawIterHash {
3264
+ inner: RawIterHashInner::new(&table.table, hash),
3265
+ _marker: PhantomData,
3266
+ }
3267
+ }
3268
+ }
3269
+ impl RawIterHashInner {
3270
+ #[cfg_attr(feature = "inline-more", inline)]
3271
+ #[cfg(feature = "raw")]
3272
+ unsafe fn new<A: Allocator + Clone>(table: &RawTableInner<A>, hash: u64) -> Self {
3273
+ let h2_hash = h2(hash);
3274
+ let probe_seq = table.probe_seq(hash);
3275
+ let group = Group::load(table.ctrl(probe_seq.pos));
3276
+ let bitmask = group.match_byte(h2_hash).into_iter();
3277
+
3278
+ RawIterHashInner {
3279
+ bucket_mask: table.bucket_mask,
3280
+ ctrl: table.ctrl,
3281
+ h2_hash,
3282
+ probe_seq,
3283
+ group,
3284
+ bitmask,
3285
+ }
3286
+ }
3287
+ }
3288
+
3289
+ impl<T> Iterator for RawIterHash<T> {
3290
+ type Item = Bucket<T>;
3291
+
3292
+ fn next(&mut self) -> Option<Bucket<T>> {
3293
+ unsafe {
3294
+ match self.inner.next() {
3295
+ Some(index) => {
3296
+ // Can't use `RawTable::bucket` here as we don't have
3297
+ // an actual `RawTable` reference to use.
3298
+ debug_assert!(index <= self.inner.bucket_mask);
3299
+ let bucket = Bucket::from_base_index(self.inner.ctrl.cast(), index);
3300
+ Some(bucket)
3301
+ }
3302
+ None => None,
3303
+ }
3304
+ }
3305
+ }
3306
+ }
3307
+
3308
+ impl Iterator for RawIterHashInner {
3309
+ type Item = usize;
3310
+
3311
+ fn next(&mut self) -> Option<Self::Item> {
3312
+ unsafe {
3313
+ loop {
3314
+ if let Some(bit) = self.bitmask.next() {
3315
+ let index = (self.probe_seq.pos + bit) & self.bucket_mask;
3316
+ return Some(index);
3317
+ }
3318
+ if likely(self.group.match_empty().any_bit_set()) {
3319
+ return None;
3320
+ }
3321
+ self.probe_seq.move_next(self.bucket_mask);
3322
+
3323
+ // Can't use `RawTableInner::ctrl` here as we don't have
3324
+ // an actual `RawTableInner` reference to use.
3325
+ let index = self.probe_seq.pos;
3326
+ debug_assert!(index < self.bucket_mask + 1 + Group::WIDTH);
3327
+ let group_ctrl = self.ctrl.as_ptr().add(index);
3328
+
3329
+ self.group = Group::load(group_ctrl);
3330
+ self.bitmask = self.group.match_byte(self.h2_hash).into_iter();
3331
+ }
3332
+ }
3333
+ }
3334
+ }
3335
+
3336
+ #[cfg(test)]
3337
+ mod test_map {
3338
+ use super::*;
3339
+
3340
+ fn rehash_in_place<T>(table: &mut RawTable<T>, hasher: impl Fn(&T) -> u64) {
3341
+ unsafe {
3342
+ table.table.rehash_in_place(
3343
+ &|table, index| hasher(table.bucket::<T>(index).as_ref()),
3344
+ mem::size_of::<T>(),
3345
+ if mem::needs_drop::<T>() {
3346
+ Some(mem::transmute(ptr::drop_in_place::<T> as unsafe fn(*mut T)))
3347
+ } else {
3348
+ None
3349
+ },
3350
+ );
3351
+ }
3352
+ }
3353
+
3354
+ #[test]
3355
+ fn rehash() {
3356
+ let mut table = RawTable::new();
3357
+ let hasher = |i: &u64| *i;
3358
+ for i in 0..100 {
3359
+ table.insert(i, i, hasher);
3360
+ }
3361
+
3362
+ for i in 0..100 {
3363
+ unsafe {
3364
+ assert_eq!(table.find(i, |x| *x == i).map(|b| b.read()), Some(i));
3365
+ }
3366
+ assert!(table.find(i + 100, |x| *x == i + 100).is_none());
3367
+ }
3368
+
3369
+ rehash_in_place(&mut table, hasher);
3370
+
3371
+ for i in 0..100 {
3372
+ unsafe {
3373
+ assert_eq!(table.find(i, |x| *x == i).map(|b| b.read()), Some(i));
3374
+ }
3375
+ assert!(table.find(i + 100, |x| *x == i + 100).is_none());
3376
+ }
3377
+ }
3378
+ }