wasmtime 9.0.4 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1933) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +184 -101
  3. data/ext/Cargo.toml +6 -6
  4. data/ext/build.rs +2 -2
  5. data/ext/cargo-vendor/cranelift-bforest-0.97.1/.cargo-checksum.json +1 -0
  6. data/ext/cargo-vendor/cranelift-bforest-0.97.1/Cargo.toml +31 -0
  7. data/ext/cargo-vendor/cranelift-codegen-0.97.1/.cargo-checksum.json +1 -0
  8. data/ext/cargo-vendor/cranelift-codegen-0.97.1/Cargo.toml +158 -0
  9. data/ext/cargo-vendor/cranelift-codegen-0.97.1/benches/x64-evex-encoding.rs +52 -0
  10. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/ir/trapcode.rs +144 -0
  11. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/aarch64/abi.rs +1294 -0
  12. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/aarch64/inst/emit.rs +3684 -0
  13. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/aarch64/inst/emit_tests.rs +7895 -0
  14. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/aarch64/inst/imms.rs +1210 -0
  15. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/aarch64/inst/mod.rs +2966 -0
  16. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/aarch64/inst.isle +4037 -0
  17. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/aarch64/lower/isle.rs +816 -0
  18. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/aarch64/lower.isle +2906 -0
  19. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/aarch64/mod.rs +238 -0
  20. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/mod.rs +424 -0
  21. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/abi.rs +825 -0
  22. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst/args.rs +1812 -0
  23. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst/emit.rs +3008 -0
  24. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst/emit_tests.rs +2338 -0
  25. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst/encode.rs +262 -0
  26. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst/imms.rs +250 -0
  27. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst/mod.rs +1963 -0
  28. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst/regs.rs +223 -0
  29. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst/unwind/systemv.rs +174 -0
  30. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst/vector.rs +669 -0
  31. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst.isle +2915 -0
  32. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/inst_vector.isle +760 -0
  33. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/lower/isle.rs +553 -0
  34. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/lower.isle +1409 -0
  35. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/riscv64/mod.rs +216 -0
  36. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/s390x/abi.rs +957 -0
  37. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/s390x/inst/emit.rs +3707 -0
  38. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/s390x/inst/emit_tests.rs +13409 -0
  39. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/s390x/inst/mod.rs +3426 -0
  40. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/s390x/inst.isle +5046 -0
  41. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/s390x/lower.isle +3991 -0
  42. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/s390x/mod.rs +213 -0
  43. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/abi.rs +985 -0
  44. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/encoding/evex.rs +749 -0
  45. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/encoding/rex.rs +588 -0
  46. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/encoding/vex.rs +492 -0
  47. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/inst/args.rs +2193 -0
  48. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/inst/emit.rs +4090 -0
  49. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/inst/emit_tests.rs +5674 -0
  50. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/inst/mod.rs +2667 -0
  51. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/inst.isle +5104 -0
  52. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/lower/isle.rs +1148 -0
  53. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/lower.isle +4481 -0
  54. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/lower.rs +328 -0
  55. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isa/x64/mod.rs +251 -0
  56. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/isle_prelude.rs +862 -0
  57. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/machinst/abi.rs +2455 -0
  58. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/machinst/buffer.rs +2277 -0
  59. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/machinst/compile.rs +92 -0
  60. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/machinst/isle.rs +827 -0
  61. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/machinst/lower.rs +1388 -0
  62. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/machinst/mod.rs +549 -0
  63. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/machinst/reg.rs +537 -0
  64. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/machinst/vcode.rs +1580 -0
  65. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/prelude.isle +578 -0
  66. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/prelude_lower.isle +1012 -0
  67. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/settings.rs +600 -0
  68. data/ext/cargo-vendor/cranelift-codegen-0.97.1/src/verifier/mod.rs +1884 -0
  69. data/ext/cargo-vendor/cranelift-codegen-meta-0.97.1/.cargo-checksum.json +1 -0
  70. data/ext/cargo-vendor/cranelift-codegen-meta-0.97.1/Cargo.toml +23 -0
  71. data/ext/cargo-vendor/cranelift-codegen-meta-0.97.1/src/isa/x86.rs +444 -0
  72. data/ext/cargo-vendor/cranelift-codegen-meta-0.97.1/src/shared/settings.rs +348 -0
  73. data/ext/cargo-vendor/cranelift-codegen-shared-0.97.1/.cargo-checksum.json +1 -0
  74. data/ext/cargo-vendor/cranelift-codegen-shared-0.97.1/Cargo.toml +22 -0
  75. data/ext/cargo-vendor/cranelift-control-0.97.1/.cargo-checksum.json +1 -0
  76. data/ext/cargo-vendor/cranelift-control-0.97.1/Cargo.toml +30 -0
  77. data/ext/cargo-vendor/cranelift-control-0.97.1/src/chaos.rs +125 -0
  78. data/ext/cargo-vendor/cranelift-control-0.97.1/src/lib.rs +45 -0
  79. data/ext/cargo-vendor/cranelift-control-0.97.1/src/zero_sized.rs +53 -0
  80. data/ext/cargo-vendor/cranelift-entity-0.97.1/.cargo-checksum.json +1 -0
  81. data/ext/cargo-vendor/cranelift-entity-0.97.1/Cargo.toml +35 -0
  82. data/ext/cargo-vendor/cranelift-entity-0.97.1/src/list.rs +955 -0
  83. data/ext/cargo-vendor/cranelift-frontend-0.97.1/.cargo-checksum.json +1 -0
  84. data/ext/cargo-vendor/cranelift-frontend-0.97.1/Cargo.toml +53 -0
  85. data/ext/cargo-vendor/cranelift-isle-0.97.1/.cargo-checksum.json +1 -0
  86. data/ext/cargo-vendor/cranelift-isle-0.97.1/Cargo.toml +37 -0
  87. data/ext/cargo-vendor/cranelift-native-0.97.1/.cargo-checksum.json +1 -0
  88. data/ext/cargo-vendor/cranelift-native-0.97.1/Cargo.toml +38 -0
  89. data/ext/cargo-vendor/cranelift-native-0.97.1/src/lib.rs +215 -0
  90. data/ext/cargo-vendor/cranelift-wasm-0.97.1/.cargo-checksum.json +1 -0
  91. data/ext/cargo-vendor/cranelift-wasm-0.97.1/Cargo.toml +85 -0
  92. data/ext/cargo-vendor/cranelift-wasm-0.97.1/src/code_translator.rs +3538 -0
  93. data/ext/cargo-vendor/cranelift-wasm-0.97.1/src/environ/dummy.rs +924 -0
  94. data/ext/cargo-vendor/cranelift-wasm-0.97.1/src/environ/spec.rs +834 -0
  95. data/ext/cargo-vendor/cranelift-wasm-0.97.1/src/func_translator.rs +440 -0
  96. data/ext/cargo-vendor/cranelift-wasm-0.97.1/src/sections_translator.rs +417 -0
  97. data/ext/cargo-vendor/cranelift-wasm-0.97.1/src/translation_utils.rs +99 -0
  98. data/ext/cargo-vendor/encoding_rs-0.8.32/.cargo-checksum.json +1 -0
  99. data/ext/cargo-vendor/encoding_rs-0.8.32/CONTRIBUTING.md +48 -0
  100. data/ext/cargo-vendor/encoding_rs-0.8.32/COPYRIGHT +17 -0
  101. data/ext/cargo-vendor/encoding_rs-0.8.32/Cargo.toml +84 -0
  102. data/ext/cargo-vendor/encoding_rs-0.8.32/Ideas.md +106 -0
  103. data/ext/cargo-vendor/encoding_rs-0.8.32/LICENSE-APACHE +202 -0
  104. data/ext/cargo-vendor/encoding_rs-0.8.32/LICENSE-MIT +25 -0
  105. data/ext/cargo-vendor/encoding_rs-0.8.32/LICENSE-WHATWG +26 -0
  106. data/ext/cargo-vendor/encoding_rs-0.8.32/README.md +827 -0
  107. data/ext/cargo-vendor/encoding_rs-0.8.32/ci/miri.sh +14 -0
  108. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/Big5.txt +16 -0
  109. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/EUC-JP.txt +12 -0
  110. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/EUC-KR.txt +10 -0
  111. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/GBK.txt +16 -0
  112. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/IBM866.txt +8 -0
  113. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-2022-JP.txt +10 -0
  114. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-10.txt +8 -0
  115. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-13.txt +8 -0
  116. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-14.txt +8 -0
  117. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-15.txt +7 -0
  118. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-16.txt +8 -0
  119. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-2.txt +6 -0
  120. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-3.txt +6 -0
  121. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-4.txt +6 -0
  122. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-5.txt +6 -0
  123. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-6.txt +7 -0
  124. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-7.txt +11 -0
  125. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-8-I.txt +9 -0
  126. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/ISO-8859-8.txt +9 -0
  127. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/KOI8-R.txt +6 -0
  128. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/KOI8-U.txt +6 -0
  129. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/Shift_JIS.txt +8 -0
  130. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/UTF-16BE.txt +8 -0
  131. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/UTF-16LE.txt +8 -0
  132. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/UTF-8.txt +5 -0
  133. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/gb18030.txt +9 -0
  134. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/macintosh.txt +7 -0
  135. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/replacement.txt +10 -0
  136. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-1250.txt +6 -0
  137. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-1251.txt +6 -0
  138. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-1252.txt +7 -0
  139. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-1253.txt +8 -0
  140. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-1254.txt +7 -0
  141. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-1255.txt +8 -0
  142. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-1256.txt +6 -0
  143. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-1257.txt +7 -0
  144. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-1258.txt +11 -0
  145. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/windows-874.txt +7 -0
  146. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/x-mac-cyrillic.txt +6 -0
  147. data/ext/cargo-vendor/encoding_rs-0.8.32/doc/x-user-defined.txt +6 -0
  148. data/ext/cargo-vendor/encoding_rs-0.8.32/generate-encoding-data.py +2008 -0
  149. data/ext/cargo-vendor/encoding_rs-0.8.32/rustfmt.toml +1 -0
  150. data/ext/cargo-vendor/encoding_rs-0.8.32/src/ascii.rs +1546 -0
  151. data/ext/cargo-vendor/encoding_rs-0.8.32/src/big5.rs +427 -0
  152. data/ext/cargo-vendor/encoding_rs-0.8.32/src/data.rs +114378 -0
  153. data/ext/cargo-vendor/encoding_rs-0.8.32/src/euc_jp.rs +469 -0
  154. data/ext/cargo-vendor/encoding_rs-0.8.32/src/euc_kr.rs +442 -0
  155. data/ext/cargo-vendor/encoding_rs-0.8.32/src/gb18030.rs +767 -0
  156. data/ext/cargo-vendor/encoding_rs-0.8.32/src/handles.rs +1969 -0
  157. data/ext/cargo-vendor/encoding_rs-0.8.32/src/iso_2022_jp.rs +1068 -0
  158. data/ext/cargo-vendor/encoding_rs-0.8.32/src/lib.rs +6133 -0
  159. data/ext/cargo-vendor/encoding_rs-0.8.32/src/macros.rs +1622 -0
  160. data/ext/cargo-vendor/encoding_rs-0.8.32/src/mem.rs +3354 -0
  161. data/ext/cargo-vendor/encoding_rs-0.8.32/src/replacement.rs +104 -0
  162. data/ext/cargo-vendor/encoding_rs-0.8.32/src/shift_jis.rs +426 -0
  163. data/ext/cargo-vendor/encoding_rs-0.8.32/src/simd_funcs.rs +453 -0
  164. data/ext/cargo-vendor/encoding_rs-0.8.32/src/single_byte.rs +714 -0
  165. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/big5_in.txt +19787 -0
  166. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/big5_in_ref.txt +19787 -0
  167. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/big5_out.txt +14601 -0
  168. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/big5_out_ref.txt +14601 -0
  169. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/euc_kr_in.txt +23945 -0
  170. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/euc_kr_in_ref.txt +23945 -0
  171. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/euc_kr_out.txt +17053 -0
  172. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/euc_kr_out_ref.txt +17053 -0
  173. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/gb18030_in.txt +23945 -0
  174. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/gb18030_in_ref.txt +23945 -0
  175. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/gb18030_out.txt +23944 -0
  176. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/gb18030_out_ref.txt +23944 -0
  177. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/iso_2022_jp_in.txt +8841 -0
  178. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/iso_2022_jp_in_ref.txt +8841 -0
  179. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/iso_2022_jp_out.txt +7404 -0
  180. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/iso_2022_jp_out_ref.txt +7404 -0
  181. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/jis0208_in.txt +8841 -0
  182. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/jis0208_in_ref.txt +8841 -0
  183. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/jis0208_out.txt +7341 -0
  184. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/jis0208_out_ref.txt +7341 -0
  185. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/jis0212_in.txt +8841 -0
  186. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/jis0212_in_ref.txt +8841 -0
  187. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/shift_jis_in.txt +11285 -0
  188. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/shift_jis_in_ref.txt +11285 -0
  189. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/shift_jis_out.txt +7355 -0
  190. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_data/shift_jis_out_ref.txt +7355 -0
  191. data/ext/cargo-vendor/encoding_rs-0.8.32/src/test_labels_names.rs +242 -0
  192. data/ext/cargo-vendor/encoding_rs-0.8.32/src/testing.rs +262 -0
  193. data/ext/cargo-vendor/encoding_rs-0.8.32/src/utf_16.rs +472 -0
  194. data/ext/cargo-vendor/encoding_rs-0.8.32/src/utf_8.rs +1629 -0
  195. data/ext/cargo-vendor/encoding_rs-0.8.32/src/variant.rs +400 -0
  196. data/ext/cargo-vendor/encoding_rs-0.8.32/src/x_user_defined.rs +249 -0
  197. data/ext/cargo-vendor/equivalent-1.0.1/.cargo-checksum.json +1 -0
  198. data/ext/cargo-vendor/equivalent-1.0.1/Cargo.toml +27 -0
  199. data/ext/cargo-vendor/equivalent-1.0.1/LICENSE-APACHE +201 -0
  200. data/ext/cargo-vendor/equivalent-1.0.1/LICENSE-MIT +25 -0
  201. data/ext/cargo-vendor/equivalent-1.0.1/README.md +25 -0
  202. data/ext/cargo-vendor/equivalent-1.0.1/src/lib.rs +113 -0
  203. data/ext/cargo-vendor/file-per-thread-logger-0.2.0/.cargo-checksum.json +1 -0
  204. data/ext/cargo-vendor/file-per-thread-logger-0.2.0/Cargo.toml +36 -0
  205. data/ext/cargo-vendor/file-per-thread-logger-0.2.0/run-tests.sh +12 -0
  206. data/ext/cargo-vendor/file-per-thread-logger-0.2.0/src/lib.rs +200 -0
  207. data/ext/cargo-vendor/file-per-thread-logger-0.2.0/tests/test.rs +323 -0
  208. data/ext/cargo-vendor/hashbrown-0.14.0/.cargo-checksum.json +1 -0
  209. data/ext/cargo-vendor/hashbrown-0.14.0/CHANGELOG.md +475 -0
  210. data/ext/cargo-vendor/hashbrown-0.14.0/Cargo.toml +131 -0
  211. data/ext/cargo-vendor/hashbrown-0.14.0/LICENSE-APACHE +201 -0
  212. data/ext/cargo-vendor/hashbrown-0.14.0/LICENSE-MIT +25 -0
  213. data/ext/cargo-vendor/hashbrown-0.14.0/README.md +125 -0
  214. data/ext/cargo-vendor/hashbrown-0.14.0/benches/bench.rs +331 -0
  215. data/ext/cargo-vendor/hashbrown-0.14.0/benches/insert_unique_unchecked.rs +32 -0
  216. data/ext/cargo-vendor/hashbrown-0.14.0/clippy.toml +1 -0
  217. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/mod.rs +6 -0
  218. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/rayon/helpers.rs +27 -0
  219. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/rayon/map.rs +731 -0
  220. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/rayon/mod.rs +4 -0
  221. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/rayon/raw.rs +231 -0
  222. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/rayon/set.rs +659 -0
  223. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/rkyv/hash_map.rs +125 -0
  224. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/rkyv/hash_set.rs +123 -0
  225. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/rkyv/mod.rs +2 -0
  226. data/ext/cargo-vendor/hashbrown-0.14.0/src/external_trait_impls/serde.rs +201 -0
  227. data/ext/cargo-vendor/hashbrown-0.14.0/src/lib.rs +165 -0
  228. data/ext/cargo-vendor/hashbrown-0.14.0/src/macros.rs +70 -0
  229. data/ext/cargo-vendor/hashbrown-0.14.0/src/map.rs +8506 -0
  230. data/ext/cargo-vendor/hashbrown-0.14.0/src/raw/alloc.rs +86 -0
  231. data/ext/cargo-vendor/hashbrown-0.14.0/src/raw/bitmask.rs +133 -0
  232. data/ext/cargo-vendor/hashbrown-0.14.0/src/raw/generic.rs +157 -0
  233. data/ext/cargo-vendor/hashbrown-0.14.0/src/raw/mod.rs +3378 -0
  234. data/ext/cargo-vendor/hashbrown-0.14.0/src/raw/neon.rs +124 -0
  235. data/ext/cargo-vendor/hashbrown-0.14.0/src/raw/sse2.rs +149 -0
  236. data/ext/cargo-vendor/hashbrown-0.14.0/src/rustc_entry.rs +630 -0
  237. data/ext/cargo-vendor/hashbrown-0.14.0/src/scopeguard.rs +72 -0
  238. data/ext/cargo-vendor/hashbrown-0.14.0/src/set.rs +2903 -0
  239. data/ext/cargo-vendor/hashbrown-0.14.0/tests/equivalent_trait.rs +53 -0
  240. data/ext/cargo-vendor/hashbrown-0.14.0/tests/hasher.rs +65 -0
  241. data/ext/cargo-vendor/hashbrown-0.14.0/tests/raw.rs +11 -0
  242. data/ext/cargo-vendor/hashbrown-0.14.0/tests/rayon.rs +535 -0
  243. data/ext/cargo-vendor/hashbrown-0.14.0/tests/serde.rs +65 -0
  244. data/ext/cargo-vendor/hashbrown-0.14.0/tests/set.rs +34 -0
  245. data/ext/cargo-vendor/indexmap-2.0.0/.cargo-checksum.json +1 -0
  246. data/ext/cargo-vendor/indexmap-2.0.0/Cargo.toml +112 -0
  247. data/ext/cargo-vendor/indexmap-2.0.0/LICENSE-APACHE +201 -0
  248. data/ext/cargo-vendor/indexmap-2.0.0/LICENSE-MIT +25 -0
  249. data/ext/cargo-vendor/indexmap-2.0.0/README.md +55 -0
  250. data/ext/cargo-vendor/indexmap-2.0.0/RELEASES.md +424 -0
  251. data/ext/cargo-vendor/indexmap-2.0.0/benches/bench.rs +763 -0
  252. data/ext/cargo-vendor/indexmap-2.0.0/benches/faststring.rs +185 -0
  253. data/ext/cargo-vendor/indexmap-2.0.0/src/arbitrary.rs +77 -0
  254. data/ext/cargo-vendor/indexmap-2.0.0/src/lib.rs +278 -0
  255. data/ext/cargo-vendor/indexmap-2.0.0/src/macros.rs +178 -0
  256. data/ext/cargo-vendor/indexmap-2.0.0/src/map/core/raw.rs +217 -0
  257. data/ext/cargo-vendor/indexmap-2.0.0/src/map/core.rs +742 -0
  258. data/ext/cargo-vendor/indexmap-2.0.0/src/map/iter.rs +541 -0
  259. data/ext/cargo-vendor/indexmap-2.0.0/src/map/serde_seq.rs +138 -0
  260. data/ext/cargo-vendor/indexmap-2.0.0/src/map/slice.rs +471 -0
  261. data/ext/cargo-vendor/indexmap-2.0.0/src/map/tests.rs +449 -0
  262. data/ext/cargo-vendor/indexmap-2.0.0/src/map.rs +1223 -0
  263. data/ext/cargo-vendor/indexmap-2.0.0/src/mutable_keys.rs +91 -0
  264. data/ext/cargo-vendor/indexmap-2.0.0/src/rayon/map.rs +679 -0
  265. data/ext/cargo-vendor/indexmap-2.0.0/src/rayon/mod.rs +27 -0
  266. data/ext/cargo-vendor/indexmap-2.0.0/src/rayon/set.rs +774 -0
  267. data/ext/cargo-vendor/indexmap-2.0.0/src/rustc.rs +158 -0
  268. data/ext/cargo-vendor/indexmap-2.0.0/src/serde.rs +151 -0
  269. data/ext/cargo-vendor/indexmap-2.0.0/src/set/iter.rs +543 -0
  270. data/ext/cargo-vendor/indexmap-2.0.0/src/set/slice.rs +278 -0
  271. data/ext/cargo-vendor/indexmap-2.0.0/src/set/tests.rs +545 -0
  272. data/ext/cargo-vendor/indexmap-2.0.0/src/set.rs +1011 -0
  273. data/ext/cargo-vendor/indexmap-2.0.0/src/util.rs +53 -0
  274. data/ext/cargo-vendor/indexmap-2.0.0/tests/equivalent_trait.rs +53 -0
  275. data/ext/cargo-vendor/indexmap-2.0.0/tests/macros_full_path.rs +19 -0
  276. data/ext/cargo-vendor/indexmap-2.0.0/tests/quick.rs +579 -0
  277. data/ext/cargo-vendor/indexmap-2.0.0/tests/tests.rs +28 -0
  278. data/ext/cargo-vendor/regalloc2-0.9.2/.cargo-checksum.json +1 -0
  279. data/ext/cargo-vendor/regalloc2-0.9.2/Cargo.toml +72 -0
  280. data/ext/cargo-vendor/regalloc2-0.9.2/deny.toml +28 -0
  281. data/ext/cargo-vendor/regalloc2-0.9.2/src/checker.rs +1089 -0
  282. data/ext/cargo-vendor/regalloc2-0.9.2/src/fuzzing/func.rs +702 -0
  283. data/ext/cargo-vendor/regalloc2-0.9.2/src/index.rs +268 -0
  284. data/ext/cargo-vendor/regalloc2-0.9.2/src/ion/data_structures.rs +857 -0
  285. data/ext/cargo-vendor/regalloc2-0.9.2/src/ion/liveranges.rs +961 -0
  286. data/ext/cargo-vendor/regalloc2-0.9.2/src/ion/merge.rs +368 -0
  287. data/ext/cargo-vendor/regalloc2-0.9.2/src/ion/mod.rs +150 -0
  288. data/ext/cargo-vendor/regalloc2-0.9.2/src/ion/moves.rs +1017 -0
  289. data/ext/cargo-vendor/regalloc2-0.9.2/src/ion/process.rs +1307 -0
  290. data/ext/cargo-vendor/regalloc2-0.9.2/src/ion/requirement.rs +174 -0
  291. data/ext/cargo-vendor/regalloc2-0.9.2/src/ion/spill.rs +165 -0
  292. data/ext/cargo-vendor/regalloc2-0.9.2/src/ion/stackmap.rs +79 -0
  293. data/ext/cargo-vendor/regalloc2-0.9.2/src/lib.rs +1526 -0
  294. data/ext/cargo-vendor/regalloc2-0.9.2/src/moves.rs +439 -0
  295. data/ext/cargo-vendor/regalloc2-0.9.2/src/serialize.rs +311 -0
  296. data/ext/cargo-vendor/semver-1.0.18/.cargo-checksum.json +1 -0
  297. data/ext/cargo-vendor/semver-1.0.18/Cargo.toml +47 -0
  298. data/ext/cargo-vendor/semver-1.0.18/LICENSE-APACHE +176 -0
  299. data/ext/cargo-vendor/semver-1.0.18/LICENSE-MIT +23 -0
  300. data/ext/cargo-vendor/semver-1.0.18/README.md +84 -0
  301. data/ext/cargo-vendor/semver-1.0.18/benches/parse.rs +24 -0
  302. data/ext/cargo-vendor/semver-1.0.18/build.rs +75 -0
  303. data/ext/cargo-vendor/semver-1.0.18/src/backport.rs +23 -0
  304. data/ext/cargo-vendor/semver-1.0.18/src/display.rs +165 -0
  305. data/ext/cargo-vendor/semver-1.0.18/src/error.rs +126 -0
  306. data/ext/cargo-vendor/semver-1.0.18/src/eval.rs +181 -0
  307. data/ext/cargo-vendor/semver-1.0.18/src/identifier.rs +422 -0
  308. data/ext/cargo-vendor/semver-1.0.18/src/impls.rs +156 -0
  309. data/ext/cargo-vendor/semver-1.0.18/src/lib.rs +533 -0
  310. data/ext/cargo-vendor/semver-1.0.18/src/parse.rs +409 -0
  311. data/ext/cargo-vendor/semver-1.0.18/src/serde.rs +109 -0
  312. data/ext/cargo-vendor/semver-1.0.18/tests/node/mod.rs +43 -0
  313. data/ext/cargo-vendor/semver-1.0.18/tests/test_autotrait.rs +14 -0
  314. data/ext/cargo-vendor/semver-1.0.18/tests/test_identifier.rs +45 -0
  315. data/ext/cargo-vendor/semver-1.0.18/tests/test_version.rs +238 -0
  316. data/ext/cargo-vendor/semver-1.0.18/tests/test_version_req.rs +443 -0
  317. data/ext/cargo-vendor/semver-1.0.18/tests/util/mod.rs +39 -0
  318. data/ext/cargo-vendor/sptr-0.3.2/.cargo-checksum.json +1 -0
  319. data/ext/cargo-vendor/sptr-0.3.2/Cargo.toml +28 -0
  320. data/ext/cargo-vendor/sptr-0.3.2/README.md +73 -0
  321. data/ext/cargo-vendor/sptr-0.3.2/src/func.rs +83 -0
  322. data/ext/cargo-vendor/sptr-0.3.2/src/int.rs +364 -0
  323. data/ext/cargo-vendor/sptr-0.3.2/src/lib.rs +756 -0
  324. data/ext/cargo-vendor/wasi-cap-std-sync-10.0.0/.cargo-checksum.json +1 -0
  325. data/ext/cargo-vendor/wasi-cap-std-sync-10.0.0/Cargo.toml +90 -0
  326. data/ext/cargo-vendor/wasi-cap-std-sync-10.0.0/src/dir.rs +464 -0
  327. data/ext/cargo-vendor/wasi-cap-std-sync-10.0.0/src/lib.rs +141 -0
  328. data/ext/cargo-vendor/wasi-common-10.0.0/.cargo-checksum.json +1 -0
  329. data/ext/cargo-vendor/wasi-common-10.0.0/Cargo.toml +87 -0
  330. data/ext/cargo-vendor/wasi-common-10.0.0/src/ctx.rs +128 -0
  331. data/ext/cargo-vendor/wasi-common-10.0.0/src/file.rs +262 -0
  332. data/ext/cargo-vendor/wasi-common-10.0.0/src/snapshots/preview_1.rs +1490 -0
  333. data/ext/cargo-vendor/wasm-encoder-0.29.0/.cargo-checksum.json +1 -0
  334. data/ext/cargo-vendor/wasm-encoder-0.29.0/Cargo.toml +33 -0
  335. data/ext/cargo-vendor/wasm-encoder-0.29.0/README.md +80 -0
  336. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/aliases.rs +160 -0
  337. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/canonicals.rs +159 -0
  338. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/components.rs +29 -0
  339. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/exports.rs +127 -0
  340. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/imports.rs +200 -0
  341. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/instances.rs +200 -0
  342. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/modules.rs +29 -0
  343. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/names.rs +149 -0
  344. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/start.rs +52 -0
  345. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component/types.rs +759 -0
  346. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/component.rs +160 -0
  347. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/code.rs +2913 -0
  348. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/custom.rs +55 -0
  349. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/data.rs +185 -0
  350. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/dump.rs +627 -0
  351. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/elements.rs +224 -0
  352. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/exports.rs +85 -0
  353. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/functions.rs +63 -0
  354. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/globals.rs +90 -0
  355. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/imports.rs +142 -0
  356. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/linking.rs +263 -0
  357. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/memories.rs +99 -0
  358. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/names.rs +265 -0
  359. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/producers.rs +180 -0
  360. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/start.rs +39 -0
  361. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/tables.rs +104 -0
  362. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/tags.rs +85 -0
  363. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core/types.rs +246 -0
  364. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/core.rs +168 -0
  365. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/lib.rs +215 -0
  366. data/ext/cargo-vendor/wasm-encoder-0.29.0/src/raw.rs +30 -0
  367. data/ext/cargo-vendor/wasmparser-0.107.0/.cargo-checksum.json +1 -0
  368. data/ext/cargo-vendor/wasmparser-0.107.0/Cargo.lock +621 -0
  369. data/ext/cargo-vendor/wasmparser-0.107.0/Cargo.toml +54 -0
  370. data/ext/cargo-vendor/wasmparser-0.107.0/benches/benchmark.rs +351 -0
  371. data/ext/cargo-vendor/wasmparser-0.107.0/src/binary_reader.rs +1706 -0
  372. data/ext/cargo-vendor/wasmparser-0.107.0/src/lib.rs +723 -0
  373. data/ext/cargo-vendor/wasmparser-0.107.0/src/parser.rs +1535 -0
  374. data/ext/cargo-vendor/wasmparser-0.107.0/src/readers/component/canonicals.rs +119 -0
  375. data/ext/cargo-vendor/wasmparser-0.107.0/src/readers/component/exports.rs +117 -0
  376. data/ext/cargo-vendor/wasmparser-0.107.0/src/readers/component/imports.rs +137 -0
  377. data/ext/cargo-vendor/wasmparser-0.107.0/src/readers/component/instances.rs +163 -0
  378. data/ext/cargo-vendor/wasmparser-0.107.0/src/readers/component/types.rs +548 -0
  379. data/ext/cargo-vendor/wasmparser-0.107.0/src/readers/core/coredumps.rs +243 -0
  380. data/ext/cargo-vendor/wasmparser-0.107.0/src/readers/core/producers.rs +83 -0
  381. data/ext/cargo-vendor/wasmparser-0.107.0/src/readers/core/types.rs +874 -0
  382. data/ext/cargo-vendor/wasmparser-0.107.0/src/readers/core.rs +35 -0
  383. data/ext/cargo-vendor/wasmparser-0.107.0/src/validator/component.rs +3082 -0
  384. data/ext/cargo-vendor/wasmparser-0.107.0/src/validator/core.rs +1334 -0
  385. data/ext/cargo-vendor/wasmparser-0.107.0/src/validator/names.rs +606 -0
  386. data/ext/cargo-vendor/wasmparser-0.107.0/src/validator/operators.rs +3463 -0
  387. data/ext/cargo-vendor/wasmparser-0.107.0/src/validator/types.rs +3070 -0
  388. data/ext/cargo-vendor/wasmparser-0.107.0/src/validator.rs +1589 -0
  389. data/ext/cargo-vendor/wasmparser-0.111.0/.cargo-checksum.json +1 -0
  390. data/ext/cargo-vendor/wasmparser-0.111.0/Cargo.lock +644 -0
  391. data/ext/cargo-vendor/wasmparser-0.111.0/Cargo.toml +54 -0
  392. data/ext/cargo-vendor/wasmparser-0.111.0/README.md +36 -0
  393. data/ext/cargo-vendor/wasmparser-0.111.0/benches/benchmark.rs +349 -0
  394. data/ext/cargo-vendor/wasmparser-0.111.0/examples/simple.rs +37 -0
  395. data/ext/cargo-vendor/wasmparser-0.111.0/src/binary_reader.rs +1706 -0
  396. data/ext/cargo-vendor/wasmparser-0.111.0/src/lib.rs +726 -0
  397. data/ext/cargo-vendor/wasmparser-0.111.0/src/limits.rs +59 -0
  398. data/ext/cargo-vendor/wasmparser-0.111.0/src/parser.rs +1612 -0
  399. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/component/aliases.rs +119 -0
  400. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/component/canonicals.rs +120 -0
  401. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/component/exports.rs +117 -0
  402. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/component/imports.rs +137 -0
  403. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/component/instances.rs +163 -0
  404. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/component/names.rs +102 -0
  405. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/component/start.rs +30 -0
  406. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/component/types.rs +548 -0
  407. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/component.rs +17 -0
  408. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/code.rs +146 -0
  409. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/coredumps.rs +243 -0
  410. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/custom.rs +63 -0
  411. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/data.rs +96 -0
  412. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/dylink0.rs +132 -0
  413. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/elements.rs +152 -0
  414. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/exports.rs +65 -0
  415. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/functions.rs +17 -0
  416. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/globals.rs +49 -0
  417. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/imports.rs +76 -0
  418. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/init.rs +51 -0
  419. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/memories.rs +56 -0
  420. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/names.rs +153 -0
  421. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/operators.rs +354 -0
  422. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/producers.rs +83 -0
  423. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/tables.rs +87 -0
  424. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/tags.rs +32 -0
  425. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core/types.rs +1141 -0
  426. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers/core.rs +37 -0
  427. data/ext/cargo-vendor/wasmparser-0.111.0/src/readers.rs +316 -0
  428. data/ext/cargo-vendor/wasmparser-0.111.0/src/resources.rs +398 -0
  429. data/ext/cargo-vendor/wasmparser-0.111.0/src/validator/component.rs +3148 -0
  430. data/ext/cargo-vendor/wasmparser-0.111.0/src/validator/core.rs +1314 -0
  431. data/ext/cargo-vendor/wasmparser-0.111.0/src/validator/func.rs +348 -0
  432. data/ext/cargo-vendor/wasmparser-0.111.0/src/validator/names.rs +606 -0
  433. data/ext/cargo-vendor/wasmparser-0.111.0/src/validator/operators.rs +3466 -0
  434. data/ext/cargo-vendor/wasmparser-0.111.0/src/validator/types.rs +3283 -0
  435. data/ext/cargo-vendor/wasmparser-0.111.0/src/validator.rs +1568 -0
  436. data/ext/cargo-vendor/wasmparser-0.111.0/tests/big-module.rs +33 -0
  437. data/ext/cargo-vendor/wasmprinter-0.2.63/.cargo-checksum.json +1 -0
  438. data/ext/cargo-vendor/wasmprinter-0.2.63/Cargo.toml +39 -0
  439. data/ext/cargo-vendor/wasmprinter-0.2.63/README.md +47 -0
  440. data/ext/cargo-vendor/wasmprinter-0.2.63/src/lib.rs +2962 -0
  441. data/ext/cargo-vendor/wasmprinter-0.2.63/src/operator.rs +873 -0
  442. data/ext/cargo-vendor/wasmprinter-0.2.63/tests/all.rs +278 -0
  443. data/ext/cargo-vendor/wasmtime-10.0.0/.cargo-checksum.json +1 -0
  444. data/ext/cargo-vendor/wasmtime-10.0.0/Cargo.toml +183 -0
  445. data/ext/cargo-vendor/wasmtime-10.0.0/src/compiler.rs +710 -0
  446. data/ext/cargo-vendor/wasmtime-10.0.0/src/component/component.rs +382 -0
  447. data/ext/cargo-vendor/wasmtime-10.0.0/src/component/instance.rs +727 -0
  448. data/ext/cargo-vendor/wasmtime-10.0.0/src/component/matching.rs +112 -0
  449. data/ext/cargo-vendor/wasmtime-10.0.0/src/component/mod.rs +313 -0
  450. data/ext/cargo-vendor/wasmtime-10.0.0/src/config.rs +2066 -0
  451. data/ext/cargo-vendor/wasmtime-10.0.0/src/engine/serialization.rs +622 -0
  452. data/ext/cargo-vendor/wasmtime-10.0.0/src/engine.rs +757 -0
  453. data/ext/cargo-vendor/wasmtime-10.0.0/src/externals.rs +763 -0
  454. data/ext/cargo-vendor/wasmtime-10.0.0/src/func/typed.rs +638 -0
  455. data/ext/cargo-vendor/wasmtime-10.0.0/src/func.rs +2355 -0
  456. data/ext/cargo-vendor/wasmtime-10.0.0/src/instance.rs +905 -0
  457. data/ext/cargo-vendor/wasmtime-10.0.0/src/lib.rs +486 -0
  458. data/ext/cargo-vendor/wasmtime-10.0.0/src/linker.rs +1479 -0
  459. data/ext/cargo-vendor/wasmtime-10.0.0/src/memory.rs +950 -0
  460. data/ext/cargo-vendor/wasmtime-10.0.0/src/module.rs +1274 -0
  461. data/ext/cargo-vendor/wasmtime-10.0.0/src/ref.rs +109 -0
  462. data/ext/cargo-vendor/wasmtime-10.0.0/src/store/context.rs +243 -0
  463. data/ext/cargo-vendor/wasmtime-10.0.0/src/store/func_refs.rs +85 -0
  464. data/ext/cargo-vendor/wasmtime-10.0.0/src/store.rs +2166 -0
  465. data/ext/cargo-vendor/wasmtime-10.0.0/src/trampoline/func.rs +133 -0
  466. data/ext/cargo-vendor/wasmtime-10.0.0/src/trampoline/global.rs +67 -0
  467. data/ext/cargo-vendor/wasmtime-10.0.0/src/types/matching.rs +312 -0
  468. data/ext/cargo-vendor/wasmtime-10.0.0/src/types.rs +572 -0
  469. data/ext/cargo-vendor/wasmtime-10.0.0/src/values.rs +290 -0
  470. data/ext/cargo-vendor/wasmtime-asm-macros-10.0.0/.cargo-checksum.json +1 -0
  471. data/ext/cargo-vendor/wasmtime-asm-macros-10.0.0/Cargo.toml +22 -0
  472. data/ext/cargo-vendor/wasmtime-cache-10.0.0/.cargo-checksum.json +1 -0
  473. data/ext/cargo-vendor/wasmtime-cache-10.0.0/Cargo.toml +73 -0
  474. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/.cargo-checksum.json +1 -0
  475. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/Cargo.toml +58 -0
  476. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/src/bindgen.rs +316 -0
  477. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/char.wit +13 -0
  478. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/conventions.wit +39 -0
  479. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/direct-import.wit +5 -0
  480. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/empty.wit +2 -0
  481. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/flags.wit +55 -0
  482. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/floats.wit +13 -0
  483. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/function-new.wit +4 -0
  484. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/integers.wit +40 -0
  485. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/lists.wit +85 -0
  486. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/many-arguments.wit +52 -0
  487. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/multi-return.wit +14 -0
  488. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/records.wit +61 -0
  489. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/rename.wit +16 -0
  490. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/share-types.wit +21 -0
  491. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/simple-functions.wit +17 -0
  492. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/simple-lists.wit +13 -0
  493. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/simple-wasi.wit +23 -0
  494. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/small-anonymous.wit +15 -0
  495. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/smoke-default.wit +5 -0
  496. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/smoke-export.wit +7 -0
  497. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/smoke.wit +7 -0
  498. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/strings.wit +12 -0
  499. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/unions.wit +66 -0
  500. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/use-paths.wit +29 -0
  501. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/variants.wit +147 -0
  502. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen/worlds-with-types.wit +16 -0
  503. data/ext/cargo-vendor/wasmtime-component-macro-10.0.0/tests/codegen.rs +24 -0
  504. data/ext/cargo-vendor/wasmtime-component-util-10.0.0/.cargo-checksum.json +1 -0
  505. data/ext/cargo-vendor/wasmtime-component-util-10.0.0/Cargo.toml +25 -0
  506. data/ext/cargo-vendor/wasmtime-cranelift-10.0.0/.cargo-checksum.json +1 -0
  507. data/ext/cargo-vendor/wasmtime-cranelift-10.0.0/Cargo.toml +90 -0
  508. data/ext/cargo-vendor/wasmtime-cranelift-10.0.0/src/compiler.rs +1200 -0
  509. data/ext/cargo-vendor/wasmtime-cranelift-10.0.0/src/debug/transform/simulate.rs +410 -0
  510. data/ext/cargo-vendor/wasmtime-cranelift-10.0.0/src/func_environ.rs +2206 -0
  511. data/ext/cargo-vendor/wasmtime-cranelift-10.0.0/src/lib.rs +178 -0
  512. data/ext/cargo-vendor/wasmtime-cranelift-shared-10.0.0/.cargo-checksum.json +1 -0
  513. data/ext/cargo-vendor/wasmtime-cranelift-shared-10.0.0/Cargo.toml +57 -0
  514. data/ext/cargo-vendor/wasmtime-cranelift-shared-10.0.0/src/lib.rs +120 -0
  515. data/ext/cargo-vendor/wasmtime-environ-10.0.0/.cargo-checksum.json +1 -0
  516. data/ext/cargo-vendor/wasmtime-environ-10.0.0/Cargo.lock +681 -0
  517. data/ext/cargo-vendor/wasmtime-environ-10.0.0/Cargo.toml +116 -0
  518. data/ext/cargo-vendor/wasmtime-environ-10.0.0/src/component/compiler.rs +84 -0
  519. data/ext/cargo-vendor/wasmtime-environ-10.0.0/src/component/translate/inline.rs +1067 -0
  520. data/ext/cargo-vendor/wasmtime-environ-10.0.0/src/component/translate.rs +1070 -0
  521. data/ext/cargo-vendor/wasmtime-environ-10.0.0/src/component/types.rs +1916 -0
  522. data/ext/cargo-vendor/wasmtime-environ-10.0.0/src/fact.rs +623 -0
  523. data/ext/cargo-vendor/wasmtime-environ-10.0.0/src/module.rs +1083 -0
  524. data/ext/cargo-vendor/wasmtime-environ-10.0.0/src/module_environ.rs +884 -0
  525. data/ext/cargo-vendor/wasmtime-environ-10.0.0/src/trap_encoding.rs +238 -0
  526. data/ext/cargo-vendor/wasmtime-fiber-10.0.0/.cargo-checksum.json +1 -0
  527. data/ext/cargo-vendor/wasmtime-fiber-10.0.0/Cargo.toml +46 -0
  528. data/ext/cargo-vendor/wasmtime-fiber-10.0.0/src/lib.rs +305 -0
  529. data/ext/cargo-vendor/wasmtime-fiber-10.0.0/src/unix.rs +212 -0
  530. data/ext/cargo-vendor/wasmtime-fiber-10.0.0/src/windows.rs +161 -0
  531. data/ext/cargo-vendor/wasmtime-jit-10.0.0/.cargo-checksum.json +1 -0
  532. data/ext/cargo-vendor/wasmtime-jit-10.0.0/Cargo.toml +104 -0
  533. data/ext/cargo-vendor/wasmtime-jit-10.0.0/src/instantiate.rs +760 -0
  534. data/ext/cargo-vendor/wasmtime-jit-10.0.0/src/lib.rs +38 -0
  535. data/ext/cargo-vendor/wasmtime-jit-10.0.0/src/profiling/jitdump.rs +66 -0
  536. data/ext/cargo-vendor/wasmtime-jit-10.0.0/src/profiling/perfmap.rs +47 -0
  537. data/ext/cargo-vendor/wasmtime-jit-10.0.0/src/profiling/vtune.rs +80 -0
  538. data/ext/cargo-vendor/wasmtime-jit-10.0.0/src/profiling.rs +108 -0
  539. data/ext/cargo-vendor/wasmtime-jit-debug-10.0.0/.cargo-checksum.json +1 -0
  540. data/ext/cargo-vendor/wasmtime-jit-debug-10.0.0/Cargo.toml +55 -0
  541. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-10.0.0/.cargo-checksum.json +1 -0
  542. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-10.0.0/Cargo.toml +37 -0
  543. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/.cargo-checksum.json +1 -0
  544. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/Cargo.toml +110 -0
  545. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/component.rs +701 -0
  546. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/cow.rs +1060 -0
  547. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/debug_builtins.rs +58 -0
  548. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/externref.rs +1073 -0
  549. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/instance/allocator/pooling.rs +1368 -0
  550. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/instance/allocator.rs +531 -0
  551. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/instance.rs +1345 -0
  552. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/lib.rs +285 -0
  553. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/libcalls.rs +578 -0
  554. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/memory.rs +958 -0
  555. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/mmap/miri.rs +94 -0
  556. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/mmap/unix.rs +148 -0
  557. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/mmap/windows.rs +208 -0
  558. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/send_sync_ptr.rs +69 -0
  559. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/table.rs +595 -0
  560. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/traphandlers/unix.rs +387 -0
  561. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/traphandlers.rs +749 -0
  562. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/vmcontext/vm_host_func_context.rs +137 -0
  563. data/ext/cargo-vendor/wasmtime-runtime-10.0.0/src/vmcontext.rs +1221 -0
  564. data/ext/cargo-vendor/wasmtime-types-10.0.1/.cargo-checksum.json +1 -0
  565. data/ext/cargo-vendor/wasmtime-types-10.0.1/Cargo.toml +34 -0
  566. data/ext/cargo-vendor/wasmtime-types-10.0.1/src/lib.rs +462 -0
  567. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/.cargo-checksum.json +1 -0
  568. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/Cargo.toml +153 -0
  569. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/lib.rs +130 -0
  570. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/clocks/host.rs +73 -0
  571. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/clocks.rs +17 -0
  572. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/ctx.rs +206 -0
  573. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/error.rs +16 -0
  574. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/filesystem.rs +269 -0
  575. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/mod.rs +44 -0
  576. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/pipe.rs +233 -0
  577. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/preview1/mod.rs +1860 -0
  578. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/preview2/clocks.rs +80 -0
  579. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/preview2/env.rs +48 -0
  580. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/preview2/exit.rs +12 -0
  581. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/preview2/filesystem.rs +1020 -0
  582. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/preview2/io.rs +215 -0
  583. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/preview2/mod.rs +7 -0
  584. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/preview2/poll.rs +84 -0
  585. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/preview2/random.rs +41 -0
  586. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/random.rs +58 -0
  587. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/sched/subscription.rs +104 -0
  588. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/sched/sync.rs +156 -0
  589. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/sched.rs +105 -0
  590. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/stdio.rs +176 -0
  591. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/stream.rs +210 -0
  592. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/table.rs +107 -0
  593. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/wasi/command.rs +43 -0
  594. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/src/preview2/wasi/mod.rs +30 -0
  595. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/clocks/monotonic-clock.wit +34 -0
  596. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/clocks/timezone.wit +63 -0
  597. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/clocks/wall-clock.wit +43 -0
  598. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/filesystem/filesystem.wit +782 -0
  599. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/http/incoming-handler.wit +24 -0
  600. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/http/outgoing-handler.wit +18 -0
  601. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/http/types.wit +159 -0
  602. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/io/streams.wit +215 -0
  603. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/logging/handler.wit +34 -0
  604. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/poll/poll.wit +41 -0
  605. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/preview/command-extended.wit +36 -0
  606. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/preview/command.wit +26 -0
  607. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/preview/proxy.wit +9 -0
  608. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/preview/reactor.wit +24 -0
  609. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/random/insecure-seed.wit +24 -0
  610. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/random/insecure.wit +21 -0
  611. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/random/random.wit +25 -0
  612. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/sockets/instance-network.wit +9 -0
  613. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/sockets/ip-name-lookup.wit +69 -0
  614. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/sockets/network.wit +187 -0
  615. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/sockets/tcp-create-socket.wit +27 -0
  616. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/sockets/tcp.wit +255 -0
  617. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/sockets/udp-create-socket.wit +27 -0
  618. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/sockets/udp.wit +211 -0
  619. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/wasi-cli-base/environment.wit +16 -0
  620. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/wasi-cli-base/exit.wit +4 -0
  621. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/wasi-cli-base/preopens.wit +7 -0
  622. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/deps/wasi-cli-base/stdio.wit +17 -0
  623. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/main.wit +1 -0
  624. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/wit/test.wit +19 -0
  625. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/witx/typenames.witx +750 -0
  626. data/ext/cargo-vendor/wasmtime-wasi-10.0.0/witx/wasi_snapshot_preview1.witx +521 -0
  627. data/ext/cargo-vendor/wasmtime-winch-10.0.0/.cargo-checksum.json +1 -0
  628. data/ext/cargo-vendor/wasmtime-winch-10.0.0/Cargo.toml +63 -0
  629. data/ext/cargo-vendor/wasmtime-winch-10.0.0/src/compiler.rs +220 -0
  630. data/ext/cargo-vendor/wasmtime-wit-bindgen-10.0.0/.cargo-checksum.json +1 -0
  631. data/ext/cargo-vendor/wasmtime-wit-bindgen-10.0.0/Cargo.toml +29 -0
  632. data/ext/cargo-vendor/wasmtime-wit-bindgen-10.0.0/src/lib.rs +1631 -0
  633. data/ext/cargo-vendor/wasmtime-wit-bindgen-10.0.0/src/types.rs +179 -0
  634. data/ext/cargo-vendor/wiggle-10.0.0/.cargo-checksum.json +1 -0
  635. data/ext/cargo-vendor/wiggle-10.0.0/Cargo.toml +106 -0
  636. data/ext/cargo-vendor/wiggle-10.0.0/LICENSE +220 -0
  637. data/ext/cargo-vendor/wiggle-10.0.0/README.md +18 -0
  638. data/ext/cargo-vendor/wiggle-generate-10.0.0/.cargo-checksum.json +1 -0
  639. data/ext/cargo-vendor/wiggle-generate-10.0.0/Cargo.toml +58 -0
  640. data/ext/cargo-vendor/wiggle-generate-10.0.0/LICENSE +220 -0
  641. data/ext/cargo-vendor/wiggle-macro-10.0.0/.cargo-checksum.json +1 -0
  642. data/ext/cargo-vendor/wiggle-macro-10.0.0/Cargo.toml +55 -0
  643. data/ext/cargo-vendor/wiggle-macro-10.0.0/LICENSE +220 -0
  644. data/ext/cargo-vendor/wiggle-macro-10.0.0/src/lib.rs +210 -0
  645. data/ext/cargo-vendor/winch-codegen-0.8.0/.cargo-checksum.json +1 -0
  646. data/ext/cargo-vendor/winch-codegen-0.8.0/Cargo.toml +62 -0
  647. data/ext/cargo-vendor/winch-codegen-0.8.0/src/abi/local.rs +70 -0
  648. data/ext/cargo-vendor/winch-codegen-0.8.0/src/abi/mod.rs +237 -0
  649. data/ext/cargo-vendor/winch-codegen-0.8.0/src/codegen/call.rs +225 -0
  650. data/ext/cargo-vendor/winch-codegen-0.8.0/src/codegen/context.rs +270 -0
  651. data/ext/cargo-vendor/winch-codegen-0.8.0/src/codegen/env.rs +52 -0
  652. data/ext/cargo-vendor/winch-codegen-0.8.0/src/codegen/mod.rs +214 -0
  653. data/ext/cargo-vendor/winch-codegen-0.8.0/src/frame/mod.rs +172 -0
  654. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/aarch64/abi.rs +243 -0
  655. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/aarch64/asm.rs +300 -0
  656. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/aarch64/masm.rs +230 -0
  657. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/aarch64/mod.rs +127 -0
  658. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/aarch64/regs.rs +166 -0
  659. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/mod.rs +215 -0
  660. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/x64/abi.rs +369 -0
  661. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/x64/address.rs +17 -0
  662. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/x64/asm.rs +576 -0
  663. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/x64/masm.rs +288 -0
  664. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/x64/mod.rs +149 -0
  665. data/ext/cargo-vendor/winch-codegen-0.8.0/src/isa/x64/regs.rs +192 -0
  666. data/ext/cargo-vendor/winch-codegen-0.8.0/src/lib.rs +21 -0
  667. data/ext/cargo-vendor/winch-codegen-0.8.0/src/masm.rs +255 -0
  668. data/ext/cargo-vendor/winch-codegen-0.8.0/src/regalloc.rs +70 -0
  669. data/ext/cargo-vendor/winch-codegen-0.8.0/src/stack.rs +235 -0
  670. data/ext/cargo-vendor/winch-codegen-0.8.0/src/trampoline.rs +494 -0
  671. data/ext/cargo-vendor/winch-codegen-0.8.0/src/visitor.rs +353 -0
  672. data/ext/cargo-vendor/wit-parser-0.8.0/.cargo-checksum.json +1 -0
  673. data/ext/cargo-vendor/wit-parser-0.8.0/Cargo.toml +62 -0
  674. data/ext/cargo-vendor/wit-parser-0.8.0/src/ast/lex.rs +679 -0
  675. data/ext/cargo-vendor/wit-parser-0.8.0/src/ast/resolve.rs +1122 -0
  676. data/ext/cargo-vendor/wit-parser-0.8.0/src/ast.rs +1207 -0
  677. data/ext/cargo-vendor/wit-parser-0.8.0/src/lib.rs +622 -0
  678. data/ext/cargo-vendor/wit-parser-0.8.0/src/live.rs +111 -0
  679. data/ext/cargo-vendor/wit-parser-0.8.0/src/resolve.rs +1307 -0
  680. data/ext/cargo-vendor/wit-parser-0.8.0/tests/all.rs +168 -0
  681. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/comments.wit +25 -0
  682. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/diamond1/deps/dep1/types.wit +2 -0
  683. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/diamond1/deps/dep2/types.wit +2 -0
  684. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/diamond1/join.wit +6 -0
  685. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/disambiguate-diamond/shared1.wit +3 -0
  686. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/disambiguate-diamond/shared2.wit +3 -0
  687. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/disambiguate-diamond/world.wit +13 -0
  688. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/embedded.wit.md +34 -0
  689. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/empty.wit +1 -0
  690. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/foreign-deps/deps/another-pkg/other-doc.wit +3 -0
  691. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/foreign-deps/deps/corp/saas.wit +4 -0
  692. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/foreign-deps/deps/different-pkg/the-doc.wit +2 -0
  693. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/foreign-deps/deps/foreign-pkg/the-doc.wit +5 -0
  694. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/foreign-deps/deps/some-pkg/some-doc.wit +13 -0
  695. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/foreign-deps/deps/wasi/clocks.wit +5 -0
  696. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/foreign-deps/deps/wasi/filesystem.wit +7 -0
  697. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/foreign-deps/root.wit +44 -0
  698. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/functions.wit +14 -0
  699. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/many-names/a.wit +2 -0
  700. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/many-names/b.wit +5 -0
  701. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/multi-file/bar.wit +21 -0
  702. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/multi-file/cycle-a.wit +7 -0
  703. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/multi-file/cycle-b.wit +3 -0
  704. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/multi-file/foo.wit +31 -0
  705. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/package-syntax1.wit +1 -0
  706. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/package-syntax3.wit +1 -0
  707. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/package-syntax4.wit +1 -0
  708. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/alias-no-type.wit.result +1 -0
  709. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-function.wit +7 -0
  710. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-function.wit.result +5 -0
  711. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-function2.wit +7 -0
  712. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-function2.wit.result +5 -0
  713. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg1/root.wit +5 -0
  714. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg1.wit.result +8 -0
  715. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg2/deps/bar/empty.wit +1 -0
  716. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg2/root.wit +5 -0
  717. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg2.wit.result +5 -0
  718. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg3/deps/bar/baz.wit +2 -0
  719. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg3/root.wit +5 -0
  720. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg3.wit.result +5 -0
  721. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg4/deps/bar/baz.wit +4 -0
  722. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg4/root.wit +4 -0
  723. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg4.wit.result +5 -0
  724. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg5/deps/bar/baz.wit +3 -0
  725. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg5/root.wit +4 -0
  726. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg5.wit.result +5 -0
  727. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg6/deps/bar/baz.wit +4 -0
  728. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg6/root.wit +4 -0
  729. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-pkg6.wit.result +5 -0
  730. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-world-type1.wit +5 -0
  731. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/bad-world-type1.wit.result +5 -0
  732. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/conflicting-package/a.wit +1 -0
  733. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/conflicting-package/b.wit +1 -0
  734. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/conflicting-package.wit.result +8 -0
  735. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle.wit +6 -0
  736. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle.wit.result +5 -0
  737. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle2.wit +7 -0
  738. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle2.wit.result +5 -0
  739. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle3.wit +7 -0
  740. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle3.wit.result +5 -0
  741. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle4.wit +7 -0
  742. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle4.wit.result +5 -0
  743. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle5.wit +7 -0
  744. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/cycle5.wit.result +5 -0
  745. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/duplicate-functions.wit +8 -0
  746. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/duplicate-functions.wit.result +5 -0
  747. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/duplicate-interface.wit +6 -0
  748. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/duplicate-interface.wit.result +5 -0
  749. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/duplicate-interface2/foo.wit +3 -0
  750. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/duplicate-interface2/foo2.wit +3 -0
  751. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/duplicate-interface2.wit.result +8 -0
  752. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/duplicate-type.wit +7 -0
  753. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/duplicate-type.wit.result +5 -0
  754. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/empty-enum.wit +6 -0
  755. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/empty-enum.wit.result +5 -0
  756. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/empty-union.wit +6 -0
  757. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/empty-union.wit.result +5 -0
  758. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/empty-variant1.wit +6 -0
  759. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/empty-variant1.wit.result +5 -0
  760. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/export-twice.wit +8 -0
  761. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/export-twice.wit.result +5 -0
  762. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/import-export-overlap1.wit +5 -0
  763. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/import-export-overlap1.wit.result +5 -0
  764. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/import-export-overlap2.wit +5 -0
  765. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/import-export-overlap2.wit.result +5 -0
  766. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/import-twice.wit +8 -0
  767. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/import-twice.wit.result +5 -0
  768. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/invalid-md.wit.result +5 -0
  769. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/invalid-type-reference.wit +10 -0
  770. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/invalid-type-reference.wit.result +5 -0
  771. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/invalid-type-reference2.wit +6 -0
  772. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/invalid-type-reference2.wit.result +5 -0
  773. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/missing-package.wit.result +1 -0
  774. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/no-access-to-sibling-use/bar.wit +1 -0
  775. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/no-access-to-sibling-use/foo.wit +5 -0
  776. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/no-access-to-sibling-use.wit.result +8 -0
  777. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/pkg-cycle/deps/a1/root.wit +4 -0
  778. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/pkg-cycle/root.wit +4 -0
  779. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/pkg-cycle.wit.result +5 -0
  780. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/pkg-cycle2/deps/a1/root.wit +4 -0
  781. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/pkg-cycle2/deps/a2/root.wit +4 -0
  782. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/pkg-cycle2/root.wit +4 -0
  783. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/pkg-cycle2.wit.result +5 -0
  784. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/undefined-typed.wit +6 -0
  785. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/undefined-typed.wit.result +5 -0
  786. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unknown-interface.wit +7 -0
  787. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unknown-interface.wit.result +5 -0
  788. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-interface1.wit +7 -0
  789. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-interface1.wit.result +5 -0
  790. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-interface2.wit +8 -0
  791. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-interface2.wit.result +5 -0
  792. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-interface3.wit +5 -0
  793. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-interface3.wit.result +5 -0
  794. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-interface4.wit +7 -0
  795. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-interface4.wit.result +5 -0
  796. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use1.wit +7 -0
  797. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use1.wit.result +5 -0
  798. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use10/bar.wit +5 -0
  799. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use10.wit.result +8 -0
  800. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use2.wit +10 -0
  801. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use2.wit.result +5 -0
  802. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use3.wit +11 -0
  803. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use3.wit.result +5 -0
  804. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use7.wit +10 -0
  805. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use7.wit.result +5 -0
  806. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use8.wit +9 -0
  807. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use8.wit.result +5 -0
  808. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use9.wit +9 -0
  809. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/unresolved-use9.wit.result +5 -0
  810. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-conflict.wit +11 -0
  811. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-conflict.wit.result +5 -0
  812. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-conflict2.wit +13 -0
  813. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-conflict2.wit.result +5 -0
  814. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-conflict3.wit +13 -0
  815. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-conflict3.wit.result +5 -0
  816. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-cycle1.wit +7 -0
  817. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-cycle1.wit.result +5 -0
  818. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-cycle4.wit +14 -0
  819. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-cycle4.wit.result +5 -0
  820. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-shadow1.wit +7 -0
  821. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/use-shadow1.wit.result +5 -0
  822. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-interface-clash.wit +3 -0
  823. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-interface-clash.wit.result +5 -0
  824. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-same-fields2.wit +8 -0
  825. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-same-fields2.wit.result +5 -0
  826. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-same-fields3.wit +8 -0
  827. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-same-fields3.wit.result +5 -0
  828. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-top-level-func.wit +5 -0
  829. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-top-level-func.wit.result +5 -0
  830. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-top-level-func2.wit +4 -0
  831. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/parse-fail/world-top-level-func2.wit.result +5 -0
  832. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/shared-types.wit +10 -0
  833. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/type-then-eof.wit +5 -0
  834. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/types.wit +61 -0
  835. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/use-chain.wit +11 -0
  836. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/use.wit +34 -0
  837. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/versions/deps/a1/foo.wit +5 -0
  838. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/versions/deps/a2/foo.wit +5 -0
  839. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/versions/foo.wit +7 -0
  840. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/wasi.wit +178 -0
  841. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/world-diamond.wit +22 -0
  842. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/world-iface-no-collide.wit +11 -0
  843. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/world-implicit-import1.wit +12 -0
  844. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/world-implicit-import2.wit +11 -0
  845. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/world-implicit-import3.wit +11 -0
  846. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/world-same-fields4.wit +13 -0
  847. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/world-top-level-funcs.wit +9 -0
  848. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/worlds-same-fields5.wit +17 -0
  849. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/worlds-with-types.wit +34 -0
  850. data/ext/cargo-vendor/wit-parser-0.8.0/tests/ui/worlds.wit +37 -0
  851. data/ext/src/ruby_api/global.rs +3 -3
  852. data/ext/src/ruby_api/memory/unsafe_slice.rs +9 -3
  853. data/ext/src/ruby_api/params.rs +14 -12
  854. data/ext/src/ruby_api/table.rs +1 -1
  855. data/lib/wasmtime/version.rb +1 -1
  856. metadata +1418 -1079
  857. data/ext/cargo-vendor/cranelift-bforest-0.96.4/.cargo-checksum.json +0 -1
  858. data/ext/cargo-vendor/cranelift-bforest-0.96.4/Cargo.toml +0 -31
  859. data/ext/cargo-vendor/cranelift-codegen-0.96.4/.cargo-checksum.json +0 -1
  860. data/ext/cargo-vendor/cranelift-codegen-0.96.4/Cargo.toml +0 -159
  861. data/ext/cargo-vendor/cranelift-codegen-0.96.4/benches/x64-evex-encoding.rs +0 -53
  862. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/ir/trapcode.rs +0 -138
  863. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/aarch64/abi.rs +0 -1281
  864. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/aarch64/inst/emit.rs +0 -3658
  865. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/aarch64/inst/emit_tests.rs +0 -7868
  866. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/aarch64/inst/imms.rs +0 -1215
  867. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/aarch64/inst/mod.rs +0 -2945
  868. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/aarch64/inst.isle +0 -4035
  869. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/aarch64/lower/isle.rs +0 -813
  870. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/aarch64/lower.isle +0 -2906
  871. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/aarch64/mod.rs +0 -240
  872. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/mod.rs +0 -420
  873. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/abi.rs +0 -726
  874. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst/args.rs +0 -1822
  875. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst/emit.rs +0 -2914
  876. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst/emit_tests.rs +0 -2317
  877. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst/encode.rs +0 -188
  878. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst/imms.rs +0 -244
  879. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst/mod.rs +0 -1823
  880. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst/regs.rs +0 -231
  881. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst/unwind/systemv.rs +0 -177
  882. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst/vector.rs +0 -354
  883. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst.isle +0 -2746
  884. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/inst_vector.isle +0 -224
  885. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/lower/isle.rs +0 -544
  886. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/lower.isle +0 -1012
  887. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/riscv64/mod.rs +0 -219
  888. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/s390x/abi.rs +0 -947
  889. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/s390x/inst/emit.rs +0 -3697
  890. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/s390x/inst/emit_tests.rs +0 -13397
  891. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/s390x/inst/mod.rs +0 -3409
  892. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/s390x/inst.isle +0 -5045
  893. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/s390x/lower.isle +0 -3991
  894. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/s390x/mod.rs +0 -215
  895. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/abi.rs +0 -978
  896. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/encoding/evex.rs +0 -403
  897. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/encoding/rex.rs +0 -565
  898. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/encoding/vex.rs +0 -498
  899. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/inst/args.rs +0 -2168
  900. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/inst/emit.rs +0 -3938
  901. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/inst/emit_tests.rs +0 -5669
  902. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/inst/mod.rs +0 -2763
  903. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/inst.isle +0 -5186
  904. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/lower/isle.rs +0 -1158
  905. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/lower.isle +0 -4262
  906. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/lower.rs +0 -328
  907. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isa/x64/mod.rs +0 -250
  908. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/isle_prelude.rs +0 -818
  909. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/machinst/abi.rs +0 -2410
  910. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/machinst/buffer.rs +0 -2219
  911. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/machinst/compile.rs +0 -92
  912. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/machinst/isle.rs +0 -827
  913. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/machinst/lower.rs +0 -1366
  914. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/machinst/mod.rs +0 -538
  915. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/machinst/reg.rs +0 -532
  916. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/machinst/vcode.rs +0 -1571
  917. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/prelude.isle +0 -552
  918. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/prelude_lower.isle +0 -1012
  919. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/settings.rs +0 -599
  920. data/ext/cargo-vendor/cranelift-codegen-0.96.4/src/verifier/mod.rs +0 -1881
  921. data/ext/cargo-vendor/cranelift-codegen-meta-0.96.4/.cargo-checksum.json +0 -1
  922. data/ext/cargo-vendor/cranelift-codegen-meta-0.96.4/Cargo.toml +0 -23
  923. data/ext/cargo-vendor/cranelift-codegen-meta-0.96.4/src/isa/x86.rs +0 -445
  924. data/ext/cargo-vendor/cranelift-codegen-meta-0.96.4/src/shared/settings.rs +0 -331
  925. data/ext/cargo-vendor/cranelift-codegen-shared-0.96.4/.cargo-checksum.json +0 -1
  926. data/ext/cargo-vendor/cranelift-codegen-shared-0.96.4/Cargo.toml +0 -22
  927. data/ext/cargo-vendor/cranelift-control-0.96.4/.cargo-checksum.json +0 -1
  928. data/ext/cargo-vendor/cranelift-control-0.96.4/Cargo.toml +0 -30
  929. data/ext/cargo-vendor/cranelift-control-0.96.4/src/chaos.rs +0 -78
  930. data/ext/cargo-vendor/cranelift-control-0.96.4/src/lib.rs +0 -30
  931. data/ext/cargo-vendor/cranelift-control-0.96.4/src/zero_sized.rs +0 -42
  932. data/ext/cargo-vendor/cranelift-entity-0.96.4/.cargo-checksum.json +0 -1
  933. data/ext/cargo-vendor/cranelift-entity-0.96.4/Cargo.toml +0 -35
  934. data/ext/cargo-vendor/cranelift-entity-0.96.4/src/list.rs +0 -868
  935. data/ext/cargo-vendor/cranelift-frontend-0.96.4/.cargo-checksum.json +0 -1
  936. data/ext/cargo-vendor/cranelift-frontend-0.96.4/Cargo.toml +0 -53
  937. data/ext/cargo-vendor/cranelift-isle-0.96.4/.cargo-checksum.json +0 -1
  938. data/ext/cargo-vendor/cranelift-isle-0.96.4/Cargo.toml +0 -37
  939. data/ext/cargo-vendor/cranelift-native-0.96.4/.cargo-checksum.json +0 -1
  940. data/ext/cargo-vendor/cranelift-native-0.96.4/Cargo.toml +0 -38
  941. data/ext/cargo-vendor/cranelift-native-0.96.4/src/lib.rs +0 -216
  942. data/ext/cargo-vendor/cranelift-wasm-0.96.4/.cargo-checksum.json +0 -1
  943. data/ext/cargo-vendor/cranelift-wasm-0.96.4/Cargo.toml +0 -85
  944. data/ext/cargo-vendor/cranelift-wasm-0.96.4/src/code_translator.rs +0 -3479
  945. data/ext/cargo-vendor/cranelift-wasm-0.96.4/src/environ/dummy.rs +0 -901
  946. data/ext/cargo-vendor/cranelift-wasm-0.96.4/src/environ/spec.rs +0 -807
  947. data/ext/cargo-vendor/cranelift-wasm-0.96.4/src/func_translator.rs +0 -419
  948. data/ext/cargo-vendor/cranelift-wasm-0.96.4/src/sections_translator.rs +0 -429
  949. data/ext/cargo-vendor/cranelift-wasm-0.96.4/src/translation_utils.rs +0 -108
  950. data/ext/cargo-vendor/file-per-thread-logger-0.1.6/.cargo-checksum.json +0 -1
  951. data/ext/cargo-vendor/file-per-thread-logger-0.1.6/Cargo.toml +0 -36
  952. data/ext/cargo-vendor/file-per-thread-logger-0.1.6/run-tests.sh +0 -11
  953. data/ext/cargo-vendor/file-per-thread-logger-0.1.6/src/lib.rs +0 -162
  954. data/ext/cargo-vendor/file-per-thread-logger-0.1.6/tests/test.rs +0 -267
  955. data/ext/cargo-vendor/regalloc2-0.8.1/.cargo-checksum.json +0 -1
  956. data/ext/cargo-vendor/regalloc2-0.8.1/Cargo.toml +0 -72
  957. data/ext/cargo-vendor/regalloc2-0.8.1/deny.toml +0 -28
  958. data/ext/cargo-vendor/regalloc2-0.8.1/src/checker.rs +0 -1089
  959. data/ext/cargo-vendor/regalloc2-0.8.1/src/fuzzing/func.rs +0 -673
  960. data/ext/cargo-vendor/regalloc2-0.8.1/src/index.rs +0 -188
  961. data/ext/cargo-vendor/regalloc2-0.8.1/src/ion/data_structures.rs +0 -688
  962. data/ext/cargo-vendor/regalloc2-0.8.1/src/ion/liveranges.rs +0 -1012
  963. data/ext/cargo-vendor/regalloc2-0.8.1/src/ion/merge.rs +0 -394
  964. data/ext/cargo-vendor/regalloc2-0.8.1/src/ion/mod.rs +0 -152
  965. data/ext/cargo-vendor/regalloc2-0.8.1/src/ion/moves.rs +0 -985
  966. data/ext/cargo-vendor/regalloc2-0.8.1/src/ion/process.rs +0 -1322
  967. data/ext/cargo-vendor/regalloc2-0.8.1/src/ion/requirement.rs +0 -174
  968. data/ext/cargo-vendor/regalloc2-0.8.1/src/ion/spill.rs +0 -198
  969. data/ext/cargo-vendor/regalloc2-0.8.1/src/ion/stackmap.rs +0 -74
  970. data/ext/cargo-vendor/regalloc2-0.8.1/src/lib.rs +0 -1523
  971. data/ext/cargo-vendor/regalloc2-0.8.1/src/moves.rs +0 -438
  972. data/ext/cargo-vendor/wasi-cap-std-sync-9.0.4/.cargo-checksum.json +0 -1
  973. data/ext/cargo-vendor/wasi-cap-std-sync-9.0.4/Cargo.toml +0 -89
  974. data/ext/cargo-vendor/wasi-cap-std-sync-9.0.4/src/dir.rs +0 -465
  975. data/ext/cargo-vendor/wasi-cap-std-sync-9.0.4/src/lib.rs +0 -140
  976. data/ext/cargo-vendor/wasi-common-9.0.4/.cargo-checksum.json +0 -1
  977. data/ext/cargo-vendor/wasi-common-9.0.4/Cargo.toml +0 -86
  978. data/ext/cargo-vendor/wasi-common-9.0.4/src/ctx.rs +0 -127
  979. data/ext/cargo-vendor/wasi-common-9.0.4/src/file.rs +0 -260
  980. data/ext/cargo-vendor/wasi-common-9.0.4/src/snapshots/preview_1.rs +0 -1490
  981. data/ext/cargo-vendor/wasmparser-0.103.0/.cargo-checksum.json +0 -1
  982. data/ext/cargo-vendor/wasmparser-0.103.0/Cargo.lock +0 -692
  983. data/ext/cargo-vendor/wasmparser-0.103.0/Cargo.toml +0 -54
  984. data/ext/cargo-vendor/wasmparser-0.103.0/benches/benchmark.rs +0 -350
  985. data/ext/cargo-vendor/wasmparser-0.103.0/src/binary_reader.rs +0 -1682
  986. data/ext/cargo-vendor/wasmparser-0.103.0/src/lib.rs +0 -712
  987. data/ext/cargo-vendor/wasmparser-0.103.0/src/parser.rs +0 -1496
  988. data/ext/cargo-vendor/wasmparser-0.103.0/src/readers/component/canonicals.rs +0 -95
  989. data/ext/cargo-vendor/wasmparser-0.103.0/src/readers/component/exports.rs +0 -105
  990. data/ext/cargo-vendor/wasmparser-0.103.0/src/readers/component/imports.rs +0 -109
  991. data/ext/cargo-vendor/wasmparser-0.103.0/src/readers/component/instances.rs +0 -164
  992. data/ext/cargo-vendor/wasmparser-0.103.0/src/readers/component/types.rs +0 -508
  993. data/ext/cargo-vendor/wasmparser-0.103.0/src/readers/core/producers.rs +0 -78
  994. data/ext/cargo-vendor/wasmparser-0.103.0/src/readers/core/types.rs +0 -511
  995. data/ext/cargo-vendor/wasmparser-0.103.0/src/readers/core.rs +0 -33
  996. data/ext/cargo-vendor/wasmparser-0.103.0/src/validator/component.rs +0 -2097
  997. data/ext/cargo-vendor/wasmparser-0.103.0/src/validator/core.rs +0 -1278
  998. data/ext/cargo-vendor/wasmparser-0.103.0/src/validator/operators.rs +0 -3456
  999. data/ext/cargo-vendor/wasmparser-0.103.0/src/validator/types.rs +0 -2159
  1000. data/ext/cargo-vendor/wasmparser-0.103.0/src/validator.rs +0 -1514
  1001. data/ext/cargo-vendor/wasmtime-9.0.4/.cargo-checksum.json +0 -1
  1002. data/ext/cargo-vendor/wasmtime-9.0.4/Cargo.toml +0 -183
  1003. data/ext/cargo-vendor/wasmtime-9.0.4/build.rs +0 -20
  1004. data/ext/cargo-vendor/wasmtime-9.0.4/src/component/component.rs +0 -519
  1005. data/ext/cargo-vendor/wasmtime-9.0.4/src/component/instance.rs +0 -728
  1006. data/ext/cargo-vendor/wasmtime-9.0.4/src/component/matching.rs +0 -112
  1007. data/ext/cargo-vendor/wasmtime-9.0.4/src/component/mod.rs +0 -313
  1008. data/ext/cargo-vendor/wasmtime-9.0.4/src/config.rs +0 -2036
  1009. data/ext/cargo-vendor/wasmtime-9.0.4/src/engine/serialization.rs +0 -613
  1010. data/ext/cargo-vendor/wasmtime-9.0.4/src/engine.rs +0 -729
  1011. data/ext/cargo-vendor/wasmtime-9.0.4/src/externals.rs +0 -762
  1012. data/ext/cargo-vendor/wasmtime-9.0.4/src/func/typed.rs +0 -638
  1013. data/ext/cargo-vendor/wasmtime-9.0.4/src/func.rs +0 -2385
  1014. data/ext/cargo-vendor/wasmtime-9.0.4/src/instance.rs +0 -905
  1015. data/ext/cargo-vendor/wasmtime-9.0.4/src/lib.rs +0 -481
  1016. data/ext/cargo-vendor/wasmtime-9.0.4/src/linker.rs +0 -1479
  1017. data/ext/cargo-vendor/wasmtime-9.0.4/src/memory.rs +0 -948
  1018. data/ext/cargo-vendor/wasmtime-9.0.4/src/module.rs +0 -1542
  1019. data/ext/cargo-vendor/wasmtime-9.0.4/src/ref.rs +0 -108
  1020. data/ext/cargo-vendor/wasmtime-9.0.4/src/store/context.rs +0 -243
  1021. data/ext/cargo-vendor/wasmtime-9.0.4/src/store/func_refs.rs +0 -110
  1022. data/ext/cargo-vendor/wasmtime-9.0.4/src/store.rs +0 -2059
  1023. data/ext/cargo-vendor/wasmtime-9.0.4/src/trampoline/func.rs +0 -171
  1024. data/ext/cargo-vendor/wasmtime-9.0.4/src/trampoline/global.rs +0 -71
  1025. data/ext/cargo-vendor/wasmtime-9.0.4/src/types/matching.rs +0 -254
  1026. data/ext/cargo-vendor/wasmtime-9.0.4/src/types.rs +0 -551
  1027. data/ext/cargo-vendor/wasmtime-9.0.4/src/values.rs +0 -290
  1028. data/ext/cargo-vendor/wasmtime-asm-macros-9.0.4/.cargo-checksum.json +0 -1
  1029. data/ext/cargo-vendor/wasmtime-asm-macros-9.0.4/Cargo.toml +0 -22
  1030. data/ext/cargo-vendor/wasmtime-cache-9.0.4/.cargo-checksum.json +0 -1
  1031. data/ext/cargo-vendor/wasmtime-cache-9.0.4/Cargo.toml +0 -73
  1032. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/.cargo-checksum.json +0 -1
  1033. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/Cargo.toml +0 -58
  1034. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/src/bindgen.rs +0 -316
  1035. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/char.wit +0 -11
  1036. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/conventions.wit +0 -38
  1037. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/direct-import.wit +0 -3
  1038. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/empty.wit +0 -1
  1039. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/flags.wit +0 -53
  1040. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/floats.wit +0 -11
  1041. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/function-new.wit +0 -3
  1042. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/integers.wit +0 -38
  1043. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/lists.wit +0 -83
  1044. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/many-arguments.wit +0 -50
  1045. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/multi-return.wit +0 -12
  1046. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/records.wit +0 -59
  1047. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/rename.wit +0 -14
  1048. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/share-types.wit +0 -19
  1049. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/simple-functions.wit +0 -15
  1050. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/simple-lists.wit +0 -11
  1051. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/simple-wasi.wit +0 -21
  1052. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/small-anonymous.wit +0 -13
  1053. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/smoke-default.wit +0 -3
  1054. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/smoke-export.wit +0 -5
  1055. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/smoke.wit +0 -5
  1056. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/strings.wit +0 -10
  1057. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/unions.wit +0 -64
  1058. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/use-paths.wit +0 -27
  1059. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/variants.wit +0 -145
  1060. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen/worlds-with-types.wit +0 -14
  1061. data/ext/cargo-vendor/wasmtime-component-macro-9.0.4/tests/codegen.rs +0 -30
  1062. data/ext/cargo-vendor/wasmtime-component-util-9.0.4/.cargo-checksum.json +0 -1
  1063. data/ext/cargo-vendor/wasmtime-component-util-9.0.4/Cargo.toml +0 -25
  1064. data/ext/cargo-vendor/wasmtime-cranelift-9.0.4/.cargo-checksum.json +0 -1
  1065. data/ext/cargo-vendor/wasmtime-cranelift-9.0.4/Cargo.toml +0 -90
  1066. data/ext/cargo-vendor/wasmtime-cranelift-9.0.4/src/compiler.rs +0 -1200
  1067. data/ext/cargo-vendor/wasmtime-cranelift-9.0.4/src/debug/transform/simulate.rs +0 -411
  1068. data/ext/cargo-vendor/wasmtime-cranelift-9.0.4/src/func_environ.rs +0 -2162
  1069. data/ext/cargo-vendor/wasmtime-cranelift-9.0.4/src/lib.rs +0 -177
  1070. data/ext/cargo-vendor/wasmtime-cranelift-shared-9.0.4/.cargo-checksum.json +0 -1
  1071. data/ext/cargo-vendor/wasmtime-cranelift-shared-9.0.4/Cargo.toml +0 -57
  1072. data/ext/cargo-vendor/wasmtime-cranelift-shared-9.0.4/src/lib.rs +0 -119
  1073. data/ext/cargo-vendor/wasmtime-environ-9.0.4/.cargo-checksum.json +0 -1
  1074. data/ext/cargo-vendor/wasmtime-environ-9.0.4/Cargo.lock +0 -735
  1075. data/ext/cargo-vendor/wasmtime-environ-9.0.4/Cargo.toml +0 -116
  1076. data/ext/cargo-vendor/wasmtime-environ-9.0.4/src/component/compiler.rs +0 -84
  1077. data/ext/cargo-vendor/wasmtime-environ-9.0.4/src/component/translate/inline.rs +0 -1064
  1078. data/ext/cargo-vendor/wasmtime-environ-9.0.4/src/component/translate.rs +0 -1066
  1079. data/ext/cargo-vendor/wasmtime-environ-9.0.4/src/component/types.rs +0 -1903
  1080. data/ext/cargo-vendor/wasmtime-environ-9.0.4/src/fact.rs +0 -622
  1081. data/ext/cargo-vendor/wasmtime-environ-9.0.4/src/module.rs +0 -1043
  1082. data/ext/cargo-vendor/wasmtime-environ-9.0.4/src/module_environ.rs +0 -841
  1083. data/ext/cargo-vendor/wasmtime-environ-9.0.4/src/trap_encoding.rs +0 -234
  1084. data/ext/cargo-vendor/wasmtime-fiber-9.0.4/.cargo-checksum.json +0 -1
  1085. data/ext/cargo-vendor/wasmtime-fiber-9.0.4/Cargo.toml +0 -46
  1086. data/ext/cargo-vendor/wasmtime-fiber-9.0.4/src/lib.rs +0 -293
  1087. data/ext/cargo-vendor/wasmtime-fiber-9.0.4/src/unix.rs +0 -199
  1088. data/ext/cargo-vendor/wasmtime-fiber-9.0.4/src/windows.rs +0 -156
  1089. data/ext/cargo-vendor/wasmtime-jit-9.0.4/.cargo-checksum.json +0 -1
  1090. data/ext/cargo-vendor/wasmtime-jit-9.0.4/Cargo.toml +0 -100
  1091. data/ext/cargo-vendor/wasmtime-jit-9.0.4/src/instantiate.rs +0 -786
  1092. data/ext/cargo-vendor/wasmtime-jit-9.0.4/src/lib.rs +0 -39
  1093. data/ext/cargo-vendor/wasmtime-jit-9.0.4/src/profiling/jitdump_disabled.rs +0 -32
  1094. data/ext/cargo-vendor/wasmtime-jit-9.0.4/src/profiling/jitdump_linux.rs +0 -444
  1095. data/ext/cargo-vendor/wasmtime-jit-9.0.4/src/profiling/perfmap_disabled.rs +0 -28
  1096. data/ext/cargo-vendor/wasmtime-jit-9.0.4/src/profiling/perfmap_linux.rs +0 -104
  1097. data/ext/cargo-vendor/wasmtime-jit-9.0.4/src/profiling/vtune.rs +0 -147
  1098. data/ext/cargo-vendor/wasmtime-jit-9.0.4/src/profiling/vtune_disabled.rs +0 -32
  1099. data/ext/cargo-vendor/wasmtime-jit-9.0.4/src/profiling.rs +0 -74
  1100. data/ext/cargo-vendor/wasmtime-jit-debug-9.0.4/.cargo-checksum.json +0 -1
  1101. data/ext/cargo-vendor/wasmtime-jit-debug-9.0.4/Cargo.toml +0 -55
  1102. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-9.0.4/.cargo-checksum.json +0 -1
  1103. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-9.0.4/Cargo.toml +0 -37
  1104. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/.cargo-checksum.json +0 -1
  1105. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/Cargo.toml +0 -107
  1106. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/component.rs +0 -724
  1107. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/cow.rs +0 -1063
  1108. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/debug_builtins.rs +0 -56
  1109. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/externref.rs +0 -1078
  1110. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/instance/allocator/pooling.rs +0 -1371
  1111. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/instance/allocator.rs +0 -528
  1112. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/instance.rs +0 -1267
  1113. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/lib.rs +0 -286
  1114. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/libcalls.rs +0 -597
  1115. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/memory.rs +0 -945
  1116. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/mmap/miri.rs +0 -93
  1117. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/mmap/unix.rs +0 -147
  1118. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/mmap/windows.rs +0 -207
  1119. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/table.rs +0 -573
  1120. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/traphandlers/unix.rs +0 -387
  1121. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/traphandlers.rs +0 -664
  1122. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/vmcontext/vm_host_func_context.rs +0 -147
  1123. data/ext/cargo-vendor/wasmtime-runtime-9.0.4/src/vmcontext.rs +0 -1244
  1124. data/ext/cargo-vendor/wasmtime-types-9.0.4/.cargo-checksum.json +0 -1
  1125. data/ext/cargo-vendor/wasmtime-types-9.0.4/Cargo.toml +0 -34
  1126. data/ext/cargo-vendor/wasmtime-types-9.0.4/src/lib.rs +0 -413
  1127. data/ext/cargo-vendor/wasmtime-wasi-9.0.4/.cargo-checksum.json +0 -1
  1128. data/ext/cargo-vendor/wasmtime-wasi-9.0.4/Cargo.toml +0 -67
  1129. data/ext/cargo-vendor/wasmtime-wasi-9.0.4/src/lib.rs +0 -128
  1130. data/ext/cargo-vendor/wasmtime-winch-9.0.4/.cargo-checksum.json +0 -1
  1131. data/ext/cargo-vendor/wasmtime-winch-9.0.4/Cargo.toml +0 -66
  1132. data/ext/cargo-vendor/wasmtime-winch-9.0.4/src/compiler.rs +0 -191
  1133. data/ext/cargo-vendor/wasmtime-wit-bindgen-9.0.4/.cargo-checksum.json +0 -1
  1134. data/ext/cargo-vendor/wasmtime-wit-bindgen-9.0.4/Cargo.toml +0 -29
  1135. data/ext/cargo-vendor/wasmtime-wit-bindgen-9.0.4/src/lib.rs +0 -1488
  1136. data/ext/cargo-vendor/wasmtime-wit-bindgen-9.0.4/src/types.rs +0 -178
  1137. data/ext/cargo-vendor/wiggle-9.0.4/.cargo-checksum.json +0 -1
  1138. data/ext/cargo-vendor/wiggle-9.0.4/Cargo.toml +0 -106
  1139. data/ext/cargo-vendor/wiggle-9.0.4/README.md +0 -18
  1140. data/ext/cargo-vendor/wiggle-generate-9.0.4/.cargo-checksum.json +0 -1
  1141. data/ext/cargo-vendor/wiggle-generate-9.0.4/Cargo.toml +0 -58
  1142. data/ext/cargo-vendor/wiggle-macro-9.0.4/.cargo-checksum.json +0 -1
  1143. data/ext/cargo-vendor/wiggle-macro-9.0.4/Cargo.toml +0 -55
  1144. data/ext/cargo-vendor/wiggle-macro-9.0.4/src/lib.rs +0 -210
  1145. data/ext/cargo-vendor/winch-codegen-0.7.4/.cargo-checksum.json +0 -1
  1146. data/ext/cargo-vendor/winch-codegen-0.7.4/Cargo.toml +0 -59
  1147. data/ext/cargo-vendor/winch-codegen-0.7.4/src/abi/local.rs +0 -69
  1148. data/ext/cargo-vendor/winch-codegen-0.7.4/src/abi/mod.rs +0 -223
  1149. data/ext/cargo-vendor/winch-codegen-0.7.4/src/codegen/call.rs +0 -215
  1150. data/ext/cargo-vendor/winch-codegen-0.7.4/src/codegen/context.rs +0 -259
  1151. data/ext/cargo-vendor/winch-codegen-0.7.4/src/codegen/env.rs +0 -19
  1152. data/ext/cargo-vendor/winch-codegen-0.7.4/src/codegen/mod.rs +0 -183
  1153. data/ext/cargo-vendor/winch-codegen-0.7.4/src/frame/mod.rs +0 -166
  1154. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/aarch64/abi.rs +0 -221
  1155. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/aarch64/asm.rs +0 -244
  1156. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/aarch64/masm.rs +0 -221
  1157. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/aarch64/mod.rs +0 -122
  1158. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/aarch64/regs.rs +0 -160
  1159. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/mod.rs +0 -202
  1160. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/x64/abi.rs +0 -337
  1161. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/x64/address.rs +0 -17
  1162. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/x64/asm.rs +0 -499
  1163. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/x64/masm.rs +0 -267
  1164. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/x64/mod.rs +0 -135
  1165. data/ext/cargo-vendor/winch-codegen-0.7.4/src/isa/x64/regs.rs +0 -178
  1166. data/ext/cargo-vendor/winch-codegen-0.7.4/src/lib.rs +0 -20
  1167. data/ext/cargo-vendor/winch-codegen-0.7.4/src/masm.rs +0 -213
  1168. data/ext/cargo-vendor/winch-codegen-0.7.4/src/regalloc.rs +0 -61
  1169. data/ext/cargo-vendor/winch-codegen-0.7.4/src/stack.rs +0 -230
  1170. data/ext/cargo-vendor/winch-codegen-0.7.4/src/trampoline.rs +0 -206
  1171. data/ext/cargo-vendor/winch-codegen-0.7.4/src/visitor.rs +0 -215
  1172. data/ext/cargo-vendor/winch-environ-0.7.4/.cargo-checksum.json +0 -1
  1173. data/ext/cargo-vendor/winch-environ-0.7.4/Cargo.toml +0 -28
  1174. data/ext/cargo-vendor/winch-environ-0.7.4/src/lib.rs +0 -41
  1175. data/ext/cargo-vendor/wit-parser-0.7.1/.cargo-checksum.json +0 -1
  1176. data/ext/cargo-vendor/wit-parser-0.7.1/Cargo.toml +0 -59
  1177. data/ext/cargo-vendor/wit-parser-0.7.1/src/ast/lex.rs +0 -662
  1178. data/ext/cargo-vendor/wit-parser-0.7.1/src/ast/resolve.rs +0 -1072
  1179. data/ext/cargo-vendor/wit-parser-0.7.1/src/ast.rs +0 -1099
  1180. data/ext/cargo-vendor/wit-parser-0.7.1/src/lib.rs +0 -617
  1181. data/ext/cargo-vendor/wit-parser-0.7.1/src/live.rs +0 -123
  1182. data/ext/cargo-vendor/wit-parser-0.7.1/src/resolve.rs +0 -1478
  1183. data/ext/cargo-vendor/wit-parser-0.7.1/tests/all.rs +0 -168
  1184. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/comments.wit +0 -23
  1185. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/disambiguate-diamond/shared1.wit +0 -3
  1186. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/disambiguate-diamond/shared2.wit +0 -3
  1187. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/disambiguate-diamond/world.wit +0 -11
  1188. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/embedded.wit.md +0 -32
  1189. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/foreign-deps/deps/another-pkg/other-doc.wit +0 -1
  1190. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/foreign-deps/deps/corp/saas.wit +0 -2
  1191. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/foreign-deps/deps/different-pkg/the-doc.wit +0 -1
  1192. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/foreign-deps/deps/foreign-pkg/the-doc.wit +0 -3
  1193. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/foreign-deps/deps/some-pkg/some-doc.wit +0 -11
  1194. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/foreign-deps/deps/wasi/clocks.wit +0 -3
  1195. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/foreign-deps/deps/wasi/filesystem.wit +0 -5
  1196. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/foreign-deps/root.wit +0 -31
  1197. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/functions.wit +0 -12
  1198. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/multi-file/bar.wit +0 -19
  1199. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/multi-file/foo.wit +0 -15
  1200. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/alias-no-type.wit.result +0 -5
  1201. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-diamond/a.wit +0 -9
  1202. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-diamond/b.wit +0 -9
  1203. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-diamond/join.wit +0 -4
  1204. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-diamond.wit.result +0 -8
  1205. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-function.wit +0 -5
  1206. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-function.wit.result +0 -5
  1207. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-function2.wit +0 -5
  1208. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-function2.wit.result +0 -5
  1209. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg1/root.wit +0 -3
  1210. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg1.wit.result +0 -5
  1211. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg2/root.wit +0 -3
  1212. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg2.wit.result +0 -5
  1213. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg3/deps/bar/baz.wit +0 -0
  1214. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg3/root.wit +0 -3
  1215. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg3.wit.result +0 -5
  1216. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg4/deps/bar/baz.wit +0 -3
  1217. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg4/root.wit +0 -3
  1218. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg4.wit.result +0 -5
  1219. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg5/deps/bar/baz.wit +0 -2
  1220. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg5/root.wit +0 -3
  1221. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg5.wit.result +0 -5
  1222. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg6/deps/bar/baz.wit +0 -0
  1223. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg6/root.wit +0 -3
  1224. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-pkg6.wit.result +0 -5
  1225. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-world-type1.wit +0 -4
  1226. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-world-type1.wit.result +0 -5
  1227. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-world-type2.wit +0 -9
  1228. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/bad-world-type2.wit.result +0 -5
  1229. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle.wit +0 -5
  1230. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle.wit.result +0 -5
  1231. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle2.wit +0 -6
  1232. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle2.wit.result +0 -5
  1233. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle3.wit +0 -6
  1234. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle3.wit.result +0 -5
  1235. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle4.wit +0 -6
  1236. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle4.wit.result +0 -5
  1237. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle5.wit +0 -6
  1238. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/cycle5.wit.result +0 -5
  1239. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/default-interface1.wit +0 -3
  1240. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/default-interface1.wit.result +0 -5
  1241. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/default-world1.wit +0 -3
  1242. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/default-world1.wit.result +0 -5
  1243. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/duplicate-functions.wit +0 -6
  1244. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/duplicate-functions.wit.result +0 -5
  1245. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/duplicate-interface.wit +0 -4
  1246. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/duplicate-interface.wit.result +0 -5
  1247. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/duplicate-type.wit +0 -6
  1248. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/duplicate-type.wit.result +0 -5
  1249. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/empty-enum.wit +0 -5
  1250. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/empty-enum.wit.result +0 -5
  1251. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/empty-union.wit +0 -5
  1252. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/empty-union.wit.result +0 -5
  1253. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/empty-variant1.wit +0 -5
  1254. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/empty-variant1.wit.result +0 -5
  1255. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/import-export-overlap1.wit +0 -4
  1256. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/import-export-overlap1.wit.result +0 -5
  1257. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/import-export-overlap2.wit +0 -4
  1258. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/import-export-overlap2.wit.result +0 -5
  1259. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/import-export-overlap3.wit +0 -11
  1260. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/import-export-overlap3.wit.result +0 -6
  1261. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/invalid-md.wit.result +0 -5
  1262. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/invalid-type-reference.wit +0 -8
  1263. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/invalid-type-reference.wit.result +0 -5
  1264. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/invalid-type-reference2.wit +0 -4
  1265. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/invalid-type-reference2.wit.result +0 -5
  1266. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/invalid@filename.wit +0 -0
  1267. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/invalid@filename.wit.result +0 -4
  1268. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/pkg-cycle/deps/a1/root.wit +0 -3
  1269. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/pkg-cycle/root.wit +0 -3
  1270. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/pkg-cycle.wit.result +0 -5
  1271. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/pkg-cycle2/deps/a1/root.wit +0 -3
  1272. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/pkg-cycle2/deps/a2/root.wit +0 -3
  1273. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/pkg-cycle2/root.wit +0 -3
  1274. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/pkg-cycle2.wit.result +0 -5
  1275. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/undefined-typed.wit +0 -5
  1276. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/undefined-typed.wit.result +0 -5
  1277. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unknown-interface.wit +0 -5
  1278. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unknown-interface.wit.result +0 -5
  1279. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface1.wit +0 -5
  1280. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface1.wit.result +0 -5
  1281. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface2.wit +0 -6
  1282. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface2.wit.result +0 -5
  1283. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface3.wit +0 -5
  1284. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface3.wit.result +0 -5
  1285. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface4.wit +0 -5
  1286. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface4.wit.result +0 -5
  1287. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface5.wit +0 -5
  1288. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-interface5.wit.result +0 -5
  1289. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use1.wit +0 -5
  1290. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use1.wit.result +0 -5
  1291. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use10/bar.wit +0 -3
  1292. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use10.wit.result +0 -8
  1293. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use11/bar.wit +0 -3
  1294. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use11/foo.wit +0 -2
  1295. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use11.wit.result +0 -8
  1296. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use2.wit +0 -8
  1297. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use2.wit.result +0 -5
  1298. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use3.wit +0 -9
  1299. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use3.wit.result +0 -5
  1300. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use4.wit +0 -5
  1301. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use4.wit.result +0 -5
  1302. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use5.wit +0 -6
  1303. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use5.wit.result +0 -5
  1304. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use6.wit +0 -5
  1305. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use6.wit.result +0 -5
  1306. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use7.wit +0 -8
  1307. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use7.wit.result +0 -5
  1308. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use8.wit +0 -7
  1309. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use8.wit.result +0 -5
  1310. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use9.wit +0 -7
  1311. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/unresolved-use9.wit.result +0 -5
  1312. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-conflict.wit +0 -9
  1313. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-conflict.wit.result +0 -5
  1314. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-conflict2.wit +0 -11
  1315. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-conflict2.wit.result +0 -5
  1316. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-conflict3.wit +0 -11
  1317. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-conflict3.wit.result +0 -5
  1318. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-cycle1.wit +0 -5
  1319. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-cycle1.wit.result +0 -5
  1320. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-cycle2.wit +0 -5
  1321. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-cycle2.wit.result +0 -5
  1322. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-cycle3.wit +0 -6
  1323. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-cycle3.wit.result +0 -5
  1324. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-cycle4.wit +0 -13
  1325. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-cycle4.wit.result +0 -5
  1326. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-from-package-world.wit +0 -8
  1327. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-from-package-world.wit.result +0 -5
  1328. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-from-package-world2/bar.wit +0 -3
  1329. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-from-package-world2/foo.wit +0 -2
  1330. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/use-from-package-world2.wit.result +0 -8
  1331. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-implicit-import1.wit +0 -10
  1332. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-implicit-import1.wit.result +0 -6
  1333. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-implicit-import2.wit +0 -9
  1334. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-implicit-import2.wit.result +0 -5
  1335. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-implicit-import3.wit +0 -9
  1336. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-implicit-import3.wit.result +0 -5
  1337. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-interface-clash.wit +0 -2
  1338. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-interface-clash.wit.result +0 -5
  1339. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-fields.wit +0 -9
  1340. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-fields.wit.result +0 -5
  1341. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-fields2.wit +0 -6
  1342. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-fields2.wit.result +0 -5
  1343. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-fields3.wit +0 -6
  1344. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-fields3.wit.result +0 -5
  1345. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-fields4.wit +0 -11
  1346. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-fields4.wit.result +0 -8
  1347. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-import.wit +0 -6
  1348. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-same-import.wit.result +0 -5
  1349. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-top-level-func.wit +0 -4
  1350. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-top-level-func.wit.result +0 -5
  1351. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-top-level-func2.wit +0 -3
  1352. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/world-top-level-func2.wit.result +0 -5
  1353. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/worlds-same-fields5.wit +0 -16
  1354. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/parse-fail/worlds-same-fields5.wit.result +0 -9
  1355. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/shared-types.wit +0 -8
  1356. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/type-then-eof.wit +0 -3
  1357. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/types.wit +0 -59
  1358. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/use.wit +0 -33
  1359. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/wasi.wit +0 -176
  1360. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/world-diamond.wit +0 -20
  1361. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/world-top-level-funcs.wit +0 -7
  1362. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/worlds-with-types.wit +0 -32
  1363. data/ext/cargo-vendor/wit-parser-0.7.1/tests/ui/worlds.wit +0 -40
  1364. /data/ext/cargo-vendor/{cranelift-bforest-0.96.4 → cranelift-bforest-0.97.1}/LICENSE +0 -0
  1365. /data/ext/cargo-vendor/{cranelift-bforest-0.96.4 → cranelift-bforest-0.97.1}/README.md +0 -0
  1366. /data/ext/cargo-vendor/{cranelift-bforest-0.96.4 → cranelift-bforest-0.97.1}/src/lib.rs +0 -0
  1367. /data/ext/cargo-vendor/{cranelift-bforest-0.96.4 → cranelift-bforest-0.97.1}/src/map.rs +0 -0
  1368. /data/ext/cargo-vendor/{cranelift-bforest-0.96.4 → cranelift-bforest-0.97.1}/src/node.rs +0 -0
  1369. /data/ext/cargo-vendor/{cranelift-bforest-0.96.4 → cranelift-bforest-0.97.1}/src/path.rs +0 -0
  1370. /data/ext/cargo-vendor/{cranelift-bforest-0.96.4 → cranelift-bforest-0.97.1}/src/pool.rs +0 -0
  1371. /data/ext/cargo-vendor/{cranelift-bforest-0.96.4 → cranelift-bforest-0.97.1}/src/set.rs +0 -0
  1372. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/LICENSE +0 -0
  1373. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/README.md +0 -0
  1374. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/build.rs +0 -0
  1375. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/alias_analysis.rs +0 -0
  1376. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/binemit/mod.rs +0 -0
  1377. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/binemit/stack_map.rs +0 -0
  1378. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/bitset.rs +0 -0
  1379. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/cfg_printer.rs +0 -0
  1380. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/constant_hash.rs +0 -0
  1381. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/context.rs +0 -0
  1382. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ctxhash.rs +0 -0
  1383. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/cursor.rs +0 -0
  1384. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/data_value.rs +0 -0
  1385. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/dbg.rs +0 -0
  1386. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/dce.rs +0 -0
  1387. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/dominator_tree.rs +0 -0
  1388. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/egraph/cost.rs +0 -0
  1389. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/egraph/domtree.rs +0 -0
  1390. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/egraph/elaborate.rs +0 -0
  1391. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/egraph.rs +0 -0
  1392. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/flowgraph.rs +0 -0
  1393. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/fx.rs +0 -0
  1394. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/incremental_cache.rs +0 -0
  1395. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/inst_predicates.rs +0 -0
  1396. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/atomic_rmw_op.rs +0 -0
  1397. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/builder.rs +0 -0
  1398. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/condcodes.rs +0 -0
  1399. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/constant.rs +0 -0
  1400. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/dfg.rs +0 -0
  1401. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/dynamic_type.rs +0 -0
  1402. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/entities.rs +0 -0
  1403. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/extfunc.rs +0 -0
  1404. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/extname.rs +0 -0
  1405. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/function.rs +0 -0
  1406. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/globalvalue.rs +0 -0
  1407. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/immediates.rs +0 -0
  1408. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/instructions.rs +0 -0
  1409. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/jumptable.rs +0 -0
  1410. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/known_symbol.rs +0 -0
  1411. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/layout.rs +0 -0
  1412. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/libcall.rs +0 -0
  1413. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/memflags.rs +0 -0
  1414. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/mod.rs +0 -0
  1415. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/progpoint.rs +0 -0
  1416. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/sourceloc.rs +0 -0
  1417. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/stackslot.rs +0 -0
  1418. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/table.rs +0 -0
  1419. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/ir/types.rs +0 -0
  1420. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/aarch64/inst/args.rs +0 -0
  1421. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/aarch64/inst/regs.rs +0 -0
  1422. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/aarch64/inst/unwind/systemv.rs +0 -0
  1423. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/aarch64/inst/unwind.rs +0 -0
  1424. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/aarch64/inst_neon.isle +0 -0
  1425. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/aarch64/lower/isle/generated_code.rs +0 -0
  1426. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/aarch64/lower.rs +0 -0
  1427. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/aarch64/lower_dynamic_neon.isle +0 -0
  1428. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/aarch64/settings.rs +0 -0
  1429. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/call_conv.rs +0 -0
  1430. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/riscv64/inst/unwind.rs +0 -0
  1431. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/riscv64/lower/isle/generated_code.rs +0 -0
  1432. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/riscv64/lower.rs +0 -0
  1433. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/riscv64/settings.rs +0 -0
  1434. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/s390x/inst/args.rs +0 -0
  1435. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/s390x/inst/imms.rs +0 -0
  1436. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/s390x/inst/regs.rs +0 -0
  1437. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/s390x/inst/unwind/systemv.rs +0 -0
  1438. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/s390x/inst/unwind.rs +0 -0
  1439. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/s390x/lower/isle/generated_code.rs +0 -0
  1440. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/s390x/lower/isle.rs +0 -0
  1441. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/s390x/lower.rs +0 -0
  1442. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/s390x/settings.rs +0 -0
  1443. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/unwind/systemv.rs +0 -0
  1444. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/unwind/winx64.rs +0 -0
  1445. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/unwind.rs +0 -0
  1446. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/x64/encoding/mod.rs +0 -0
  1447. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/x64/inst/regs.rs +0 -0
  1448. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/x64/inst/unwind/systemv.rs +0 -0
  1449. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/x64/inst/unwind/winx64.rs +0 -0
  1450. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/x64/inst/unwind.rs +0 -0
  1451. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/x64/lower/isle/generated_code.rs +0 -0
  1452. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/isa/x64/settings.rs +0 -0
  1453. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/iterators.rs +0 -0
  1454. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/legalizer/globalvalue.rs +0 -0
  1455. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/legalizer/mod.rs +0 -0
  1456. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/legalizer/table.rs +0 -0
  1457. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/lib.rs +0 -0
  1458. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/loop_analysis.rs +0 -0
  1459. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/machinst/blockorder.rs +0 -0
  1460. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/machinst/helpers.rs +0 -0
  1461. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/machinst/inst_common.rs +0 -0
  1462. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/machinst/valueregs.rs +0 -0
  1463. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/nan_canonicalization.rs +0 -0
  1464. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/README.md +0 -0
  1465. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/arithmetic.isle +0 -0
  1466. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/bitops.isle +0 -0
  1467. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/cprop.isle +0 -0
  1468. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/extends.isle +0 -0
  1469. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/generated_code.rs +0 -0
  1470. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/icmp.isle +0 -0
  1471. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/remat.isle +0 -0
  1472. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/selects.isle +0 -0
  1473. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts/shifts.isle +0 -0
  1474. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/opts.rs +0 -0
  1475. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/prelude_opt.isle +0 -0
  1476. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/print_errors.rs +0 -0
  1477. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/remove_constant_phis.rs +0 -0
  1478. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/result.rs +0 -0
  1479. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/scoped_hash_map.rs +0 -0
  1480. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/souper_harvest.rs +0 -0
  1481. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/timing.rs +0 -0
  1482. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/unionfind.rs +0 -0
  1483. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/unreachable_code.rs +0 -0
  1484. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/value_label.rs +0 -0
  1485. /data/ext/cargo-vendor/{cranelift-codegen-0.96.4 → cranelift-codegen-0.97.1}/src/write.rs +0 -0
  1486. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/LICENSE +0 -0
  1487. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/README.md +0 -0
  1488. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/cdsl/formats.rs +0 -0
  1489. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/cdsl/instructions.rs +0 -0
  1490. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/cdsl/isa.rs +0 -0
  1491. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/cdsl/mod.rs +0 -0
  1492. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/cdsl/operands.rs +0 -0
  1493. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/cdsl/settings.rs +0 -0
  1494. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/cdsl/types.rs +0 -0
  1495. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/cdsl/typevar.rs +0 -0
  1496. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/constant_hash.rs +0 -0
  1497. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/error.rs +0 -0
  1498. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/gen_inst.rs +0 -0
  1499. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/gen_settings.rs +0 -0
  1500. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/gen_types.rs +0 -0
  1501. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/isa/arm64.rs +0 -0
  1502. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/isa/mod.rs +0 -0
  1503. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/isa/riscv64.rs +0 -0
  1504. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/isa/s390x.rs +0 -0
  1505. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/lib.rs +0 -0
  1506. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/shared/entities.rs +0 -0
  1507. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/shared/formats.rs +0 -0
  1508. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/shared/immediates.rs +0 -0
  1509. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/shared/instructions.rs +0 -0
  1510. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/shared/mod.rs +0 -0
  1511. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/shared/types.rs +0 -0
  1512. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/srcgen.rs +0 -0
  1513. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.96.4 → cranelift-codegen-meta-0.97.1}/src/unique_table.rs +0 -0
  1514. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.96.4 → cranelift-codegen-shared-0.97.1}/LICENSE +0 -0
  1515. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.96.4 → cranelift-codegen-shared-0.97.1}/README.md +0 -0
  1516. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.96.4 → cranelift-codegen-shared-0.97.1}/src/constant_hash.rs +0 -0
  1517. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.96.4 → cranelift-codegen-shared-0.97.1}/src/constants.rs +0 -0
  1518. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.96.4 → cranelift-codegen-shared-0.97.1}/src/lib.rs +0 -0
  1519. /data/ext/cargo-vendor/{cranelift-control-0.96.4 → cranelift-control-0.97.1}/LICENSE +0 -0
  1520. /data/ext/cargo-vendor/{cranelift-control-0.96.4 → cranelift-control-0.97.1}/README.md +0 -0
  1521. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/LICENSE +0 -0
  1522. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/README.md +0 -0
  1523. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/src/boxed_slice.rs +0 -0
  1524. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/src/iter.rs +0 -0
  1525. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/src/keys.rs +0 -0
  1526. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/src/lib.rs +0 -0
  1527. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/src/map.rs +0 -0
  1528. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/src/packed_option.rs +0 -0
  1529. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/src/primary.rs +0 -0
  1530. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/src/set.rs +0 -0
  1531. /data/ext/cargo-vendor/{cranelift-entity-0.96.4 → cranelift-entity-0.97.1}/src/sparse.rs +0 -0
  1532. /data/ext/cargo-vendor/{cranelift-frontend-0.96.4 → cranelift-frontend-0.97.1}/LICENSE +0 -0
  1533. /data/ext/cargo-vendor/{cranelift-frontend-0.96.4 → cranelift-frontend-0.97.1}/README.md +0 -0
  1534. /data/ext/cargo-vendor/{cranelift-frontend-0.96.4 → cranelift-frontend-0.97.1}/src/frontend.rs +0 -0
  1535. /data/ext/cargo-vendor/{cranelift-frontend-0.96.4 → cranelift-frontend-0.97.1}/src/lib.rs +0 -0
  1536. /data/ext/cargo-vendor/{cranelift-frontend-0.96.4 → cranelift-frontend-0.97.1}/src/ssa.rs +0 -0
  1537. /data/ext/cargo-vendor/{cranelift-frontend-0.96.4 → cranelift-frontend-0.97.1}/src/switch.rs +0 -0
  1538. /data/ext/cargo-vendor/{cranelift-frontend-0.96.4 → cranelift-frontend-0.97.1}/src/variable.rs +0 -0
  1539. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/README.md +0 -0
  1540. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/build.rs +0 -0
  1541. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/fail/bad_converters.isle +0 -0
  1542. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/fail/bound_var_type_mismatch.isle +0 -0
  1543. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/fail/converter_extractor_constructor.isle +0 -0
  1544. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/fail/error1.isle +0 -0
  1545. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/fail/extra_parens.isle +0 -0
  1546. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/fail/impure_expression.isle +0 -0
  1547. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/fail/impure_rhs.isle +0 -0
  1548. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/fail/multi_internal_etor.isle +0 -0
  1549. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/fail/multi_prio.isle +0 -0
  1550. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/borrows.isle +0 -0
  1551. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/borrows_main.rs +0 -0
  1552. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/iflets.isle +0 -0
  1553. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/iflets_main.rs +0 -0
  1554. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/multi_constructor.isle +0 -0
  1555. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/multi_constructor_main.rs +0 -0
  1556. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/multi_extractor.isle +0 -0
  1557. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/multi_extractor_main.rs +0 -0
  1558. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/test.isle +0 -0
  1559. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/link/test_main.rs +0 -0
  1560. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/bound_var.isle +0 -0
  1561. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/construct_and_extract.isle +0 -0
  1562. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/conversions.isle +0 -0
  1563. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/conversions_extern.isle +0 -0
  1564. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/let.isle +0 -0
  1565. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/nodebug.isle +0 -0
  1566. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/prio_trie_bug.isle +0 -0
  1567. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/test2.isle +0 -0
  1568. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/test3.isle +0 -0
  1569. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/test4.isle +0 -0
  1570. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/pass/tutorial.isle +0 -0
  1571. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/run/iconst.isle +0 -0
  1572. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/run/iconst_main.rs +0 -0
  1573. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/run/let_shadowing.isle +0 -0
  1574. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/isle_examples/run/let_shadowing_main.rs +0 -0
  1575. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/ast.rs +0 -0
  1576. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/codegen.rs +0 -0
  1577. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/compile.rs +0 -0
  1578. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/error.rs +0 -0
  1579. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/lexer.rs +0 -0
  1580. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/lib.rs +0 -0
  1581. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/log.rs +0 -0
  1582. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/overlap.rs +0 -0
  1583. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/parser.rs +0 -0
  1584. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/sema.rs +0 -0
  1585. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/serialize.rs +0 -0
  1586. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/src/trie_again.rs +0 -0
  1587. /data/ext/cargo-vendor/{cranelift-isle-0.96.4 → cranelift-isle-0.97.1}/tests/run_tests.rs +0 -0
  1588. /data/ext/cargo-vendor/{cranelift-native-0.96.4 → cranelift-native-0.97.1}/LICENSE +0 -0
  1589. /data/ext/cargo-vendor/{cranelift-native-0.96.4 → cranelift-native-0.97.1}/README.md +0 -0
  1590. /data/ext/cargo-vendor/{cranelift-native-0.96.4 → cranelift-native-0.97.1}/src/riscv.rs +0 -0
  1591. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/LICENSE +0 -0
  1592. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/README.md +0 -0
  1593. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/src/code_translator/bounds_checks.rs +0 -0
  1594. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/src/environ/mod.rs +0 -0
  1595. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/src/heap.rs +0 -0
  1596. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/src/lib.rs +0 -0
  1597. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/src/module_translator.rs +0 -0
  1598. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/src/state.rs +0 -0
  1599. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/tests/wasm_testsuite.rs +0 -0
  1600. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/arith.wat +0 -0
  1601. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/br_table.wat +0 -0
  1602. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/call-simd.wat +0 -0
  1603. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/call.wat +0 -0
  1604. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/embenchen_fannkuch.wat +0 -0
  1605. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/embenchen_fasta.wat +0 -0
  1606. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/embenchen_ifs.wat +0 -0
  1607. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/embenchen_primes.wat +0 -0
  1608. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/fac-multi-value.wat +0 -0
  1609. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/fibonacci.wat +0 -0
  1610. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/globals.wat +0 -0
  1611. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/icall-simd.wat +0 -0
  1612. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/icall.wat +0 -0
  1613. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/if-reachability-translation-0.wat +0 -0
  1614. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/if-reachability-translation-1.wat +0 -0
  1615. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/if-reachability-translation-2.wat +0 -0
  1616. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/if-reachability-translation-3.wat +0 -0
  1617. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/if-reachability-translation-4.wat +0 -0
  1618. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/if-reachability-translation-5.wat +0 -0
  1619. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/if-reachability-translation-6.wat +0 -0
  1620. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/if-unreachable-else-params-2.wat +0 -0
  1621. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/if-unreachable-else-params.wat +0 -0
  1622. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/issue-1306-name-section-with-u32-max-function-index.wasm +0 -0
  1623. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/memory.wat +0 -0
  1624. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-0.wat +0 -0
  1625. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-1.wat +0 -0
  1626. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-10.wat +0 -0
  1627. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-11.wat +0 -0
  1628. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-12.wat +0 -0
  1629. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-13.wat +0 -0
  1630. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-14.wat +0 -0
  1631. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-15.wat +0 -0
  1632. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-16.wat +0 -0
  1633. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-17.wat +0 -0
  1634. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-2.wat +0 -0
  1635. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-3.wat +0 -0
  1636. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-4.wat +0 -0
  1637. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-5.wat +0 -0
  1638. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-6.wat +0 -0
  1639. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-7.wat +0 -0
  1640. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-8.wat +0 -0
  1641. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/multi-9.wat +0 -0
  1642. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/nullref.wat +0 -0
  1643. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/passive-data.wat +0 -0
  1644. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/pr2303.wat +0 -0
  1645. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/pr2559.wat +0 -0
  1646. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/ref-func-0.wat +0 -0
  1647. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/rust_fannkuch.wat +0 -0
  1648. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/select.wat +0 -0
  1649. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/simd-store.wat +0 -0
  1650. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/simd.wat +0 -0
  1651. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/table-copy.wat +0 -0
  1652. /data/ext/cargo-vendor/{cranelift-wasm-0.96.4 → cranelift-wasm-0.97.1}/wasmtests/unreachable_code.wat +0 -0
  1653. /data/ext/cargo-vendor/{file-per-thread-logger-0.1.6 → file-per-thread-logger-0.2.0}/LICENSE +0 -0
  1654. /data/ext/cargo-vendor/{file-per-thread-logger-0.1.6 → file-per-thread-logger-0.2.0}/README.md +0 -0
  1655. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/LICENSE +0 -0
  1656. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/README.md +0 -0
  1657. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/doc/DESIGN.md +0 -0
  1658. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/doc/TODO +0 -0
  1659. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/src/cfg.rs +0 -0
  1660. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/src/domtree.rs +0 -0
  1661. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/src/fuzzing/mod.rs +0 -0
  1662. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/src/indexset.rs +0 -0
  1663. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/src/ion/dump.rs +0 -0
  1664. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/src/ion/redundant_moves.rs +0 -0
  1665. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/src/ion/reg_traversal.rs +0 -0
  1666. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/src/postorder.rs +0 -0
  1667. /data/ext/cargo-vendor/{regalloc2-0.8.1 → regalloc2-0.9.2}/src/ssa.rs +0 -0
  1668. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.0}/LICENSE +0 -0
  1669. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.0}/README.md +0 -0
  1670. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.0}/src/clocks.rs +0 -0
  1671. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.0}/src/file.rs +0 -0
  1672. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.0}/src/net.rs +0 -0
  1673. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.0}/src/sched/unix.rs +0 -0
  1674. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.0}/src/sched/windows.rs +0 -0
  1675. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.0}/src/sched.rs +0 -0
  1676. /data/ext/cargo-vendor/{wasi-cap-std-sync-9.0.4 → wasi-cap-std-sync-10.0.0}/src/stdio.rs +0 -0
  1677. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/LICENSE +0 -0
  1678. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/README.md +0 -0
  1679. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/README.md +0 -0
  1680. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/docs/README.md +0 -0
  1681. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/README.md +0 -0
  1682. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/docs.md +0 -0
  1683. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/typenames.witx +0 -0
  1684. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_args.witx +0 -0
  1685. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_clock.witx +0 -0
  1686. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_environ.witx +0 -0
  1687. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_fd.witx +0 -0
  1688. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_path.witx +0 -0
  1689. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_poll.witx +0 -0
  1690. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_proc.witx +0 -0
  1691. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_random.witx +0 -0
  1692. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_sched.witx +0 -0
  1693. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_sock.witx +0 -0
  1694. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/old/snapshot_0/docs.md +0 -0
  1695. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/old/snapshot_0/witx/typenames.witx +0 -0
  1696. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/old/snapshot_0/witx/wasi_unstable.witx +0 -0
  1697. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/snapshot/docs.html +0 -0
  1698. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/snapshot/docs.md +0 -0
  1699. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/snapshot/witx/typenames.witx +0 -0
  1700. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/phases/snapshot/witx/wasi_snapshot_preview1.witx +0 -0
  1701. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/proposal-template/README.md +0 -0
  1702. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/proposals/README.md +0 -0
  1703. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/snapshots/README.md +0 -0
  1704. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/WASI/standard/README.md +0 -0
  1705. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/build.rs +0 -0
  1706. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/clocks.rs +0 -0
  1707. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/dir.rs +0 -0
  1708. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/error.rs +0 -0
  1709. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/lib.rs +0 -0
  1710. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/pipe.rs +0 -0
  1711. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/random.rs +0 -0
  1712. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/sched/subscription.rs +0 -0
  1713. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/sched.rs +0 -0
  1714. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/snapshots/mod.rs +0 -0
  1715. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/snapshots/preview_0.rs +0 -0
  1716. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/snapshots/preview_1/error.rs +0 -0
  1717. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/string_array.rs +0 -0
  1718. /data/ext/cargo-vendor/{wasi-common-9.0.4 → wasi-common-10.0.0}/src/table.rs +0 -0
  1719. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasm-encoder-0.29.0}/LICENSE +0 -0
  1720. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmparser-0.107.0}/LICENSE +0 -0
  1721. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/README.md +0 -0
  1722. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/examples/simple.rs +0 -0
  1723. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/limits.rs +0 -0
  1724. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/component/aliases.rs +0 -0
  1725. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/component/names.rs +0 -0
  1726. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/component/start.rs +0 -0
  1727. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/component.rs +0 -0
  1728. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/code.rs +0 -0
  1729. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/custom.rs +0 -0
  1730. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/data.rs +0 -0
  1731. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/elements.rs +0 -0
  1732. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/exports.rs +0 -0
  1733. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/functions.rs +0 -0
  1734. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/globals.rs +0 -0
  1735. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/imports.rs +0 -0
  1736. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/init.rs +0 -0
  1737. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/memories.rs +0 -0
  1738. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/names.rs +0 -0
  1739. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/operators.rs +0 -0
  1740. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/tables.rs +0 -0
  1741. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers/core/tags.rs +0 -0
  1742. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/readers.rs +0 -0
  1743. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/resources.rs +0 -0
  1744. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/src/validator/func.rs +0 -0
  1745. /data/ext/cargo-vendor/{wasmparser-0.103.0 → wasmparser-0.107.0}/tests/big-module.rs +0 -0
  1746. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmparser-0.111.0}/LICENSE +0 -0
  1747. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmprinter-0.2.63}/LICENSE +0 -0
  1748. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-10.0.0}/LICENSE +0 -0
  1749. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/README.md +0 -0
  1750. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/code.rs +0 -0
  1751. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/component/func/host.rs +0 -0
  1752. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/component/func/options.rs +0 -0
  1753. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/component/func/typed.rs +0 -0
  1754. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/component/func.rs +0 -0
  1755. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/component/linker.rs +0 -0
  1756. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/component/storage.rs +0 -0
  1757. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/component/store.rs +0 -0
  1758. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/component/types.rs +0 -0
  1759. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/component/values.rs +0 -0
  1760. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/limits.rs +0 -0
  1761. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/module/registry.rs +0 -0
  1762. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/profiling.rs +0 -0
  1763. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/signatures.rs +0 -0
  1764. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/store/data.rs +0 -0
  1765. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/trampoline/memory.rs +0 -0
  1766. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/trampoline/table.rs +0 -0
  1767. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/trampoline.rs +0 -0
  1768. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/trap.rs +0 -0
  1769. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/unix.rs +0 -0
  1770. /data/ext/cargo-vendor/{wasmtime-9.0.4 → wasmtime-10.0.0}/src/windows.rs +0 -0
  1771. /data/ext/cargo-vendor/{wasmtime-asm-macros-9.0.4 → wasmtime-asm-macros-10.0.0}/src/lib.rs +0 -0
  1772. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-cache-10.0.0}/LICENSE +0 -0
  1773. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.0}/build.rs +0 -0
  1774. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.0}/src/config/tests.rs +0 -0
  1775. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.0}/src/config.rs +0 -0
  1776. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.0}/src/lib.rs +0 -0
  1777. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.0}/src/tests.rs +0 -0
  1778. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.0}/src/worker/tests/system_time_stub.rs +0 -0
  1779. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.0}/src/worker/tests.rs +0 -0
  1780. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.0}/src/worker.rs +0 -0
  1781. /data/ext/cargo-vendor/{wasmtime-cache-9.0.4 → wasmtime-cache-10.0.0}/tests/cache_write_default_config.rs +0 -0
  1782. /data/ext/cargo-vendor/{wasmtime-component-macro-9.0.4 → wasmtime-component-macro-10.0.0}/src/component.rs +0 -0
  1783. /data/ext/cargo-vendor/{wasmtime-component-macro-9.0.4 → wasmtime-component-macro-10.0.0}/src/lib.rs +0 -0
  1784. /data/ext/cargo-vendor/{wasmtime-component-util-9.0.4 → wasmtime-component-util-10.0.0}/src/lib.rs +0 -0
  1785. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-cranelift-10.0.0}/LICENSE +0 -0
  1786. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/SECURITY.md +0 -0
  1787. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/builder.rs +0 -0
  1788. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/compiler/component.rs +0 -0
  1789. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/gc.rs +0 -0
  1790. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/transform/address_transform.rs +0 -0
  1791. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/transform/attr.rs +0 -0
  1792. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/transform/expression.rs +0 -0
  1793. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/transform/line_program.rs +0 -0
  1794. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/transform/mod.rs +0 -0
  1795. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/transform/range_info_builder.rs +0 -0
  1796. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/transform/refs.rs +0 -0
  1797. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/transform/unit.rs +0 -0
  1798. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/transform/utils.rs +0 -0
  1799. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug/write_debuginfo.rs +0 -0
  1800. /data/ext/cargo-vendor/{wasmtime-cranelift-9.0.4 → wasmtime-cranelift-10.0.0}/src/debug.rs +0 -0
  1801. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-9.0.4 → wasmtime-cranelift-shared-10.0.0}/src/compiled_function.rs +0 -0
  1802. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-9.0.4 → wasmtime-cranelift-shared-10.0.0}/src/isa_builder.rs +0 -0
  1803. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-9.0.4 → wasmtime-cranelift-shared-10.0.0}/src/obj.rs +0 -0
  1804. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-environ-10.0.0}/LICENSE +0 -0
  1805. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/examples/factc.rs +0 -0
  1806. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/address_map.rs +0 -0
  1807. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/builtin.rs +0 -0
  1808. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/compilation.rs +0 -0
  1809. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/component/dfg.rs +0 -0
  1810. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/component/info.rs +0 -0
  1811. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/component/translate/adapt.rs +0 -0
  1812. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/component/vmcomponent_offsets.rs +0 -0
  1813. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/component.rs +0 -0
  1814. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/fact/core_types.rs +0 -0
  1815. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/fact/signature.rs +0 -0
  1816. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/fact/trampoline.rs +0 -0
  1817. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/fact/transcode.rs +0 -0
  1818. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/fact/traps.rs +0 -0
  1819. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/lib.rs +0 -0
  1820. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/module_types.rs +0 -0
  1821. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/obj.rs +0 -0
  1822. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/ref_bits.rs +0 -0
  1823. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/scopevec.rs +0 -0
  1824. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/stack_map.rs +0 -0
  1825. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/tunables.rs +0 -0
  1826. /data/ext/cargo-vendor/{wasmtime-environ-9.0.4 → wasmtime-environ-10.0.0}/src/vmoffsets.rs +0 -0
  1827. /data/ext/cargo-vendor/{wasmtime-types-9.0.4 → wasmtime-fiber-10.0.0}/LICENSE +0 -0
  1828. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.0}/build.rs +0 -0
  1829. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.0}/src/unix/aarch64.rs +0 -0
  1830. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.0}/src/unix/arm.rs +0 -0
  1831. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.0}/src/unix/riscv64.rs +0 -0
  1832. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.0}/src/unix/s390x.S +0 -0
  1833. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.0}/src/unix/x86.rs +0 -0
  1834. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.0}/src/unix/x86_64.rs +0 -0
  1835. /data/ext/cargo-vendor/{wasmtime-fiber-9.0.4 → wasmtime-fiber-10.0.0}/src/windows.c +0 -0
  1836. /data/ext/cargo-vendor/{wasmtime-wasi-9.0.4 → wasmtime-jit-10.0.0}/LICENSE +0 -0
  1837. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.0}/src/code_memory.rs +0 -0
  1838. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.0}/src/debug.rs +0 -0
  1839. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.0}/src/demangling.rs +0 -0
  1840. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.0}/src/unwind/miri.rs +0 -0
  1841. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.0}/src/unwind/systemv.rs +0 -0
  1842. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.0}/src/unwind/winx64.rs +0 -0
  1843. /data/ext/cargo-vendor/{wasmtime-jit-9.0.4 → wasmtime-jit-10.0.0}/src/unwind.rs +0 -0
  1844. /data/ext/cargo-vendor/{wasmtime-jit-debug-9.0.4 → wasmtime-jit-debug-10.0.0}/README.md +0 -0
  1845. /data/ext/cargo-vendor/{wasmtime-jit-debug-9.0.4 → wasmtime-jit-debug-10.0.0}/src/gdb_jit_int.rs +0 -0
  1846. /data/ext/cargo-vendor/{wasmtime-jit-debug-9.0.4 → wasmtime-jit-debug-10.0.0}/src/lib.rs +0 -0
  1847. /data/ext/cargo-vendor/{wasmtime-jit-debug-9.0.4 → wasmtime-jit-debug-10.0.0}/src/perf_jitdump.rs +0 -0
  1848. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-9.0.4 → wasmtime-jit-icache-coherence-10.0.0}/src/lib.rs +0 -0
  1849. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-9.0.4 → wasmtime-jit-icache-coherence-10.0.0}/src/libc.rs +0 -0
  1850. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-9.0.4 → wasmtime-jit-icache-coherence-10.0.0}/src/miri.rs +0 -0
  1851. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-9.0.4 → wasmtime-jit-icache-coherence-10.0.0}/src/win.rs +0 -0
  1852. /data/ext/cargo-vendor/{wiggle-9.0.4 → wasmtime-runtime-10.0.0}/LICENSE +0 -0
  1853. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/build.rs +0 -0
  1854. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/component/transcode.rs +0 -0
  1855. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/export.rs +0 -0
  1856. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/helpers.c +0 -0
  1857. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/imports.rs +0 -0
  1858. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/instance/allocator/pooling/index_allocator.rs +0 -0
  1859. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/instance/allocator/pooling/unix.rs +0 -0
  1860. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/instance/allocator/pooling/windows.rs +0 -0
  1861. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/mmap.rs +0 -0
  1862. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/mmap_vec.rs +0 -0
  1863. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/module_id.rs +0 -0
  1864. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/parking_spot.rs +0 -0
  1865. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/store_box.rs +0 -0
  1866. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/trampolines/aarch64.rs +0 -0
  1867. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/trampolines/riscv64.rs +0 -0
  1868. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/trampolines/s390x.S +0 -0
  1869. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/trampolines/s390x.rs +0 -0
  1870. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/trampolines/x86_64.rs +0 -0
  1871. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/trampolines.rs +0 -0
  1872. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/traphandlers/backtrace/aarch64.rs +0 -0
  1873. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/traphandlers/backtrace/riscv64.rs +0 -0
  1874. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/traphandlers/backtrace/s390x.rs +0 -0
  1875. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/traphandlers/backtrace/x86_64.rs +0 -0
  1876. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/traphandlers/backtrace.rs +0 -0
  1877. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/traphandlers/macos.rs +0 -0
  1878. /data/ext/cargo-vendor/{wasmtime-runtime-9.0.4 → wasmtime-runtime-10.0.0}/src/traphandlers/windows.rs +0 -0
  1879. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wasmtime-types-10.0.1}/LICENSE +0 -0
  1880. /data/ext/cargo-vendor/{wasmtime-types-9.0.4 → wasmtime-types-10.0.1}/src/error.rs +0 -0
  1881. /data/ext/cargo-vendor/{wiggle-macro-9.0.4 → wasmtime-wasi-10.0.0}/LICENSE +0 -0
  1882. /data/ext/cargo-vendor/{wasmtime-wasi-9.0.4 → wasmtime-wasi-10.0.0}/README.md +0 -0
  1883. /data/ext/cargo-vendor/{wasmtime-wasi-9.0.4 → wasmtime-wasi-10.0.0}/build.rs +0 -0
  1884. /data/ext/cargo-vendor/{wasmtime-winch-9.0.4 → wasmtime-winch-10.0.0}/LICENSE +0 -0
  1885. /data/ext/cargo-vendor/{wasmtime-winch-9.0.4 → wasmtime-winch-10.0.0}/src/builder.rs +0 -0
  1886. /data/ext/cargo-vendor/{wasmtime-winch-9.0.4 → wasmtime-winch-10.0.0}/src/lib.rs +0 -0
  1887. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-9.0.4 → wasmtime-wit-bindgen-10.0.0}/src/rust.rs +0 -0
  1888. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-9.0.4 → wasmtime-wit-bindgen-10.0.0}/src/source.rs +0 -0
  1889. /data/ext/cargo-vendor/{wiggle-9.0.4 → wiggle-10.0.0}/src/borrow.rs +0 -0
  1890. /data/ext/cargo-vendor/{wiggle-9.0.4 → wiggle-10.0.0}/src/error.rs +0 -0
  1891. /data/ext/cargo-vendor/{wiggle-9.0.4 → wiggle-10.0.0}/src/guest_type.rs +0 -0
  1892. /data/ext/cargo-vendor/{wiggle-9.0.4 → wiggle-10.0.0}/src/lib.rs +0 -0
  1893. /data/ext/cargo-vendor/{wiggle-9.0.4 → wiggle-10.0.0}/src/region.rs +0 -0
  1894. /data/ext/cargo-vendor/{wiggle-9.0.4 → wiggle-10.0.0}/src/wasmtime.rs +0 -0
  1895. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/README.md +0 -0
  1896. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/codegen_settings.rs +0 -0
  1897. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/config.rs +0 -0
  1898. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/funcs.rs +0 -0
  1899. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/lib.rs +0 -0
  1900. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/lifetimes.rs +0 -0
  1901. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/module_trait.rs +0 -0
  1902. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/names.rs +0 -0
  1903. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/types/error.rs +0 -0
  1904. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/types/flags.rs +0 -0
  1905. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/types/handle.rs +0 -0
  1906. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/types/mod.rs +0 -0
  1907. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/types/record.rs +0 -0
  1908. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/types/variant.rs +0 -0
  1909. /data/ext/cargo-vendor/{wiggle-generate-9.0.4 → wiggle-generate-10.0.0}/src/wasmtime.rs +0 -0
  1910. /data/ext/cargo-vendor/{winch-codegen-0.7.4 → winch-codegen-0.8.0}/LICENSE +0 -0
  1911. /data/ext/cargo-vendor/{winch-codegen-0.7.4 → winch-codegen-0.8.0}/build.rs +0 -0
  1912. /data/ext/cargo-vendor/{winch-codegen-0.7.4 → winch-codegen-0.8.0}/src/isa/aarch64/address.rs +0 -0
  1913. /data/ext/cargo-vendor/{winch-codegen-0.7.4 → winch-codegen-0.8.0}/src/isa/reg.rs +0 -0
  1914. /data/ext/cargo-vendor/{winch-codegen-0.7.4 → winch-codegen-0.8.0}/src/regset.rs +0 -0
  1915. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/README.md +0 -0
  1916. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/src/abi.rs +0 -0
  1917. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/src/ast/toposort.rs +0 -0
  1918. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/src/sizealign.rs +0 -0
  1919. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/alias-no-type.wit +0 -0
  1920. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/async.wit.result +0 -0
  1921. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/async1.wit.result +0 -0
  1922. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/bad-list.wit +0 -0
  1923. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/bad-list.wit.result +0 -0
  1924. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/dangling-type.wit +0 -0
  1925. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/dangling-type.wit.result +0 -0
  1926. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/invalid-md.md +0 -0
  1927. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/invalid-toplevel.wit +0 -0
  1928. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/invalid-toplevel.wit.result +0 -0
  1929. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/keyword.wit +0 -0
  1930. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/keyword.wit.result +0 -0
  1931. /data/ext/cargo-vendor/{wit-parser-0.7.1/tests/ui/empty.wit → wit-parser-0.8.0/tests/ui/parse-fail/missing-package.wit} +0 -0
  1932. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/unresolved-use10/foo.wit +0 -0
  1933. /data/ext/cargo-vendor/{wit-parser-0.7.1 → wit-parser-0.8.0}/tests/ui/parse-fail/unterminated-string.wit.result +0 -0
@@ -0,0 +1,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
+ }