wasmtime 15.0.1 → 16.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1212) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +83 -103
  3. data/ext/Cargo.toml +6 -6
  4. data/ext/cargo-vendor/cranelift-bforest-0.103.0/.cargo-checksum.json +1 -0
  5. data/ext/cargo-vendor/cranelift-bforest-0.103.0/Cargo.toml +40 -0
  6. data/ext/cargo-vendor/cranelift-bforest-0.103.0/src/lib.rs +183 -0
  7. data/ext/cargo-vendor/cranelift-codegen-0.103.0/.cargo-checksum.json +1 -0
  8. data/ext/cargo-vendor/cranelift-codegen-0.103.0/Cargo.toml +175 -0
  9. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/binemit/mod.rs +171 -0
  10. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/egraph/cost.rs +171 -0
  11. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/egraph/elaborate.rs +750 -0
  12. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/egraph.rs +703 -0
  13. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/ir/dfg.rs +1735 -0
  14. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/ir/pcc.rs +1682 -0
  15. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isa/aarch64/lower/isle.rs +874 -0
  16. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isa/riscv64/inst/mod.rs +2041 -0
  17. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isa/riscv64/inst.isle +2928 -0
  18. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isa/riscv64/lower.isle +2864 -0
  19. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isa/s390x/lower/isle.rs +1029 -0
  20. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isa/x64/lower/isle.rs +1064 -0
  21. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isa/x64/pcc.rs +916 -0
  22. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isle_prelude.rs +977 -0
  23. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/lib.rs +106 -0
  24. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/machinst/isle.rs +896 -0
  25. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/arithmetic.isle +152 -0
  26. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/cprop.isle +237 -0
  27. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/icmp.isle +199 -0
  28. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/selects.isle +76 -0
  29. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts.rs +172 -0
  30. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/prelude.isle +649 -0
  31. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/timing.rs +297 -0
  32. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/unionfind.rs +75 -0
  33. data/ext/cargo-vendor/cranelift-codegen-meta-0.103.0/.cargo-checksum.json +1 -0
  34. data/ext/cargo-vendor/cranelift-codegen-meta-0.103.0/Cargo.toml +35 -0
  35. data/ext/cargo-vendor/cranelift-codegen-shared-0.103.0/.cargo-checksum.json +1 -0
  36. data/ext/cargo-vendor/cranelift-codegen-shared-0.103.0/Cargo.toml +22 -0
  37. data/ext/cargo-vendor/cranelift-codegen-shared-0.103.0/src/lib.rs +10 -0
  38. data/ext/cargo-vendor/cranelift-control-0.103.0/.cargo-checksum.json +1 -0
  39. data/ext/cargo-vendor/cranelift-control-0.103.0/Cargo.toml +30 -0
  40. data/ext/cargo-vendor/cranelift-entity-0.103.0/.cargo-checksum.json +1 -0
  41. data/ext/cargo-vendor/cranelift-entity-0.103.0/Cargo.toml +50 -0
  42. data/ext/cargo-vendor/cranelift-entity-0.103.0/src/lib.rs +317 -0
  43. data/ext/cargo-vendor/cranelift-entity-0.103.0/src/primary.rs +516 -0
  44. data/ext/cargo-vendor/cranelift-entity-0.103.0/src/unsigned.rs +71 -0
  45. data/ext/cargo-vendor/cranelift-frontend-0.103.0/.cargo-checksum.json +1 -0
  46. data/ext/cargo-vendor/cranelift-frontend-0.103.0/Cargo.toml +68 -0
  47. data/ext/cargo-vendor/cranelift-frontend-0.103.0/src/lib.rs +189 -0
  48. data/ext/cargo-vendor/cranelift-isle-0.103.0/.cargo-checksum.json +1 -0
  49. data/ext/cargo-vendor/cranelift-isle-0.103.0/Cargo.toml +46 -0
  50. data/ext/cargo-vendor/cranelift-isle-0.103.0/isle_examples/link/multi_constructor_main.rs +88 -0
  51. data/ext/cargo-vendor/cranelift-isle-0.103.0/isle_examples/link/multi_extractor_main.rs +63 -0
  52. data/ext/cargo-vendor/cranelift-isle-0.103.0/src/codegen.rs +886 -0
  53. data/ext/cargo-vendor/cranelift-native-0.103.0/.cargo-checksum.json +1 -0
  54. data/ext/cargo-vendor/cranelift-native-0.103.0/Cargo.toml +43 -0
  55. data/ext/cargo-vendor/cranelift-native-0.103.0/src/lib.rs +184 -0
  56. data/ext/cargo-vendor/cranelift-wasm-0.103.0/.cargo-checksum.json +1 -0
  57. data/ext/cargo-vendor/cranelift-wasm-0.103.0/Cargo.toml +106 -0
  58. data/ext/cargo-vendor/cranelift-wasm-0.103.0/src/environ/dummy.rs +953 -0
  59. data/ext/cargo-vendor/cranelift-wasm-0.103.0/src/lib.rs +62 -0
  60. data/ext/cargo-vendor/cranelift-wasm-0.103.0/src/translation_utils.rs +89 -0
  61. data/ext/cargo-vendor/wasi-cap-std-sync-16.0.0/.cargo-checksum.json +1 -0
  62. data/ext/cargo-vendor/wasi-cap-std-sync-16.0.0/Cargo.toml +102 -0
  63. data/ext/cargo-vendor/wasi-common-16.0.0/.cargo-checksum.json +1 -0
  64. data/ext/cargo-vendor/wasi-common-16.0.0/Cargo.toml +131 -0
  65. data/ext/cargo-vendor/wasi-common-16.0.0/src/lib.rs +76 -0
  66. data/ext/cargo-vendor/wasi-common-16.0.0/src/snapshots/preview_1.rs +1492 -0
  67. data/ext/cargo-vendor/wasmtime-16.0.0/.cargo-checksum.json +1 -0
  68. data/ext/cargo-vendor/wasmtime-16.0.0/Cargo.toml +211 -0
  69. data/ext/cargo-vendor/wasmtime-16.0.0/src/compiler.rs +682 -0
  70. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/component.rs +505 -0
  71. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/func/typed.rs +2400 -0
  72. data/ext/cargo-vendor/wasmtime-16.0.0/src/config.rs +2422 -0
  73. data/ext/cargo-vendor/wasmtime-16.0.0/src/func.rs +2391 -0
  74. data/ext/cargo-vendor/wasmtime-16.0.0/src/lib.rs +520 -0
  75. data/ext/cargo-vendor/wasmtime-16.0.0/src/memory.rs +998 -0
  76. data/ext/cargo-vendor/wasmtime-16.0.0/src/module.rs +1370 -0
  77. data/ext/cargo-vendor/wasmtime-16.0.0/src/stack.rs +73 -0
  78. data/ext/cargo-vendor/wasmtime-16.0.0/src/v128.rs +122 -0
  79. data/ext/cargo-vendor/wasmtime-asm-macros-16.0.0/.cargo-checksum.json +1 -0
  80. data/ext/cargo-vendor/wasmtime-asm-macros-16.0.0/Cargo.toml +22 -0
  81. data/ext/cargo-vendor/wasmtime-cache-16.0.0/.cargo-checksum.json +1 -0
  82. data/ext/cargo-vendor/wasmtime-cache-16.0.0/Cargo.toml +81 -0
  83. data/ext/cargo-vendor/wasmtime-cache-16.0.0/src/lib.rs +235 -0
  84. data/ext/cargo-vendor/wasmtime-cache-16.0.0/src/worker.rs +890 -0
  85. data/ext/cargo-vendor/wasmtime-component-macro-16.0.0/.cargo-checksum.json +1 -0
  86. data/ext/cargo-vendor/wasmtime-component-macro-16.0.0/Cargo.toml +67 -0
  87. data/ext/cargo-vendor/wasmtime-component-util-16.0.0/.cargo-checksum.json +1 -0
  88. data/ext/cargo-vendor/wasmtime-component-util-16.0.0/Cargo.toml +25 -0
  89. data/ext/cargo-vendor/wasmtime-cranelift-16.0.0/.cargo-checksum.json +1 -0
  90. data/ext/cargo-vendor/wasmtime-cranelift-16.0.0/Cargo.toml +112 -0
  91. data/ext/cargo-vendor/wasmtime-cranelift-16.0.0/src/compiler/component.rs +959 -0
  92. data/ext/cargo-vendor/wasmtime-cranelift-16.0.0/src/compiler.rs +1317 -0
  93. data/ext/cargo-vendor/wasmtime-cranelift-16.0.0/src/debug/transform/expression.rs +1252 -0
  94. data/ext/cargo-vendor/wasmtime-cranelift-16.0.0/src/debug/transform/simulate.rs +410 -0
  95. data/ext/cargo-vendor/wasmtime-cranelift-16.0.0/src/debug.rs +18 -0
  96. data/ext/cargo-vendor/wasmtime-cranelift-16.0.0/src/func_environ.rs +2750 -0
  97. data/ext/cargo-vendor/wasmtime-cranelift-shared-16.0.0/.cargo-checksum.json +1 -0
  98. data/ext/cargo-vendor/wasmtime-cranelift-shared-16.0.0/Cargo.toml +71 -0
  99. data/ext/cargo-vendor/wasmtime-environ-16.0.0/.cargo-checksum.json +1 -0
  100. data/ext/cargo-vendor/wasmtime-environ-16.0.0/Cargo.lock +660 -0
  101. data/ext/cargo-vendor/wasmtime-environ-16.0.0/Cargo.toml +125 -0
  102. data/ext/cargo-vendor/wasmtime-environ-16.0.0/src/compilation.rs +402 -0
  103. data/ext/cargo-vendor/wasmtime-environ-16.0.0/src/component/compiler.rs +47 -0
  104. data/ext/cargo-vendor/wasmtime-environ-16.0.0/src/component/translate.rs +951 -0
  105. data/ext/cargo-vendor/wasmtime-environ-16.0.0/src/component/types.rs +1876 -0
  106. data/ext/cargo-vendor/wasmtime-environ-16.0.0/src/lib.rs +59 -0
  107. data/ext/cargo-vendor/wasmtime-environ-16.0.0/src/module.rs +1075 -0
  108. data/ext/cargo-vendor/wasmtime-environ-16.0.0/src/module_environ.rs +892 -0
  109. data/ext/cargo-vendor/wasmtime-environ-16.0.0/src/module_types.rs +120 -0
  110. data/ext/cargo-vendor/wasmtime-environ-16.0.0/src/scopevec.rs +78 -0
  111. data/ext/cargo-vendor/wasmtime-fiber-16.0.0/.cargo-checksum.json +1 -0
  112. data/ext/cargo-vendor/wasmtime-fiber-16.0.0/Cargo.toml +63 -0
  113. data/ext/cargo-vendor/wasmtime-fiber-16.0.0/src/lib.rs +328 -0
  114. data/ext/cargo-vendor/wasmtime-fiber-16.0.0/src/unix.rs +265 -0
  115. data/ext/cargo-vendor/wasmtime-fiber-16.0.0/src/windows.c +9 -0
  116. data/ext/cargo-vendor/wasmtime-jit-16.0.0/.cargo-checksum.json +1 -0
  117. data/ext/cargo-vendor/wasmtime-jit-16.0.0/Cargo.toml +125 -0
  118. data/ext/cargo-vendor/wasmtime-jit-16.0.0/src/code_memory.rs +319 -0
  119. data/ext/cargo-vendor/wasmtime-jit-16.0.0/src/instantiate.rs +772 -0
  120. data/ext/cargo-vendor/wasmtime-jit-16.0.0/src/lib.rs +21 -0
  121. data/ext/cargo-vendor/wasmtime-jit-debug-16.0.0/.cargo-checksum.json +1 -0
  122. data/ext/cargo-vendor/wasmtime-jit-debug-16.0.0/Cargo.toml +67 -0
  123. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-16.0.0/.cargo-checksum.json +1 -0
  124. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-16.0.0/Cargo.toml +46 -0
  125. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/.cargo-checksum.json +1 -0
  126. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/Cargo.toml +139 -0
  127. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/build.rs +28 -0
  128. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/proptest-regressions/instance/allocator/pooling/memory_pool.txt +9 -0
  129. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/arch/aarch64.rs +120 -0
  130. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/arch/mod.rs +32 -0
  131. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/arch/riscv64.rs +88 -0
  132. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/arch/s390x.rs +61 -0
  133. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/arch/x86_64.rs +106 -0
  134. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/cow.rs +888 -0
  135. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/helpers.c +113 -0
  136. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/instance/allocator/pooling/memory_pool.rs +1005 -0
  137. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/instance/allocator/pooling/stack_pool.rs +242 -0
  138. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/instance/allocator/pooling/table_pool.rs +227 -0
  139. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/instance/allocator/pooling.rs +698 -0
  140. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/lib.rs +264 -0
  141. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/libcalls.rs +776 -0
  142. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/mmap.rs +214 -0
  143. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/mpk/enabled.rs +204 -0
  144. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/mpk/pkru.rs +102 -0
  145. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/sys/miri/mod.rs +10 -0
  146. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/sys/miri/traphandlers.rs +42 -0
  147. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/sys/miri/unwind.rs +17 -0
  148. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/sys/miri/vm.rs +63 -0
  149. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/sys/mod.rs +30 -0
  150. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/sys/unix/machports.rs +487 -0
  151. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/sys/unix/macos_traphandlers.rs +28 -0
  152. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/sys/unix/mod.rs +21 -0
  153. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/sys/unix/signals.rs +402 -0
  154. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/sys/unix/unwind.rs +91 -0
  155. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/sys/unix/vm.rs +208 -0
  156. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/sys/windows/mod.rs +6 -0
  157. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/sys/windows/traphandlers.rs +105 -0
  158. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/sys/windows/unwind.rs +46 -0
  159. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/sys/windows/vm.rs +79 -0
  160. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/traphandlers/backtrace.rs +265 -0
  161. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/traphandlers.rs +733 -0
  162. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/vmcontext.rs +1197 -0
  163. data/ext/cargo-vendor/wasmtime-types-16.0.0/.cargo-checksum.json +1 -0
  164. data/ext/cargo-vendor/wasmtime-types-16.0.0/Cargo.toml +36 -0
  165. data/ext/cargo-vendor/wasmtime-types-16.0.0/src/lib.rs +504 -0
  166. data/ext/cargo-vendor/wasmtime-versioned-export-macros-16.0.0/.cargo-checksum.json +1 -0
  167. data/ext/cargo-vendor/wasmtime-versioned-export-macros-16.0.0/Cargo.toml +32 -0
  168. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/.cargo-checksum.json +1 -0
  169. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/Cargo.toml +261 -0
  170. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/lib.rs +137 -0
  171. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/io.rs +368 -0
  172. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/network.rs +570 -0
  173. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/tcp.rs +632 -0
  174. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/udp.rs +550 -0
  175. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/mod.rs +328 -0
  176. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/preview0.rs +870 -0
  177. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/preview1.rs +2348 -0
  178. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/stdio.rs +259 -0
  179. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/stream.rs +182 -0
  180. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/table.rs +337 -0
  181. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/api.rs +218 -0
  182. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/async_.rs +360 -0
  183. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/main.rs +113 -0
  184. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/preview1.rs +239 -0
  185. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/sync.rs +299 -0
  186. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/process_stdin.rs +165 -0
  187. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/command-extended.wit +6 -0
  188. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/cli/command.wit +7 -0
  189. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/cli/imports.wit +20 -0
  190. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/http/proxy.wit +32 -0
  191. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/http/types.wit +570 -0
  192. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/test.wit +22 -0
  193. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/witx/preview0/typenames.witx +746 -0
  194. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/witx/preview0/wasi_unstable.witx +513 -0
  195. data/ext/cargo-vendor/wasmtime-winch-16.0.0/.cargo-checksum.json +1 -0
  196. data/ext/cargo-vendor/wasmtime-winch-16.0.0/Cargo.toml +77 -0
  197. data/ext/cargo-vendor/wasmtime-winch-16.0.0/src/compiler.rs +243 -0
  198. data/ext/cargo-vendor/wasmtime-wit-bindgen-16.0.0/.cargo-checksum.json +1 -0
  199. data/ext/cargo-vendor/wasmtime-wit-bindgen-16.0.0/Cargo.toml +41 -0
  200. data/ext/cargo-vendor/wasmtime-wmemcheck-16.0.0/.cargo-checksum.json +1 -0
  201. data/ext/cargo-vendor/wasmtime-wmemcheck-16.0.0/Cargo.toml +29 -0
  202. data/ext/cargo-vendor/wiggle-16.0.0/.cargo-checksum.json +1 -0
  203. data/ext/cargo-vendor/wiggle-16.0.0/Cargo.toml +115 -0
  204. data/ext/cargo-vendor/wiggle-16.0.0/src/lib.rs +1198 -0
  205. data/ext/cargo-vendor/wiggle-generate-16.0.0/.cargo-checksum.json +1 -0
  206. data/ext/cargo-vendor/wiggle-generate-16.0.0/Cargo.toml +65 -0
  207. data/ext/cargo-vendor/wiggle-generate-16.0.0/src/types/handle.rs +84 -0
  208. data/ext/cargo-vendor/wiggle-generate-16.0.0/src/types/record.rs +132 -0
  209. data/ext/cargo-vendor/wiggle-generate-16.0.0/src/types/variant.rs +191 -0
  210. data/ext/cargo-vendor/wiggle-macro-16.0.0/.cargo-checksum.json +1 -0
  211. data/ext/cargo-vendor/wiggle-macro-16.0.0/Cargo.toml +55 -0
  212. data/ext/cargo-vendor/winch-codegen-0.14.0/.cargo-checksum.json +1 -0
  213. data/ext/cargo-vendor/winch-codegen-0.14.0/Cargo.toml +76 -0
  214. data/ext/cargo-vendor/winch-codegen-0.14.0/src/abi/local.rs +81 -0
  215. data/ext/cargo-vendor/winch-codegen-0.14.0/src/abi/mod.rs +614 -0
  216. data/ext/cargo-vendor/winch-codegen-0.14.0/src/codegen/call.rs +345 -0
  217. data/ext/cargo-vendor/winch-codegen-0.14.0/src/codegen/context.rs +545 -0
  218. data/ext/cargo-vendor/winch-codegen-0.14.0/src/codegen/control.rs +497 -0
  219. data/ext/cargo-vendor/winch-codegen-0.14.0/src/codegen/env.rs +251 -0
  220. data/ext/cargo-vendor/winch-codegen-0.14.0/src/codegen/mod.rs +428 -0
  221. data/ext/cargo-vendor/winch-codegen-0.14.0/src/frame/mod.rs +221 -0
  222. data/ext/cargo-vendor/winch-codegen-0.14.0/src/isa/aarch64/abi.rs +313 -0
  223. data/ext/cargo-vendor/winch-codegen-0.14.0/src/isa/aarch64/masm.rs +444 -0
  224. data/ext/cargo-vendor/winch-codegen-0.14.0/src/isa/aarch64/mod.rs +137 -0
  225. data/ext/cargo-vendor/winch-codegen-0.14.0/src/isa/mod.rs +225 -0
  226. data/ext/cargo-vendor/winch-codegen-0.14.0/src/isa/x64/abi.rs +524 -0
  227. data/ext/cargo-vendor/winch-codegen-0.14.0/src/isa/x64/asm.rs +1117 -0
  228. data/ext/cargo-vendor/winch-codegen-0.14.0/src/isa/x64/masm.rs +994 -0
  229. data/ext/cargo-vendor/winch-codegen-0.14.0/src/isa/x64/mod.rs +172 -0
  230. data/ext/cargo-vendor/winch-codegen-0.14.0/src/isa/x64/regs.rs +247 -0
  231. data/ext/cargo-vendor/winch-codegen-0.14.0/src/masm.rs +679 -0
  232. data/ext/cargo-vendor/winch-codegen-0.14.0/src/stack.rs +436 -0
  233. data/ext/cargo-vendor/winch-codegen-0.14.0/src/trampoline.rs +734 -0
  234. data/ext/cargo-vendor/winch-codegen-0.14.0/src/visitor.rs +1383 -0
  235. data/lib/wasmtime/version.rb +1 -1
  236. metadata +903 -977
  237. data/ext/cargo-vendor/cranelift-bforest-0.102.1/.cargo-checksum.json +0 -1
  238. data/ext/cargo-vendor/cranelift-bforest-0.102.1/Cargo.toml +0 -31
  239. data/ext/cargo-vendor/cranelift-bforest-0.102.1/src/lib.rs +0 -184
  240. data/ext/cargo-vendor/cranelift-codegen-0.102.1/.cargo-checksum.json +0 -1
  241. data/ext/cargo-vendor/cranelift-codegen-0.102.1/Cargo.toml +0 -164
  242. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/binemit/mod.rs +0 -171
  243. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/egraph/cost.rs +0 -91
  244. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/egraph/elaborate.rs +0 -731
  245. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/egraph.rs +0 -678
  246. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/ir/dfg.rs +0 -1730
  247. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/ir/pcc.rs +0 -1682
  248. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/isa/aarch64/lower/isle.rs +0 -875
  249. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/isa/riscv64/inst/mod.rs +0 -2041
  250. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/isa/riscv64/inst.isle +0 -2909
  251. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/isa/riscv64/lower.isle +0 -2860
  252. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/isa/s390x/lower/isle.rs +0 -1029
  253. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/isa/x64/lower/isle.rs +0 -1070
  254. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/isa/x64/pcc.rs +0 -884
  255. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/isle_prelude.rs +0 -972
  256. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/lib.rs +0 -108
  257. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/machinst/isle.rs +0 -897
  258. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/opts/arithmetic.isle +0 -128
  259. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/opts/cprop.isle +0 -210
  260. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/opts/icmp.isle +0 -177
  261. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/opts/selects.isle +0 -59
  262. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/opts.rs +0 -138
  263. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/prelude.isle +0 -646
  264. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/timing.rs +0 -271
  265. data/ext/cargo-vendor/cranelift-codegen-0.102.1/src/unionfind.rs +0 -74
  266. data/ext/cargo-vendor/cranelift-codegen-meta-0.102.1/.cargo-checksum.json +0 -1
  267. data/ext/cargo-vendor/cranelift-codegen-meta-0.102.1/Cargo.toml +0 -26
  268. data/ext/cargo-vendor/cranelift-codegen-shared-0.102.1/.cargo-checksum.json +0 -1
  269. data/ext/cargo-vendor/cranelift-codegen-shared-0.102.1/Cargo.toml +0 -22
  270. data/ext/cargo-vendor/cranelift-codegen-shared-0.102.1/src/lib.rs +0 -12
  271. data/ext/cargo-vendor/cranelift-control-0.102.1/.cargo-checksum.json +0 -1
  272. data/ext/cargo-vendor/cranelift-control-0.102.1/Cargo.toml +0 -30
  273. data/ext/cargo-vendor/cranelift-entity-0.102.1/.cargo-checksum.json +0 -1
  274. data/ext/cargo-vendor/cranelift-entity-0.102.1/Cargo.toml +0 -41
  275. data/ext/cargo-vendor/cranelift-entity-0.102.1/src/lib.rs +0 -316
  276. data/ext/cargo-vendor/cranelift-entity-0.102.1/src/primary.rs +0 -456
  277. data/ext/cargo-vendor/cranelift-frontend-0.102.1/.cargo-checksum.json +0 -1
  278. data/ext/cargo-vendor/cranelift-frontend-0.102.1/Cargo.toml +0 -59
  279. data/ext/cargo-vendor/cranelift-frontend-0.102.1/src/lib.rs +0 -191
  280. data/ext/cargo-vendor/cranelift-isle-0.102.1/.cargo-checksum.json +0 -1
  281. data/ext/cargo-vendor/cranelift-isle-0.102.1/Cargo.toml +0 -37
  282. data/ext/cargo-vendor/cranelift-isle-0.102.1/isle_examples/link/multi_constructor_main.rs +0 -71
  283. data/ext/cargo-vendor/cranelift-isle-0.102.1/isle_examples/link/multi_extractor_main.rs +0 -50
  284. data/ext/cargo-vendor/cranelift-isle-0.102.1/src/codegen.rs +0 -763
  285. data/ext/cargo-vendor/cranelift-native-0.102.1/.cargo-checksum.json +0 -1
  286. data/ext/cargo-vendor/cranelift-native-0.102.1/Cargo.toml +0 -43
  287. data/ext/cargo-vendor/cranelift-native-0.102.1/src/lib.rs +0 -190
  288. data/ext/cargo-vendor/cranelift-wasm-0.102.1/.cargo-checksum.json +0 -1
  289. data/ext/cargo-vendor/cranelift-wasm-0.102.1/Cargo.toml +0 -97
  290. data/ext/cargo-vendor/cranelift-wasm-0.102.1/src/environ/dummy.rs +0 -953
  291. data/ext/cargo-vendor/cranelift-wasm-0.102.1/src/lib.rs +0 -64
  292. data/ext/cargo-vendor/cranelift-wasm-0.102.1/src/translation_utils.rs +0 -97
  293. data/ext/cargo-vendor/wasi-cap-std-sync-15.0.1/.cargo-checksum.json +0 -1
  294. data/ext/cargo-vendor/wasi-cap-std-sync-15.0.1/Cargo.toml +0 -93
  295. data/ext/cargo-vendor/wasi-common-15.0.1/.cargo-checksum.json +0 -1
  296. data/ext/cargo-vendor/wasi-common-15.0.1/Cargo.toml +0 -122
  297. data/ext/cargo-vendor/wasi-common-15.0.1/src/lib.rs +0 -73
  298. data/ext/cargo-vendor/wasi-common-15.0.1/src/snapshots/preview_1.rs +0 -1490
  299. data/ext/cargo-vendor/wasm-encoder-0.36.2/.cargo-checksum.json +0 -1
  300. data/ext/cargo-vendor/wasm-encoder-0.36.2/Cargo.toml +0 -37
  301. data/ext/cargo-vendor/wasm-encoder-0.36.2/README.md +0 -80
  302. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/component/aliases.rs +0 -160
  303. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/component/builder.rs +0 -455
  304. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/component/canonicals.rs +0 -159
  305. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/component/components.rs +0 -29
  306. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/component/exports.rs +0 -124
  307. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/component/imports.rs +0 -175
  308. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/component/instances.rs +0 -200
  309. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/component/modules.rs +0 -29
  310. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/component/names.rs +0 -149
  311. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/component/start.rs +0 -52
  312. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/component/types.rs +0 -771
  313. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/component.rs +0 -168
  314. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/core/code.rs +0 -2989
  315. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/core/custom.rs +0 -73
  316. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/core/data.rs +0 -185
  317. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/core/dump.rs +0 -627
  318. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/core/elements.rs +0 -220
  319. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/core/exports.rs +0 -98
  320. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/core/functions.rs +0 -63
  321. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/core/globals.rs +0 -100
  322. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/core/imports.rs +0 -155
  323. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/core/linking.rs +0 -263
  324. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/core/memories.rs +0 -111
  325. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/core/names.rs +0 -265
  326. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/core/producers.rs +0 -180
  327. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/core/start.rs +0 -39
  328. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/core/tables.rs +0 -115
  329. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/core/tags.rs +0 -104
  330. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/core/types.rs +0 -584
  331. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/core.rs +0 -168
  332. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/lib.rs +0 -215
  333. data/ext/cargo-vendor/wasm-encoder-0.36.2/src/raw.rs +0 -30
  334. data/ext/cargo-vendor/wasmparser-0.116.1/.cargo-checksum.json +0 -1
  335. data/ext/cargo-vendor/wasmparser-0.116.1/Cargo.lock +0 -674
  336. data/ext/cargo-vendor/wasmparser-0.116.1/Cargo.toml +0 -60
  337. data/ext/cargo-vendor/wasmparser-0.116.1/README.md +0 -36
  338. data/ext/cargo-vendor/wasmparser-0.116.1/benches/benchmark.rs +0 -370
  339. data/ext/cargo-vendor/wasmparser-0.116.1/examples/simple.rs +0 -37
  340. data/ext/cargo-vendor/wasmparser-0.116.1/src/binary_reader.rs +0 -1706
  341. data/ext/cargo-vendor/wasmparser-0.116.1/src/define_types.rs +0 -782
  342. data/ext/cargo-vendor/wasmparser-0.116.1/src/lib.rs +0 -729
  343. data/ext/cargo-vendor/wasmparser-0.116.1/src/limits.rs +0 -58
  344. data/ext/cargo-vendor/wasmparser-0.116.1/src/parser.rs +0 -1612
  345. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/component/aliases.rs +0 -119
  346. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/component/canonicals.rs +0 -120
  347. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/component/exports.rs +0 -135
  348. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/component/imports.rs +0 -129
  349. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/component/instances.rs +0 -163
  350. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/component/names.rs +0 -102
  351. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/component/start.rs +0 -30
  352. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/component/types.rs +0 -549
  353. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/component.rs +0 -17
  354. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core/code.rs +0 -146
  355. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core/coredumps.rs +0 -243
  356. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core/custom.rs +0 -63
  357. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core/data.rs +0 -96
  358. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core/dylink0.rs +0 -132
  359. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core/elements.rs +0 -152
  360. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core/exports.rs +0 -65
  361. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core/functions.rs +0 -17
  362. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core/globals.rs +0 -49
  363. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core/imports.rs +0 -76
  364. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core/init.rs +0 -51
  365. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core/memories.rs +0 -56
  366. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core/names.rs +0 -153
  367. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core/operators.rs +0 -354
  368. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core/producers.rs +0 -83
  369. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core/tables.rs +0 -87
  370. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core/tags.rs +0 -32
  371. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core/types.rs +0 -544
  372. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers/core.rs +0 -37
  373. data/ext/cargo-vendor/wasmparser-0.116.1/src/readers.rs +0 -316
  374. data/ext/cargo-vendor/wasmparser-0.116.1/src/resources.rs +0 -398
  375. data/ext/cargo-vendor/wasmparser-0.116.1/src/validator/component.rs +0 -3203
  376. data/ext/cargo-vendor/wasmparser-0.116.1/src/validator/core.rs +0 -1341
  377. data/ext/cargo-vendor/wasmparser-0.116.1/src/validator/func.rs +0 -348
  378. data/ext/cargo-vendor/wasmparser-0.116.1/src/validator/names.rs +0 -859
  379. data/ext/cargo-vendor/wasmparser-0.116.1/src/validator/operators.rs +0 -3466
  380. data/ext/cargo-vendor/wasmparser-0.116.1/src/validator/types.rs +0 -4011
  381. data/ext/cargo-vendor/wasmparser-0.116.1/src/validator.rs +0 -1603
  382. data/ext/cargo-vendor/wasmparser-0.116.1/tests/big-module.rs +0 -33
  383. data/ext/cargo-vendor/wasmtime-15.0.1/.cargo-checksum.json +0 -1
  384. data/ext/cargo-vendor/wasmtime-15.0.1/Cargo.toml +0 -202
  385. data/ext/cargo-vendor/wasmtime-15.0.1/src/compiler.rs +0 -682
  386. data/ext/cargo-vendor/wasmtime-15.0.1/src/component/component.rs +0 -505
  387. data/ext/cargo-vendor/wasmtime-15.0.1/src/component/func/typed.rs +0 -2398
  388. data/ext/cargo-vendor/wasmtime-15.0.1/src/config.rs +0 -2422
  389. data/ext/cargo-vendor/wasmtime-15.0.1/src/func.rs +0 -2428
  390. data/ext/cargo-vendor/wasmtime-15.0.1/src/lib.rs +0 -518
  391. data/ext/cargo-vendor/wasmtime-15.0.1/src/memory.rs +0 -996
  392. data/ext/cargo-vendor/wasmtime-15.0.1/src/module.rs +0 -1370
  393. data/ext/cargo-vendor/wasmtime-15.0.1/src/stack.rs +0 -73
  394. data/ext/cargo-vendor/wasmtime-15.0.1/src/v128.rs +0 -151
  395. data/ext/cargo-vendor/wasmtime-asm-macros-15.0.1/.cargo-checksum.json +0 -1
  396. data/ext/cargo-vendor/wasmtime-asm-macros-15.0.1/Cargo.toml +0 -22
  397. data/ext/cargo-vendor/wasmtime-cache-15.0.1/.cargo-checksum.json +0 -1
  398. data/ext/cargo-vendor/wasmtime-cache-15.0.1/Cargo.toml +0 -72
  399. data/ext/cargo-vendor/wasmtime-cache-15.0.1/src/lib.rs +0 -238
  400. data/ext/cargo-vendor/wasmtime-cache-15.0.1/src/worker.rs +0 -894
  401. data/ext/cargo-vendor/wasmtime-component-macro-15.0.1/.cargo-checksum.json +0 -1
  402. data/ext/cargo-vendor/wasmtime-component-macro-15.0.1/Cargo.toml +0 -58
  403. data/ext/cargo-vendor/wasmtime-component-util-15.0.1/.cargo-checksum.json +0 -1
  404. data/ext/cargo-vendor/wasmtime-component-util-15.0.1/Cargo.toml +0 -25
  405. data/ext/cargo-vendor/wasmtime-cranelift-15.0.1/.cargo-checksum.json +0 -1
  406. data/ext/cargo-vendor/wasmtime-cranelift-15.0.1/Cargo.toml +0 -103
  407. data/ext/cargo-vendor/wasmtime-cranelift-15.0.1/src/compiler/component.rs +0 -959
  408. data/ext/cargo-vendor/wasmtime-cranelift-15.0.1/src/compiler.rs +0 -1317
  409. data/ext/cargo-vendor/wasmtime-cranelift-15.0.1/src/debug/transform/expression.rs +0 -1250
  410. data/ext/cargo-vendor/wasmtime-cranelift-15.0.1/src/debug/transform/simulate.rs +0 -410
  411. data/ext/cargo-vendor/wasmtime-cranelift-15.0.1/src/debug.rs +0 -18
  412. data/ext/cargo-vendor/wasmtime-cranelift-15.0.1/src/func_environ.rs +0 -2746
  413. data/ext/cargo-vendor/wasmtime-cranelift-shared-15.0.1/.cargo-checksum.json +0 -1
  414. data/ext/cargo-vendor/wasmtime-cranelift-shared-15.0.1/Cargo.toml +0 -62
  415. data/ext/cargo-vendor/wasmtime-environ-15.0.1/.cargo-checksum.json +0 -1
  416. data/ext/cargo-vendor/wasmtime-environ-15.0.1/Cargo.lock +0 -677
  417. data/ext/cargo-vendor/wasmtime-environ-15.0.1/Cargo.toml +0 -116
  418. data/ext/cargo-vendor/wasmtime-environ-15.0.1/src/compilation.rs +0 -402
  419. data/ext/cargo-vendor/wasmtime-environ-15.0.1/src/component/compiler.rs +0 -47
  420. data/ext/cargo-vendor/wasmtime-environ-15.0.1/src/component/translate.rs +0 -951
  421. data/ext/cargo-vendor/wasmtime-environ-15.0.1/src/component/types.rs +0 -1870
  422. data/ext/cargo-vendor/wasmtime-environ-15.0.1/src/lib.rs +0 -59
  423. data/ext/cargo-vendor/wasmtime-environ-15.0.1/src/module.rs +0 -1083
  424. data/ext/cargo-vendor/wasmtime-environ-15.0.1/src/module_environ.rs +0 -876
  425. data/ext/cargo-vendor/wasmtime-environ-15.0.1/src/module_types.rs +0 -78
  426. data/ext/cargo-vendor/wasmtime-environ-15.0.1/src/scopevec.rs +0 -57
  427. data/ext/cargo-vendor/wasmtime-fiber-15.0.1/.cargo-checksum.json +0 -1
  428. data/ext/cargo-vendor/wasmtime-fiber-15.0.1/Cargo.toml +0 -54
  429. data/ext/cargo-vendor/wasmtime-fiber-15.0.1/src/lib.rs +0 -327
  430. data/ext/cargo-vendor/wasmtime-fiber-15.0.1/src/unix.rs +0 -265
  431. data/ext/cargo-vendor/wasmtime-fiber-15.0.1/src/windows.c +0 -9
  432. data/ext/cargo-vendor/wasmtime-jit-15.0.1/.cargo-checksum.json +0 -1
  433. data/ext/cargo-vendor/wasmtime-jit-15.0.1/Cargo.toml +0 -115
  434. data/ext/cargo-vendor/wasmtime-jit-15.0.1/src/code_memory.rs +0 -321
  435. data/ext/cargo-vendor/wasmtime-jit-15.0.1/src/instantiate.rs +0 -766
  436. data/ext/cargo-vendor/wasmtime-jit-15.0.1/src/lib.rs +0 -22
  437. data/ext/cargo-vendor/wasmtime-jit-15.0.1/src/unwind/miri.rs +0 -15
  438. data/ext/cargo-vendor/wasmtime-jit-15.0.1/src/unwind/systemv.rs +0 -90
  439. data/ext/cargo-vendor/wasmtime-jit-15.0.1/src/unwind/winx64.rs +0 -44
  440. data/ext/cargo-vendor/wasmtime-jit-15.0.1/src/unwind.rs +0 -14
  441. data/ext/cargo-vendor/wasmtime-jit-debug-15.0.1/.cargo-checksum.json +0 -1
  442. data/ext/cargo-vendor/wasmtime-jit-debug-15.0.1/Cargo.toml +0 -58
  443. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-15.0.1/.cargo-checksum.json +0 -1
  444. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-15.0.1/Cargo.toml +0 -37
  445. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/.cargo-checksum.json +0 -1
  446. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/Cargo.toml +0 -126
  447. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/build.rs +0 -19
  448. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/proptest-regressions/instance/allocator/pooling/memory_pool.txt +0 -8
  449. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/cow.rs +0 -1060
  450. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/helpers.c +0 -108
  451. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/instance/allocator/pooling/memory_pool.rs +0 -999
  452. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/instance/allocator/pooling/stack_pool.rs +0 -242
  453. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/instance/allocator/pooling/table_pool.rs +0 -225
  454. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/instance/allocator/pooling/unix.rs +0 -56
  455. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/instance/allocator/pooling/windows.rs +0 -38
  456. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/instance/allocator/pooling.rs +0 -708
  457. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/lib.rs +0 -279
  458. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/libcalls.rs +0 -775
  459. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/mmap.rs +0 -226
  460. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/mpk/enabled.rs +0 -201
  461. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/mpk/pkru.rs +0 -93
  462. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/trampolines/aarch64.rs +0 -42
  463. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/trampolines/riscv64.rs +0 -45
  464. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/trampolines/s390x.rs +0 -25
  465. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/trampolines/x86_64.rs +0 -64
  466. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/trampolines.rs +0 -19
  467. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/traphandlers/backtrace/aarch64.rs +0 -55
  468. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/traphandlers/backtrace/riscv64.rs +0 -18
  469. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/traphandlers/backtrace/s390x.rs +0 -22
  470. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/traphandlers/backtrace/x86_64.rs +0 -20
  471. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/traphandlers/backtrace.rs +0 -291
  472. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/traphandlers/macos.rs +0 -492
  473. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/traphandlers/unix.rs +0 -402
  474. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/traphandlers/windows.rs +0 -89
  475. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/traphandlers.rs +0 -815
  476. data/ext/cargo-vendor/wasmtime-runtime-15.0.1/src/vmcontext.rs +0 -1197
  477. data/ext/cargo-vendor/wasmtime-types-15.0.1/.cargo-checksum.json +0 -1
  478. data/ext/cargo-vendor/wasmtime-types-15.0.1/Cargo.toml +0 -36
  479. data/ext/cargo-vendor/wasmtime-types-15.0.1/src/lib.rs +0 -504
  480. data/ext/cargo-vendor/wasmtime-versioned-export-macros-15.0.1/.cargo-checksum.json +0 -1
  481. data/ext/cargo-vendor/wasmtime-versioned-export-macros-15.0.1/Cargo.toml +0 -32
  482. data/ext/cargo-vendor/wasmtime-wasi-15.0.1/.cargo-checksum.json +0 -1
  483. data/ext/cargo-vendor/wasmtime-wasi-15.0.1/Cargo.toml +0 -248
  484. data/ext/cargo-vendor/wasmtime-wasi-15.0.1/src/lib.rs +0 -135
  485. data/ext/cargo-vendor/wasmtime-wasi-15.0.1/src/preview2/host/io.rs +0 -368
  486. data/ext/cargo-vendor/wasmtime-wasi-15.0.1/src/preview2/host/network.rs +0 -515
  487. data/ext/cargo-vendor/wasmtime-wasi-15.0.1/src/preview2/host/tcp.rs +0 -630
  488. data/ext/cargo-vendor/wasmtime-wasi-15.0.1/src/preview2/host/udp.rs +0 -543
  489. data/ext/cargo-vendor/wasmtime-wasi-15.0.1/src/preview2/mod.rs +0 -326
  490. data/ext/cargo-vendor/wasmtime-wasi-15.0.1/src/preview2/preview1.rs +0 -2342
  491. data/ext/cargo-vendor/wasmtime-wasi-15.0.1/src/preview2/stdio.rs +0 -450
  492. data/ext/cargo-vendor/wasmtime-wasi-15.0.1/src/preview2/stream.rs +0 -182
  493. data/ext/cargo-vendor/wasmtime-wasi-15.0.1/src/preview2/table.rs +0 -258
  494. data/ext/cargo-vendor/wasmtime-wasi-15.0.1/wit/command-extended.wit +0 -6
  495. data/ext/cargo-vendor/wasmtime-wasi-15.0.1/wit/deps/cli/command.wit +0 -7
  496. data/ext/cargo-vendor/wasmtime-wasi-15.0.1/wit/deps/cli/reactor.wit +0 -31
  497. data/ext/cargo-vendor/wasmtime-wasi-15.0.1/wit/deps/http/proxy.wit +0 -33
  498. data/ext/cargo-vendor/wasmtime-wasi-15.0.1/wit/deps/http/types.wit +0 -559
  499. data/ext/cargo-vendor/wasmtime-wasi-15.0.1/wit/test.wit +0 -22
  500. data/ext/cargo-vendor/wasmtime-winch-15.0.1/.cargo-checksum.json +0 -1
  501. data/ext/cargo-vendor/wasmtime-winch-15.0.1/Cargo.toml +0 -68
  502. data/ext/cargo-vendor/wasmtime-winch-15.0.1/src/compiler.rs +0 -242
  503. data/ext/cargo-vendor/wasmtime-wit-bindgen-15.0.1/.cargo-checksum.json +0 -1
  504. data/ext/cargo-vendor/wasmtime-wit-bindgen-15.0.1/Cargo.toml +0 -32
  505. data/ext/cargo-vendor/wasmtime-wmemcheck-15.0.1/.cargo-checksum.json +0 -1
  506. data/ext/cargo-vendor/wasmtime-wmemcheck-15.0.1/Cargo.toml +0 -22
  507. data/ext/cargo-vendor/wiggle-15.0.1/.cargo-checksum.json +0 -1
  508. data/ext/cargo-vendor/wiggle-15.0.1/Cargo.toml +0 -106
  509. data/ext/cargo-vendor/wiggle-15.0.1/src/lib.rs +0 -1198
  510. data/ext/cargo-vendor/wiggle-generate-15.0.1/.cargo-checksum.json +0 -1
  511. data/ext/cargo-vendor/wiggle-generate-15.0.1/Cargo.toml +0 -58
  512. data/ext/cargo-vendor/wiggle-generate-15.0.1/LICENSE +0 -220
  513. data/ext/cargo-vendor/wiggle-generate-15.0.1/src/types/handle.rs +0 -84
  514. data/ext/cargo-vendor/wiggle-generate-15.0.1/src/types/record.rs +0 -132
  515. data/ext/cargo-vendor/wiggle-generate-15.0.1/src/types/variant.rs +0 -191
  516. data/ext/cargo-vendor/wiggle-macro-15.0.1/.cargo-checksum.json +0 -1
  517. data/ext/cargo-vendor/wiggle-macro-15.0.1/Cargo.toml +0 -55
  518. data/ext/cargo-vendor/wiggle-macro-15.0.1/LICENSE +0 -220
  519. data/ext/cargo-vendor/winch-codegen-0.13.1/.cargo-checksum.json +0 -1
  520. data/ext/cargo-vendor/winch-codegen-0.13.1/Cargo.toml +0 -67
  521. data/ext/cargo-vendor/winch-codegen-0.13.1/src/abi/local.rs +0 -70
  522. data/ext/cargo-vendor/winch-codegen-0.13.1/src/abi/mod.rs +0 -304
  523. data/ext/cargo-vendor/winch-codegen-0.13.1/src/codegen/call.rs +0 -353
  524. data/ext/cargo-vendor/winch-codegen-0.13.1/src/codegen/context.rs +0 -465
  525. data/ext/cargo-vendor/winch-codegen-0.13.1/src/codegen/control.rs +0 -456
  526. data/ext/cargo-vendor/winch-codegen-0.13.1/src/codegen/env.rs +0 -181
  527. data/ext/cargo-vendor/winch-codegen-0.13.1/src/codegen/mod.rs +0 -436
  528. data/ext/cargo-vendor/winch-codegen-0.13.1/src/frame/mod.rs +0 -189
  529. data/ext/cargo-vendor/winch-codegen-0.13.1/src/isa/aarch64/abi.rs +0 -267
  530. data/ext/cargo-vendor/winch-codegen-0.13.1/src/isa/aarch64/masm.rs +0 -436
  531. data/ext/cargo-vendor/winch-codegen-0.13.1/src/isa/aarch64/mod.rs +0 -136
  532. data/ext/cargo-vendor/winch-codegen-0.13.1/src/isa/mod.rs +0 -218
  533. data/ext/cargo-vendor/winch-codegen-0.13.1/src/isa/x64/abi.rs +0 -410
  534. data/ext/cargo-vendor/winch-codegen-0.13.1/src/isa/x64/asm.rs +0 -1106
  535. data/ext/cargo-vendor/winch-codegen-0.13.1/src/isa/x64/masm.rs +0 -953
  536. data/ext/cargo-vendor/winch-codegen-0.13.1/src/isa/x64/mod.rs +0 -172
  537. data/ext/cargo-vendor/winch-codegen-0.13.1/src/isa/x64/regs.rs +0 -247
  538. data/ext/cargo-vendor/winch-codegen-0.13.1/src/masm.rs +0 -592
  539. data/ext/cargo-vendor/winch-codegen-0.13.1/src/stack.rs +0 -366
  540. data/ext/cargo-vendor/winch-codegen-0.13.1/src/trampoline.rs +0 -489
  541. data/ext/cargo-vendor/winch-codegen-0.13.1/src/visitor.rs +0 -1339
  542. /data/ext/cargo-vendor/{cranelift-bforest-0.102.1 → cranelift-bforest-0.103.0}/LICENSE +0 -0
  543. /data/ext/cargo-vendor/{cranelift-bforest-0.102.1 → cranelift-bforest-0.103.0}/README.md +0 -0
  544. /data/ext/cargo-vendor/{cranelift-bforest-0.102.1 → cranelift-bforest-0.103.0}/src/map.rs +0 -0
  545. /data/ext/cargo-vendor/{cranelift-bforest-0.102.1 → cranelift-bforest-0.103.0}/src/node.rs +0 -0
  546. /data/ext/cargo-vendor/{cranelift-bforest-0.102.1 → cranelift-bforest-0.103.0}/src/path.rs +0 -0
  547. /data/ext/cargo-vendor/{cranelift-bforest-0.102.1 → cranelift-bforest-0.103.0}/src/pool.rs +0 -0
  548. /data/ext/cargo-vendor/{cranelift-bforest-0.102.1 → cranelift-bforest-0.103.0}/src/set.rs +0 -0
  549. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/LICENSE +0 -0
  550. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/README.md +0 -0
  551. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/benches/x64-evex-encoding.rs +0 -0
  552. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/build.rs +0 -0
  553. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/alias_analysis.rs +0 -0
  554. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/binemit/stack_map.rs +0 -0
  555. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/bitset.rs +0 -0
  556. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/cfg_printer.rs +0 -0
  557. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/constant_hash.rs +0 -0
  558. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/context.rs +0 -0
  559. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ctxhash.rs +0 -0
  560. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/cursor.rs +0 -0
  561. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/data_value.rs +0 -0
  562. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/dbg.rs +0 -0
  563. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/dce.rs +0 -0
  564. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/dominator_tree.rs +0 -0
  565. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/egraph/domtree.rs +0 -0
  566. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/flowgraph.rs +0 -0
  567. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/fx.rs +0 -0
  568. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/incremental_cache.rs +0 -0
  569. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/inst_predicates.rs +0 -0
  570. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/atomic_rmw_op.rs +0 -0
  571. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/builder.rs +0 -0
  572. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/condcodes.rs +0 -0
  573. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/constant.rs +0 -0
  574. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/dynamic_type.rs +0 -0
  575. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/entities.rs +0 -0
  576. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/extfunc.rs +0 -0
  577. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/extname.rs +0 -0
  578. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/function.rs +0 -0
  579. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/globalvalue.rs +0 -0
  580. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/immediates.rs +0 -0
  581. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/instructions.rs +0 -0
  582. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/jumptable.rs +0 -0
  583. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/known_symbol.rs +0 -0
  584. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/layout.rs +0 -0
  585. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/libcall.rs +0 -0
  586. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/memflags.rs +0 -0
  587. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/memtype.rs +0 -0
  588. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/mod.rs +0 -0
  589. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/progpoint.rs +0 -0
  590. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/sourceloc.rs +0 -0
  591. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/stackslot.rs +0 -0
  592. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/table.rs +0 -0
  593. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/trapcode.rs +0 -0
  594. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/ir/types.rs +0 -0
  595. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/aarch64/abi.rs +0 -0
  596. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/aarch64/inst/args.rs +0 -0
  597. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/aarch64/inst/emit.rs +0 -0
  598. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/aarch64/inst/emit_tests.rs +0 -0
  599. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/aarch64/inst/imms.rs +0 -0
  600. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/aarch64/inst/mod.rs +0 -0
  601. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/aarch64/inst/regs.rs +0 -0
  602. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/aarch64/inst/unwind/systemv.rs +0 -0
  603. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/aarch64/inst/unwind.rs +0 -0
  604. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/aarch64/inst.isle +0 -0
  605. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/aarch64/inst_neon.isle +0 -0
  606. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/aarch64/lower/isle/generated_code.rs +0 -0
  607. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/aarch64/lower.isle +0 -0
  608. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/aarch64/lower.rs +0 -0
  609. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/aarch64/lower_dynamic_neon.isle +0 -0
  610. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/aarch64/mod.rs +0 -0
  611. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/aarch64/pcc.rs +0 -0
  612. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/aarch64/settings.rs +0 -0
  613. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/call_conv.rs +0 -0
  614. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/mod.rs +0 -0
  615. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/riscv64/abi.rs +0 -0
  616. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/riscv64/inst/args.rs +0 -0
  617. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/riscv64/inst/emit.rs +0 -0
  618. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/riscv64/inst/emit_tests.rs +0 -0
  619. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/riscv64/inst/encode.rs +0 -0
  620. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/riscv64/inst/imms.rs +0 -0
  621. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/riscv64/inst/regs.rs +0 -0
  622. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/riscv64/inst/unwind/systemv.rs +0 -0
  623. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/riscv64/inst/unwind.rs +0 -0
  624. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/riscv64/inst/vector.rs +0 -0
  625. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/riscv64/inst_vector.isle +0 -0
  626. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/riscv64/lower/isle/generated_code.rs +0 -0
  627. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/riscv64/lower/isle.rs +0 -0
  628. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/riscv64/lower.rs +0 -0
  629. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/riscv64/mod.rs +0 -0
  630. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/riscv64/settings.rs +0 -0
  631. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/s390x/abi.rs +0 -0
  632. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/s390x/inst/args.rs +0 -0
  633. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/s390x/inst/emit.rs +0 -0
  634. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/s390x/inst/emit_tests.rs +0 -0
  635. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/s390x/inst/imms.rs +0 -0
  636. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/s390x/inst/mod.rs +0 -0
  637. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/s390x/inst/regs.rs +0 -0
  638. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/s390x/inst/unwind/systemv.rs +0 -0
  639. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/s390x/inst/unwind.rs +0 -0
  640. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/s390x/inst.isle +0 -0
  641. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/s390x/lower/isle/generated_code.rs +0 -0
  642. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/s390x/lower.isle +0 -0
  643. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/s390x/lower.rs +0 -0
  644. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/s390x/mod.rs +0 -0
  645. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/s390x/settings.rs +0 -0
  646. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/unwind/systemv.rs +0 -0
  647. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/unwind/winx64.rs +0 -0
  648. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/unwind.rs +0 -0
  649. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/abi.rs +0 -0
  650. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/encoding/evex.rs +0 -0
  651. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/encoding/mod.rs +0 -0
  652. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/encoding/rex.rs +0 -0
  653. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/encoding/vex.rs +0 -0
  654. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/inst/args.rs +0 -0
  655. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/inst/emit.rs +0 -0
  656. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/inst/emit_state.rs +0 -0
  657. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/inst/emit_tests.rs +0 -0
  658. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/inst/mod.rs +0 -0
  659. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/inst/regs.rs +0 -0
  660. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/inst/unwind/systemv.rs +0 -0
  661. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/inst/unwind/winx64.rs +0 -0
  662. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/inst/unwind.rs +0 -0
  663. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/inst.isle +0 -0
  664. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/lower/isle/generated_code.rs +0 -0
  665. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/lower.isle +0 -0
  666. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/lower.rs +0 -0
  667. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/mod.rs +0 -0
  668. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/isa/x64/settings.rs +0 -0
  669. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/iterators.rs +0 -0
  670. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/legalizer/globalvalue.rs +0 -0
  671. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/legalizer/mod.rs +0 -0
  672. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/legalizer/table.rs +0 -0
  673. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/loop_analysis.rs +0 -0
  674. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/machinst/abi.rs +0 -0
  675. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/machinst/blockorder.rs +0 -0
  676. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/machinst/buffer.rs +0 -0
  677. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/machinst/compile.rs +0 -0
  678. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/machinst/helpers.rs +0 -0
  679. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/machinst/inst_common.rs +0 -0
  680. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/machinst/lower.rs +0 -0
  681. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/machinst/mod.rs +0 -0
  682. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/machinst/pcc.rs +0 -0
  683. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/machinst/reg.rs +0 -0
  684. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/machinst/valueregs.rs +0 -0
  685. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/machinst/vcode.rs +0 -0
  686. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/nan_canonicalization.rs +0 -0
  687. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/opts/README.md +0 -0
  688. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/opts/bitops.isle +0 -0
  689. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/opts/extends.isle +0 -0
  690. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/opts/generated_code.rs +0 -0
  691. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/opts/remat.isle +0 -0
  692. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/opts/shifts.isle +0 -0
  693. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/opts/vector.isle +0 -0
  694. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/prelude_lower.isle +0 -0
  695. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/prelude_opt.isle +0 -0
  696. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/print_errors.rs +0 -0
  697. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/remove_constant_phis.rs +0 -0
  698. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/result.rs +0 -0
  699. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/scoped_hash_map.rs +0 -0
  700. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/settings.rs +0 -0
  701. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/souper_harvest.rs +0 -0
  702. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/unreachable_code.rs +0 -0
  703. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/value_label.rs +0 -0
  704. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/verifier/mod.rs +0 -0
  705. /data/ext/cargo-vendor/{cranelift-codegen-0.102.1 → cranelift-codegen-0.103.0}/src/write.rs +0 -0
  706. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/LICENSE +0 -0
  707. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/README.md +0 -0
  708. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/cdsl/formats.rs +0 -0
  709. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/cdsl/instructions.rs +0 -0
  710. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/cdsl/isa.rs +0 -0
  711. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/cdsl/mod.rs +0 -0
  712. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/cdsl/operands.rs +0 -0
  713. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/cdsl/settings.rs +0 -0
  714. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/cdsl/types.rs +0 -0
  715. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/cdsl/typevar.rs +0 -0
  716. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/constant_hash.rs +0 -0
  717. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/error.rs +0 -0
  718. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/gen_inst.rs +0 -0
  719. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/gen_settings.rs +0 -0
  720. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/gen_types.rs +0 -0
  721. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/isa/arm64.rs +0 -0
  722. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/isa/mod.rs +0 -0
  723. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/isa/riscv64.rs +0 -0
  724. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/isa/s390x.rs +0 -0
  725. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/isa/x86.rs +0 -0
  726. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/lib.rs +0 -0
  727. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/shared/entities.rs +0 -0
  728. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/shared/formats.rs +0 -0
  729. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/shared/immediates.rs +0 -0
  730. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/shared/instructions.rs +0 -0
  731. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/shared/mod.rs +0 -0
  732. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/shared/settings.rs +0 -0
  733. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/shared/types.rs +0 -0
  734. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/srcgen.rs +0 -0
  735. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.102.1 → cranelift-codegen-meta-0.103.0}/src/unique_table.rs +0 -0
  736. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.102.1 → cranelift-codegen-shared-0.103.0}/LICENSE +0 -0
  737. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.102.1 → cranelift-codegen-shared-0.103.0}/README.md +0 -0
  738. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.102.1 → cranelift-codegen-shared-0.103.0}/src/constant_hash.rs +0 -0
  739. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.102.1 → cranelift-codegen-shared-0.103.0}/src/constants.rs +0 -0
  740. /data/ext/cargo-vendor/{cranelift-control-0.102.1 → cranelift-control-0.103.0}/LICENSE +0 -0
  741. /data/ext/cargo-vendor/{cranelift-control-0.102.1 → cranelift-control-0.103.0}/README.md +0 -0
  742. /data/ext/cargo-vendor/{cranelift-control-0.102.1 → cranelift-control-0.103.0}/src/chaos.rs +0 -0
  743. /data/ext/cargo-vendor/{cranelift-control-0.102.1 → cranelift-control-0.103.0}/src/lib.rs +0 -0
  744. /data/ext/cargo-vendor/{cranelift-control-0.102.1 → cranelift-control-0.103.0}/src/zero_sized.rs +0 -0
  745. /data/ext/cargo-vendor/{cranelift-entity-0.102.1 → cranelift-entity-0.103.0}/LICENSE +0 -0
  746. /data/ext/cargo-vendor/{cranelift-entity-0.102.1 → cranelift-entity-0.103.0}/README.md +0 -0
  747. /data/ext/cargo-vendor/{cranelift-entity-0.102.1 → cranelift-entity-0.103.0}/src/boxed_slice.rs +0 -0
  748. /data/ext/cargo-vendor/{cranelift-entity-0.102.1 → cranelift-entity-0.103.0}/src/iter.rs +0 -0
  749. /data/ext/cargo-vendor/{cranelift-entity-0.102.1 → cranelift-entity-0.103.0}/src/keys.rs +0 -0
  750. /data/ext/cargo-vendor/{cranelift-entity-0.102.1 → cranelift-entity-0.103.0}/src/list.rs +0 -0
  751. /data/ext/cargo-vendor/{cranelift-entity-0.102.1 → cranelift-entity-0.103.0}/src/map.rs +0 -0
  752. /data/ext/cargo-vendor/{cranelift-entity-0.102.1 → cranelift-entity-0.103.0}/src/packed_option.rs +0 -0
  753. /data/ext/cargo-vendor/{cranelift-entity-0.102.1 → cranelift-entity-0.103.0}/src/set.rs +0 -0
  754. /data/ext/cargo-vendor/{cranelift-entity-0.102.1 → cranelift-entity-0.103.0}/src/sparse.rs +0 -0
  755. /data/ext/cargo-vendor/{cranelift-frontend-0.102.1 → cranelift-frontend-0.103.0}/LICENSE +0 -0
  756. /data/ext/cargo-vendor/{cranelift-frontend-0.102.1 → cranelift-frontend-0.103.0}/README.md +0 -0
  757. /data/ext/cargo-vendor/{cranelift-frontend-0.102.1 → cranelift-frontend-0.103.0}/src/frontend.rs +0 -0
  758. /data/ext/cargo-vendor/{cranelift-frontend-0.102.1 → cranelift-frontend-0.103.0}/src/ssa.rs +0 -0
  759. /data/ext/cargo-vendor/{cranelift-frontend-0.102.1 → cranelift-frontend-0.103.0}/src/switch.rs +0 -0
  760. /data/ext/cargo-vendor/{cranelift-frontend-0.102.1 → cranelift-frontend-0.103.0}/src/variable.rs +0 -0
  761. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/README.md +0 -0
  762. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/build.rs +0 -0
  763. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/fail/bad_converters.isle +0 -0
  764. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/fail/bound_var_type_mismatch.isle +0 -0
  765. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/fail/converter_extractor_constructor.isle +0 -0
  766. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/fail/error1.isle +0 -0
  767. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/fail/extra_parens.isle +0 -0
  768. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/fail/impure_expression.isle +0 -0
  769. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/fail/impure_rhs.isle +0 -0
  770. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/fail/multi_internal_etor.isle +0 -0
  771. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/fail/multi_prio.isle +0 -0
  772. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/link/borrows.isle +0 -0
  773. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/link/borrows_main.rs +0 -0
  774. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/link/iflets.isle +0 -0
  775. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/link/iflets_main.rs +0 -0
  776. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/link/multi_constructor.isle +0 -0
  777. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/link/multi_extractor.isle +0 -0
  778. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/link/test.isle +0 -0
  779. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/link/test_main.rs +0 -0
  780. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/pass/bound_var.isle +0 -0
  781. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/pass/construct_and_extract.isle +0 -0
  782. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/pass/conversions.isle +0 -0
  783. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/pass/conversions_extern.isle +0 -0
  784. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/pass/let.isle +0 -0
  785. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/pass/nodebug.isle +0 -0
  786. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/pass/prio_trie_bug.isle +0 -0
  787. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/pass/test2.isle +0 -0
  788. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/pass/test3.isle +0 -0
  789. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/pass/test4.isle +0 -0
  790. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/pass/tutorial.isle +0 -0
  791. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/run/iconst.isle +0 -0
  792. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/run/iconst_main.rs +0 -0
  793. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/run/let_shadowing.isle +0 -0
  794. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/isle_examples/run/let_shadowing_main.rs +0 -0
  795. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/src/ast.rs +0 -0
  796. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/src/compile.rs +0 -0
  797. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/src/error.rs +0 -0
  798. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/src/lexer.rs +0 -0
  799. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/src/lib.rs +0 -0
  800. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/src/log.rs +0 -0
  801. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/src/overlap.rs +0 -0
  802. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/src/parser.rs +0 -0
  803. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/src/sema.rs +0 -0
  804. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/src/serialize.rs +0 -0
  805. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/src/trie_again.rs +0 -0
  806. /data/ext/cargo-vendor/{cranelift-isle-0.102.1 → cranelift-isle-0.103.0}/tests/run_tests.rs +0 -0
  807. /data/ext/cargo-vendor/{cranelift-native-0.102.1 → cranelift-native-0.103.0}/LICENSE +0 -0
  808. /data/ext/cargo-vendor/{cranelift-native-0.102.1 → cranelift-native-0.103.0}/README.md +0 -0
  809. /data/ext/cargo-vendor/{cranelift-native-0.102.1 → cranelift-native-0.103.0}/src/riscv.rs +0 -0
  810. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/LICENSE +0 -0
  811. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/README.md +0 -0
  812. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/src/code_translator/bounds_checks.rs +0 -0
  813. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/src/code_translator.rs +0 -0
  814. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/src/environ/mod.rs +0 -0
  815. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/src/environ/spec.rs +0 -0
  816. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/src/func_translator.rs +0 -0
  817. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/src/heap.rs +0 -0
  818. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/src/module_translator.rs +0 -0
  819. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/src/sections_translator.rs +0 -0
  820. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/src/state.rs +0 -0
  821. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/tests/wasm_testsuite.rs +0 -0
  822. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/arith.wat +0 -0
  823. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/br_table.wat +0 -0
  824. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/call-simd.wat +0 -0
  825. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/call.wat +0 -0
  826. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/embenchen_fannkuch.wat +0 -0
  827. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/embenchen_fasta.wat +0 -0
  828. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/embenchen_ifs.wat +0 -0
  829. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/embenchen_primes.wat +0 -0
  830. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/fac-multi-value.wat +0 -0
  831. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/fibonacci.wat +0 -0
  832. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/globals.wat +0 -0
  833. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/icall-simd.wat +0 -0
  834. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/icall.wat +0 -0
  835. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/if-reachability-translation-0.wat +0 -0
  836. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/if-reachability-translation-1.wat +0 -0
  837. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/if-reachability-translation-2.wat +0 -0
  838. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/if-reachability-translation-3.wat +0 -0
  839. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/if-reachability-translation-4.wat +0 -0
  840. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/if-reachability-translation-5.wat +0 -0
  841. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/if-reachability-translation-6.wat +0 -0
  842. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/if-unreachable-else-params-2.wat +0 -0
  843. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/if-unreachable-else-params.wat +0 -0
  844. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/issue-1306-name-section-with-u32-max-function-index.wasm +0 -0
  845. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/memory.wat +0 -0
  846. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/multi-0.wat +0 -0
  847. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/multi-1.wat +0 -0
  848. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/multi-10.wat +0 -0
  849. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/multi-11.wat +0 -0
  850. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/multi-12.wat +0 -0
  851. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/multi-13.wat +0 -0
  852. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/multi-14.wat +0 -0
  853. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/multi-15.wat +0 -0
  854. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/multi-16.wat +0 -0
  855. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/multi-17.wat +0 -0
  856. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/multi-2.wat +0 -0
  857. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/multi-3.wat +0 -0
  858. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/multi-4.wat +0 -0
  859. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/multi-5.wat +0 -0
  860. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/multi-6.wat +0 -0
  861. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/multi-7.wat +0 -0
  862. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/multi-8.wat +0 -0
  863. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/multi-9.wat +0 -0
  864. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/nullref.wat +0 -0
  865. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/passive-data.wat +0 -0
  866. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/pr2303.wat +0 -0
  867. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/pr2559.wat +0 -0
  868. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/ref-func-0.wat +0 -0
  869. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/rust_fannkuch.wat +0 -0
  870. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/select.wat +0 -0
  871. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/simd-store.wat +0 -0
  872. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/simd.wat +0 -0
  873. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/table-copy.wat +0 -0
  874. /data/ext/cargo-vendor/{cranelift-wasm-0.102.1 → cranelift-wasm-0.103.0}/wasmtests/unreachable_code.wat +0 -0
  875. /data/ext/cargo-vendor/{wasi-cap-std-sync-15.0.1 → wasi-cap-std-sync-16.0.0}/LICENSE +0 -0
  876. /data/ext/cargo-vendor/{wasi-cap-std-sync-15.0.1 → wasi-cap-std-sync-16.0.0}/README.md +0 -0
  877. /data/ext/cargo-vendor/{wasi-cap-std-sync-15.0.1 → wasi-cap-std-sync-16.0.0}/src/clocks.rs +0 -0
  878. /data/ext/cargo-vendor/{wasi-cap-std-sync-15.0.1 → wasi-cap-std-sync-16.0.0}/src/dir.rs +0 -0
  879. /data/ext/cargo-vendor/{wasi-cap-std-sync-15.0.1 → wasi-cap-std-sync-16.0.0}/src/file.rs +0 -0
  880. /data/ext/cargo-vendor/{wasi-cap-std-sync-15.0.1 → wasi-cap-std-sync-16.0.0}/src/lib.rs +0 -0
  881. /data/ext/cargo-vendor/{wasi-cap-std-sync-15.0.1 → wasi-cap-std-sync-16.0.0}/src/net.rs +0 -0
  882. /data/ext/cargo-vendor/{wasi-cap-std-sync-15.0.1 → wasi-cap-std-sync-16.0.0}/src/sched/unix.rs +0 -0
  883. /data/ext/cargo-vendor/{wasi-cap-std-sync-15.0.1 → wasi-cap-std-sync-16.0.0}/src/sched/windows.rs +0 -0
  884. /data/ext/cargo-vendor/{wasi-cap-std-sync-15.0.1 → wasi-cap-std-sync-16.0.0}/src/sched.rs +0 -0
  885. /data/ext/cargo-vendor/{wasi-cap-std-sync-15.0.1 → wasi-cap-std-sync-16.0.0}/src/stdio.rs +0 -0
  886. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/LICENSE +0 -0
  887. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/README.md +0 -0
  888. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/README.md +0 -0
  889. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/docs/README.md +0 -0
  890. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/README.md +0 -0
  891. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/ephemeral/docs.md +0 -0
  892. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/ephemeral/witx/typenames.witx +0 -0
  893. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_args.witx +0 -0
  894. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_clock.witx +0 -0
  895. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_environ.witx +0 -0
  896. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_fd.witx +0 -0
  897. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_path.witx +0 -0
  898. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_poll.witx +0 -0
  899. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_proc.witx +0 -0
  900. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_random.witx +0 -0
  901. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_sched.witx +0 -0
  902. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/ephemeral/witx/wasi_ephemeral_sock.witx +0 -0
  903. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/old/snapshot_0/docs.md +0 -0
  904. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/old/snapshot_0/witx/typenames.witx +0 -0
  905. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/old/snapshot_0/witx/wasi_unstable.witx +0 -0
  906. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/snapshot/docs.html +0 -0
  907. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/snapshot/docs.md +0 -0
  908. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/snapshot/witx/typenames.witx +0 -0
  909. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/phases/snapshot/witx/wasi_snapshot_preview1.witx +0 -0
  910. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/proposal-template/README.md +0 -0
  911. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/proposals/README.md +0 -0
  912. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/snapshots/README.md +0 -0
  913. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/WASI/standard/README.md +0 -0
  914. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/build.rs +0 -0
  915. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/src/clocks.rs +0 -0
  916. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/src/ctx.rs +0 -0
  917. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/src/dir.rs +0 -0
  918. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/src/error.rs +0 -0
  919. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/src/file.rs +0 -0
  920. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/src/pipe.rs +0 -0
  921. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/src/random.rs +0 -0
  922. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/src/sched/subscription.rs +0 -0
  923. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/src/sched.rs +0 -0
  924. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/src/snapshots/mod.rs +0 -0
  925. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/src/snapshots/preview_0.rs +0 -0
  926. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/src/snapshots/preview_1/error.rs +0 -0
  927. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/src/string_array.rs +0 -0
  928. /data/ext/cargo-vendor/{wasi-common-15.0.1 → wasi-common-16.0.0}/src/table.rs +0 -0
  929. /data/ext/cargo-vendor/{wasm-encoder-0.36.2 → wasmtime-16.0.0}/LICENSE +0 -0
  930. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/README.md +0 -0
  931. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/code.rs +0 -0
  932. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/component/func/host.rs +0 -0
  933. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/component/func/options.rs +0 -0
  934. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/component/func.rs +0 -0
  935. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/component/instance.rs +0 -0
  936. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/component/linker.rs +0 -0
  937. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/component/matching.rs +0 -0
  938. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/component/mod.rs +0 -0
  939. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/component/resources.rs +0 -0
  940. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/component/storage.rs +0 -0
  941. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/component/store.rs +0 -0
  942. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/component/types.rs +0 -0
  943. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/component/values.rs +0 -0
  944. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/coredump.rs +0 -0
  945. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/engine/serialization.rs +0 -0
  946. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/engine.rs +0 -0
  947. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/externals/global.rs +0 -0
  948. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/externals/table.rs +0 -0
  949. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/externals.rs +0 -0
  950. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/func/typed.rs +0 -0
  951. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/instance.rs +0 -0
  952. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/limits.rs +0 -0
  953. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/linker.rs +0 -0
  954. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/module/registry.rs +0 -0
  955. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/profiling.rs +0 -0
  956. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/ref.rs +0 -0
  957. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/resources.rs +0 -0
  958. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/signatures.rs +0 -0
  959. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/store/context.rs +0 -0
  960. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/store/data.rs +0 -0
  961. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/store/func_refs.rs +0 -0
  962. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/store.rs +0 -0
  963. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/trampoline/func.rs +0 -0
  964. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/trampoline/global.rs +0 -0
  965. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/trampoline/memory.rs +0 -0
  966. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/trampoline/table.rs +0 -0
  967. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/trampoline.rs +0 -0
  968. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/trap.rs +0 -0
  969. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/types/matching.rs +0 -0
  970. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/types.rs +0 -0
  971. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/unix.rs +0 -0
  972. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/values.rs +0 -0
  973. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-16.0.0}/src/windows.rs +0 -0
  974. /data/ext/cargo-vendor/{wasmtime-asm-macros-15.0.1 → wasmtime-asm-macros-16.0.0}/src/lib.rs +0 -0
  975. /data/ext/cargo-vendor/{wasmparser-0.116.1 → wasmtime-cache-16.0.0}/LICENSE +0 -0
  976. /data/ext/cargo-vendor/{wasmtime-cache-15.0.1 → wasmtime-cache-16.0.0}/build.rs +0 -0
  977. /data/ext/cargo-vendor/{wasmtime-cache-15.0.1 → wasmtime-cache-16.0.0}/src/config/tests.rs +0 -0
  978. /data/ext/cargo-vendor/{wasmtime-cache-15.0.1 → wasmtime-cache-16.0.0}/src/config.rs +0 -0
  979. /data/ext/cargo-vendor/{wasmtime-cache-15.0.1 → wasmtime-cache-16.0.0}/src/tests.rs +0 -0
  980. /data/ext/cargo-vendor/{wasmtime-cache-15.0.1 → wasmtime-cache-16.0.0}/src/worker/tests/system_time_stub.rs +0 -0
  981. /data/ext/cargo-vendor/{wasmtime-cache-15.0.1 → wasmtime-cache-16.0.0}/src/worker/tests.rs +0 -0
  982. /data/ext/cargo-vendor/{wasmtime-cache-15.0.1 → wasmtime-cache-16.0.0}/tests/cache_write_default_config.rs +0 -0
  983. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/src/bindgen.rs +0 -0
  984. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/src/component.rs +0 -0
  985. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/src/lib.rs +0 -0
  986. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/char.wit +0 -0
  987. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/conventions.wit +0 -0
  988. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/direct-import.wit +0 -0
  989. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/empty.wit +0 -0
  990. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/flags.wit +0 -0
  991. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/floats.wit +0 -0
  992. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/function-new.wit +0 -0
  993. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/integers.wit +0 -0
  994. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/lists.wit +0 -0
  995. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/many-arguments.wit +0 -0
  996. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/multi-return.wit +0 -0
  997. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/multiversion/deps/v1/root.wit +0 -0
  998. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/multiversion/deps/v2/root.wit +0 -0
  999. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/multiversion/root.wit +0 -0
  1000. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/records.wit +0 -0
  1001. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/rename.wit +0 -0
  1002. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/resources-export.wit +0 -0
  1003. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/resources-import.wit +0 -0
  1004. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/share-types.wit +0 -0
  1005. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/simple-functions.wit +0 -0
  1006. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/simple-lists.wit +0 -0
  1007. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/simple-wasi.wit +0 -0
  1008. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/small-anonymous.wit +0 -0
  1009. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/smoke-default.wit +0 -0
  1010. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/smoke-export.wit +0 -0
  1011. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/smoke.wit +0 -0
  1012. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/strings.wit +0 -0
  1013. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/use-paths.wit +0 -0
  1014. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/variants.wit +0 -0
  1015. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen/worlds-with-types.wit +0 -0
  1016. /data/ext/cargo-vendor/{wasmtime-component-macro-15.0.1 → wasmtime-component-macro-16.0.0}/tests/codegen.rs +0 -0
  1017. /data/ext/cargo-vendor/{wasmtime-component-util-15.0.1 → wasmtime-component-util-16.0.0}/src/lib.rs +0 -0
  1018. /data/ext/cargo-vendor/{wasmtime-15.0.1 → wasmtime-cranelift-16.0.0}/LICENSE +0 -0
  1019. /data/ext/cargo-vendor/{wasmtime-cranelift-15.0.1 → wasmtime-cranelift-16.0.0}/SECURITY.md +0 -0
  1020. /data/ext/cargo-vendor/{wasmtime-cranelift-15.0.1 → wasmtime-cranelift-16.0.0}/src/builder.rs +0 -0
  1021. /data/ext/cargo-vendor/{wasmtime-cranelift-15.0.1 → wasmtime-cranelift-16.0.0}/src/debug/gc.rs +0 -0
  1022. /data/ext/cargo-vendor/{wasmtime-cranelift-15.0.1 → wasmtime-cranelift-16.0.0}/src/debug/transform/address_transform.rs +0 -0
  1023. /data/ext/cargo-vendor/{wasmtime-cranelift-15.0.1 → wasmtime-cranelift-16.0.0}/src/debug/transform/attr.rs +0 -0
  1024. /data/ext/cargo-vendor/{wasmtime-cranelift-15.0.1 → wasmtime-cranelift-16.0.0}/src/debug/transform/line_program.rs +0 -0
  1025. /data/ext/cargo-vendor/{wasmtime-cranelift-15.0.1 → wasmtime-cranelift-16.0.0}/src/debug/transform/mod.rs +0 -0
  1026. /data/ext/cargo-vendor/{wasmtime-cranelift-15.0.1 → wasmtime-cranelift-16.0.0}/src/debug/transform/range_info_builder.rs +0 -0
  1027. /data/ext/cargo-vendor/{wasmtime-cranelift-15.0.1 → wasmtime-cranelift-16.0.0}/src/debug/transform/refs.rs +0 -0
  1028. /data/ext/cargo-vendor/{wasmtime-cranelift-15.0.1 → wasmtime-cranelift-16.0.0}/src/debug/transform/unit.rs +0 -0
  1029. /data/ext/cargo-vendor/{wasmtime-cranelift-15.0.1 → wasmtime-cranelift-16.0.0}/src/debug/transform/utils.rs +0 -0
  1030. /data/ext/cargo-vendor/{wasmtime-cranelift-15.0.1 → wasmtime-cranelift-16.0.0}/src/debug/write_debuginfo.rs +0 -0
  1031. /data/ext/cargo-vendor/{wasmtime-cranelift-15.0.1 → wasmtime-cranelift-16.0.0}/src/lib.rs +0 -0
  1032. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-15.0.1 → wasmtime-cranelift-shared-16.0.0}/src/compiled_function.rs +0 -0
  1033. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-15.0.1 → wasmtime-cranelift-shared-16.0.0}/src/isa_builder.rs +0 -0
  1034. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-15.0.1 → wasmtime-cranelift-shared-16.0.0}/src/lib.rs +0 -0
  1035. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-15.0.1 → wasmtime-cranelift-shared-16.0.0}/src/obj.rs +0 -0
  1036. /data/ext/cargo-vendor/{wasmtime-cache-15.0.1 → wasmtime-environ-16.0.0}/LICENSE +0 -0
  1037. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/examples/factc.rs +0 -0
  1038. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/address_map.rs +0 -0
  1039. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/builtin.rs +0 -0
  1040. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/component/dfg.rs +0 -0
  1041. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/component/info.rs +0 -0
  1042. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/component/translate/adapt.rs +0 -0
  1043. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/component/translate/inline.rs +0 -0
  1044. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/component/types/resources.rs +0 -0
  1045. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/component/vmcomponent_offsets.rs +0 -0
  1046. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/component.rs +0 -0
  1047. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/fact/core_types.rs +0 -0
  1048. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/fact/signature.rs +0 -0
  1049. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/fact/trampoline.rs +0 -0
  1050. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/fact/transcode.rs +0 -0
  1051. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/fact/traps.rs +0 -0
  1052. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/fact.rs +0 -0
  1053. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/obj.rs +0 -0
  1054. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/ref_bits.rs +0 -0
  1055. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/stack_map.rs +0 -0
  1056. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/trap_encoding.rs +0 -0
  1057. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/tunables.rs +0 -0
  1058. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-environ-16.0.0}/src/vmoffsets.rs +0 -0
  1059. /data/ext/cargo-vendor/{wasmtime-cranelift-15.0.1 → wasmtime-fiber-16.0.0}/LICENSE +0 -0
  1060. /data/ext/cargo-vendor/{wasmtime-fiber-15.0.1 → wasmtime-fiber-16.0.0}/build.rs +0 -0
  1061. /data/ext/cargo-vendor/{wasmtime-fiber-15.0.1 → wasmtime-fiber-16.0.0}/src/unix/aarch64.rs +0 -0
  1062. /data/ext/cargo-vendor/{wasmtime-fiber-15.0.1 → wasmtime-fiber-16.0.0}/src/unix/arm.rs +0 -0
  1063. /data/ext/cargo-vendor/{wasmtime-fiber-15.0.1 → wasmtime-fiber-16.0.0}/src/unix/riscv64.rs +0 -0
  1064. /data/ext/cargo-vendor/{wasmtime-fiber-15.0.1 → wasmtime-fiber-16.0.0}/src/unix/s390x.S +0 -0
  1065. /data/ext/cargo-vendor/{wasmtime-fiber-15.0.1 → wasmtime-fiber-16.0.0}/src/unix/x86.rs +0 -0
  1066. /data/ext/cargo-vendor/{wasmtime-fiber-15.0.1 → wasmtime-fiber-16.0.0}/src/unix/x86_64.rs +0 -0
  1067. /data/ext/cargo-vendor/{wasmtime-fiber-15.0.1 → wasmtime-fiber-16.0.0}/src/windows.rs +0 -0
  1068. /data/ext/cargo-vendor/{wasmtime-environ-15.0.1 → wasmtime-jit-16.0.0}/LICENSE +0 -0
  1069. /data/ext/cargo-vendor/{wasmtime-jit-15.0.1 → wasmtime-jit-16.0.0}/src/debug.rs +0 -0
  1070. /data/ext/cargo-vendor/{wasmtime-jit-15.0.1 → wasmtime-jit-16.0.0}/src/demangling.rs +0 -0
  1071. /data/ext/cargo-vendor/{wasmtime-jit-15.0.1 → wasmtime-jit-16.0.0}/src/profiling/jitdump.rs +0 -0
  1072. /data/ext/cargo-vendor/{wasmtime-jit-15.0.1 → wasmtime-jit-16.0.0}/src/profiling/perfmap.rs +0 -0
  1073. /data/ext/cargo-vendor/{wasmtime-jit-15.0.1 → wasmtime-jit-16.0.0}/src/profiling/vtune.rs +0 -0
  1074. /data/ext/cargo-vendor/{wasmtime-jit-15.0.1 → wasmtime-jit-16.0.0}/src/profiling.rs +0 -0
  1075. /data/ext/cargo-vendor/{wasmtime-jit-debug-15.0.1 → wasmtime-jit-debug-16.0.0}/README.md +0 -0
  1076. /data/ext/cargo-vendor/{wasmtime-jit-debug-15.0.1 → wasmtime-jit-debug-16.0.0}/src/gdb_jit_int.rs +0 -0
  1077. /data/ext/cargo-vendor/{wasmtime-jit-debug-15.0.1 → wasmtime-jit-debug-16.0.0}/src/lib.rs +0 -0
  1078. /data/ext/cargo-vendor/{wasmtime-jit-debug-15.0.1 → wasmtime-jit-debug-16.0.0}/src/perf_jitdump.rs +0 -0
  1079. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-15.0.1 → wasmtime-jit-icache-coherence-16.0.0}/src/lib.rs +0 -0
  1080. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-15.0.1 → wasmtime-jit-icache-coherence-16.0.0}/src/libc.rs +0 -0
  1081. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-15.0.1 → wasmtime-jit-icache-coherence-16.0.0}/src/miri.rs +0 -0
  1082. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-15.0.1 → wasmtime-jit-icache-coherence-16.0.0}/src/win.rs +0 -0
  1083. /data/ext/cargo-vendor/{wasmtime-fiber-15.0.1 → wasmtime-runtime-16.0.0}/LICENSE +0 -0
  1084. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1/src/trampolines → wasmtime-runtime-16.0.0/src/arch}/s390x.S +0 -0
  1085. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/component/libcalls.rs +0 -0
  1086. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/component/resources.rs +0 -0
  1087. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/component.rs +0 -0
  1088. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/debug_builtins.rs +0 -0
  1089. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/export.rs +0 -0
  1090. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/externref.rs +0 -0
  1091. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/imports.rs +0 -0
  1092. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/instance/allocator/on_demand.rs +0 -0
  1093. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/instance/allocator/pooling/index_allocator.rs +0 -0
  1094. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/instance/allocator.rs +0 -0
  1095. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/instance.rs +0 -0
  1096. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/memory.rs +0 -0
  1097. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/mmap_vec.rs +0 -0
  1098. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/module_id.rs +0 -0
  1099. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/mpk/disabled.rs +0 -0
  1100. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/mpk/mod.rs +0 -0
  1101. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/mpk/sys.rs +0 -0
  1102. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/parking_spot.rs +0 -0
  1103. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/send_sync_ptr.rs +0 -0
  1104. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/store_box.rs +0 -0
  1105. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1/src/mmap/miri.rs → wasmtime-runtime-16.0.0/src/sys/miri/mmap.rs} +0 -0
  1106. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1/src/mmap/unix.rs → wasmtime-runtime-16.0.0/src/sys/unix/mmap.rs} +0 -0
  1107. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1/src/mmap/windows.rs → wasmtime-runtime-16.0.0/src/sys/windows/mmap.rs} +0 -0
  1108. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/table.rs +0 -0
  1109. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/traphandlers/coredump.rs +0 -0
  1110. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-runtime-16.0.0}/src/vmcontext/vm_host_func_context.rs +0 -0
  1111. /data/ext/cargo-vendor/{wasmtime-jit-15.0.1 → wasmtime-types-16.0.0}/LICENSE +0 -0
  1112. /data/ext/cargo-vendor/{wasmtime-types-15.0.1 → wasmtime-types-16.0.0}/src/error.rs +0 -0
  1113. /data/ext/cargo-vendor/{wasmtime-versioned-export-macros-15.0.1 → wasmtime-versioned-export-macros-16.0.0}/src/lib.rs +0 -0
  1114. /data/ext/cargo-vendor/{wasmtime-runtime-15.0.1 → wasmtime-wasi-16.0.0}/LICENSE +0 -0
  1115. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/README.md +0 -0
  1116. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/build.rs +0 -0
  1117. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/clocks/host.rs +0 -0
  1118. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/clocks.rs +0 -0
  1119. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/command.rs +0 -0
  1120. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/ctx.rs +0 -0
  1121. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/error.rs +0 -0
  1122. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/filesystem.rs +0 -0
  1123. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/host/clocks.rs +0 -0
  1124. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/host/env.rs +0 -0
  1125. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/host/exit.rs +0 -0
  1126. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/host/filesystem/sync.rs +0 -0
  1127. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/host/filesystem.rs +0 -0
  1128. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/host/instance_network.rs +0 -0
  1129. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/host/mod.rs +0 -0
  1130. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/host/random.rs +0 -0
  1131. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/host/tcp_create_socket.rs +0 -0
  1132. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/host/udp_create_socket.rs +0 -0
  1133. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/ip_name_lookup.rs +0 -0
  1134. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/network.rs +0 -0
  1135. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/pipe.rs +0 -0
  1136. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/poll.rs +0 -0
  1137. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/random.rs +0 -0
  1138. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/stdio/worker_thread_stdin.rs +0 -0
  1139. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/tcp.rs +0 -0
  1140. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/udp.rs +0 -0
  1141. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/src/preview2/write_stream.rs +0 -0
  1142. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/cli/environment.wit +0 -0
  1143. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/cli/exit.wit +0 -0
  1144. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/cli/run.wit +0 -0
  1145. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/cli/stdio.wit +0 -0
  1146. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/cli/terminal.wit +0 -0
  1147. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/clocks/monotonic-clock.wit +0 -0
  1148. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/clocks/wall-clock.wit +0 -0
  1149. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/clocks/world.wit +0 -0
  1150. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/filesystem/preopens.wit +0 -0
  1151. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/filesystem/types.wit +0 -0
  1152. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/filesystem/world.wit +0 -0
  1153. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/http/handler.wit +0 -0
  1154. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/io/error.wit +0 -0
  1155. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/io/poll.wit +0 -0
  1156. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/io/streams.wit +0 -0
  1157. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/io/world.wit +0 -0
  1158. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/random/insecure-seed.wit +0 -0
  1159. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/random/insecure.wit +0 -0
  1160. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/random/random.wit +0 -0
  1161. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/random/world.wit +0 -0
  1162. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/sockets/instance-network.wit +0 -0
  1163. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/sockets/ip-name-lookup.wit +0 -0
  1164. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/sockets/network.wit +0 -0
  1165. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/sockets/tcp-create-socket.wit +0 -0
  1166. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/sockets/tcp.wit +0 -0
  1167. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/sockets/udp-create-socket.wit +0 -0
  1168. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/sockets/udp.wit +0 -0
  1169. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wasmtime-wasi-16.0.0}/wit/deps/sockets/world.wit +0 -0
  1170. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1/witx → wasmtime-wasi-16.0.0/witx/preview1}/typenames.witx +0 -0
  1171. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1/witx → wasmtime-wasi-16.0.0/witx/preview1}/wasi_snapshot_preview1.witx +0 -0
  1172. /data/ext/cargo-vendor/{wasmtime-winch-15.0.1 → wasmtime-winch-16.0.0}/LICENSE +0 -0
  1173. /data/ext/cargo-vendor/{wasmtime-winch-15.0.1 → wasmtime-winch-16.0.0}/src/builder.rs +0 -0
  1174. /data/ext/cargo-vendor/{wasmtime-winch-15.0.1 → wasmtime-winch-16.0.0}/src/lib.rs +0 -0
  1175. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-15.0.1 → wasmtime-wit-bindgen-16.0.0}/src/lib.rs +0 -0
  1176. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-15.0.1 → wasmtime-wit-bindgen-16.0.0}/src/rust.rs +0 -0
  1177. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-15.0.1 → wasmtime-wit-bindgen-16.0.0}/src/source.rs +0 -0
  1178. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-15.0.1 → wasmtime-wit-bindgen-16.0.0}/src/types.rs +0 -0
  1179. /data/ext/cargo-vendor/{wasmtime-wmemcheck-15.0.1 → wasmtime-wmemcheck-16.0.0}/src/lib.rs +0 -0
  1180. /data/ext/cargo-vendor/{wasmtime-types-15.0.1 → wiggle-16.0.0}/LICENSE +0 -0
  1181. /data/ext/cargo-vendor/{wiggle-15.0.1 → wiggle-16.0.0}/README.md +0 -0
  1182. /data/ext/cargo-vendor/{wiggle-15.0.1 → wiggle-16.0.0}/src/borrow.rs +0 -0
  1183. /data/ext/cargo-vendor/{wiggle-15.0.1 → wiggle-16.0.0}/src/error.rs +0 -0
  1184. /data/ext/cargo-vendor/{wiggle-15.0.1 → wiggle-16.0.0}/src/guest_type.rs +0 -0
  1185. /data/ext/cargo-vendor/{wiggle-15.0.1 → wiggle-16.0.0}/src/region.rs +0 -0
  1186. /data/ext/cargo-vendor/{wiggle-15.0.1 → wiggle-16.0.0}/src/wasmtime.rs +0 -0
  1187. /data/ext/cargo-vendor/{wasmtime-wasi-15.0.1 → wiggle-generate-16.0.0}/LICENSE +0 -0
  1188. /data/ext/cargo-vendor/{wiggle-generate-15.0.1 → wiggle-generate-16.0.0}/README.md +0 -0
  1189. /data/ext/cargo-vendor/{wiggle-generate-15.0.1 → wiggle-generate-16.0.0}/src/codegen_settings.rs +0 -0
  1190. /data/ext/cargo-vendor/{wiggle-generate-15.0.1 → wiggle-generate-16.0.0}/src/config.rs +0 -0
  1191. /data/ext/cargo-vendor/{wiggle-generate-15.0.1 → wiggle-generate-16.0.0}/src/funcs.rs +0 -0
  1192. /data/ext/cargo-vendor/{wiggle-generate-15.0.1 → wiggle-generate-16.0.0}/src/lib.rs +0 -0
  1193. /data/ext/cargo-vendor/{wiggle-generate-15.0.1 → wiggle-generate-16.0.0}/src/lifetimes.rs +0 -0
  1194. /data/ext/cargo-vendor/{wiggle-generate-15.0.1 → wiggle-generate-16.0.0}/src/module_trait.rs +0 -0
  1195. /data/ext/cargo-vendor/{wiggle-generate-15.0.1 → wiggle-generate-16.0.0}/src/names.rs +0 -0
  1196. /data/ext/cargo-vendor/{wiggle-generate-15.0.1 → wiggle-generate-16.0.0}/src/types/error.rs +0 -0
  1197. /data/ext/cargo-vendor/{wiggle-generate-15.0.1 → wiggle-generate-16.0.0}/src/types/flags.rs +0 -0
  1198. /data/ext/cargo-vendor/{wiggle-generate-15.0.1 → wiggle-generate-16.0.0}/src/types/mod.rs +0 -0
  1199. /data/ext/cargo-vendor/{wiggle-generate-15.0.1 → wiggle-generate-16.0.0}/src/wasmtime.rs +0 -0
  1200. /data/ext/cargo-vendor/{wiggle-15.0.1 → wiggle-macro-16.0.0}/LICENSE +0 -0
  1201. /data/ext/cargo-vendor/{wiggle-macro-15.0.1 → wiggle-macro-16.0.0}/src/lib.rs +0 -0
  1202. /data/ext/cargo-vendor/{winch-codegen-0.13.1 → winch-codegen-0.14.0}/LICENSE +0 -0
  1203. /data/ext/cargo-vendor/{winch-codegen-0.13.1 → winch-codegen-0.14.0}/build.rs +0 -0
  1204. /data/ext/cargo-vendor/{winch-codegen-0.13.1 → winch-codegen-0.14.0}/src/codegen/builtin.rs +0 -0
  1205. /data/ext/cargo-vendor/{winch-codegen-0.13.1 → winch-codegen-0.14.0}/src/isa/aarch64/address.rs +0 -0
  1206. /data/ext/cargo-vendor/{winch-codegen-0.13.1 → winch-codegen-0.14.0}/src/isa/aarch64/asm.rs +0 -0
  1207. /data/ext/cargo-vendor/{winch-codegen-0.13.1 → winch-codegen-0.14.0}/src/isa/aarch64/regs.rs +0 -0
  1208. /data/ext/cargo-vendor/{winch-codegen-0.13.1 → winch-codegen-0.14.0}/src/isa/reg.rs +0 -0
  1209. /data/ext/cargo-vendor/{winch-codegen-0.13.1 → winch-codegen-0.14.0}/src/isa/x64/address.rs +0 -0
  1210. /data/ext/cargo-vendor/{winch-codegen-0.13.1 → winch-codegen-0.14.0}/src/lib.rs +0 -0
  1211. /data/ext/cargo-vendor/{winch-codegen-0.13.1 → winch-codegen-0.14.0}/src/regalloc.rs +0 -0
  1212. /data/ext/cargo-vendor/{winch-codegen-0.13.1 → winch-codegen-0.14.0}/src/regset.rs +0 -0
@@ -1,2398 +0,0 @@
1
- use crate::component::func::{Func, LiftContext, LowerContext, Options};
2
- use crate::component::matching::InstanceType;
3
- use crate::component::storage::{storage_as_slice, storage_as_slice_mut};
4
- use crate::{AsContextMut, StoreContext, StoreContextMut, ValRaw};
5
- use anyhow::{anyhow, bail, Context, Result};
6
- use std::borrow::Cow;
7
- use std::fmt;
8
- use std::marker;
9
- use std::mem::{self, MaybeUninit};
10
- use std::ptr::NonNull;
11
- use std::str;
12
- use std::sync::Arc;
13
- use wasmtime_environ::component::{
14
- CanonicalAbiInfo, ComponentTypes, InterfaceType, StringEncoding, VariantInfo, MAX_FLAT_PARAMS,
15
- MAX_FLAT_RESULTS,
16
- };
17
- use wasmtime_runtime::component::ComponentInstance;
18
- use wasmtime_runtime::SendSyncPtr;
19
-
20
- /// A statically-typed version of [`Func`] which takes `Params` as input and
21
- /// returns `Return`.
22
- ///
23
- /// This is an efficient way to invoke a WebAssembly component where if the
24
- /// inputs and output are statically known this can eschew the vast majority of
25
- /// machinery and checks when calling WebAssembly. This is the most optimized
26
- /// way to call a WebAssembly component.
27
- ///
28
- /// Note that like [`Func`] this is a pointer within a [`Store`](crate::Store)
29
- /// and usage will panic if used with the wrong store.
30
- ///
31
- /// This type is primarily created with the [`Func::typed`] API.
32
- pub struct TypedFunc<Params, Return> {
33
- func: Func,
34
-
35
- // The definition of this field is somewhat subtle and may be surprising.
36
- // Naively one might expect something like
37
- //
38
- // _marker: marker::PhantomData<fn(Params) -> Return>,
39
- //
40
- // Since this is a function pointer after all. The problem with this
41
- // definition though is that it imposes the wrong variance on `Params` from
42
- // what we want. Abstractly a `fn(Params)` is able to store `Params` within
43
- // it meaning you can only give it `Params` that live longer than the
44
- // function pointer.
45
- //
46
- // With a component model function, however, we're always copying data from
47
- // the host into the guest, so we are never storing pointers to `Params`
48
- // into the guest outside the duration of a `call`, meaning we can actually
49
- // accept values in `TypedFunc::call` which live for a shorter duration
50
- // than the `Params` argument on the struct.
51
- //
52
- // This all means that we don't use a phantom function pointer, but instead
53
- // feign phantom storage here to get the variance desired.
54
- _marker: marker::PhantomData<(Params, Return)>,
55
- }
56
-
57
- impl<Params, Return> Copy for TypedFunc<Params, Return> {}
58
-
59
- impl<Params, Return> Clone for TypedFunc<Params, Return> {
60
- fn clone(&self) -> TypedFunc<Params, Return> {
61
- *self
62
- }
63
- }
64
-
65
- impl<Params, Return> TypedFunc<Params, Return>
66
- where
67
- Params: ComponentNamedList + Lower,
68
- Return: ComponentNamedList + Lift,
69
- {
70
- /// Creates a new [`TypedFunc`] from the provided component [`Func`],
71
- /// unsafely asserting that the underlying function takes `Params` as
72
- /// input and returns `Return`.
73
- ///
74
- /// # Unsafety
75
- ///
76
- /// This is an unsafe function because it does not verify that the [`Func`]
77
- /// provided actually implements this signature. It's up to the caller to
78
- /// have performed some other sort of check to ensure that the signature is
79
- /// correct.
80
- pub unsafe fn new_unchecked(func: Func) -> TypedFunc<Params, Return> {
81
- TypedFunc {
82
- _marker: marker::PhantomData,
83
- func,
84
- }
85
- }
86
-
87
- /// Returns the underlying un-typed [`Func`] that this [`TypedFunc`]
88
- /// references.
89
- pub fn func(&self) -> &Func {
90
- &self.func
91
- }
92
-
93
- /// Calls the underlying WebAssembly component function using the provided
94
- /// `params` as input.
95
- ///
96
- /// This method is used to enter into a component. Execution happens within
97
- /// the `store` provided. The `params` are copied into WebAssembly memory
98
- /// as appropriate and a core wasm function is invoked.
99
- ///
100
- /// # Post-return
101
- ///
102
- /// In the component model each function can have a "post return" specified
103
- /// which allows cleaning up the arguments returned to the host. For example
104
- /// if WebAssembly returns a string to the host then it might be a uniquely
105
- /// allocated string which, after the host finishes processing it, needs to
106
- /// be deallocated in the wasm instance's own linear memory to prevent
107
- /// memory leaks in wasm itself. The `post-return` canonical abi option is
108
- /// used to configured this.
109
- ///
110
- /// To accommodate this feature of the component model after invoking a
111
- /// function via [`TypedFunc::call`] you must next invoke
112
- /// [`TypedFunc::post_return`]. Note that the return value of the function
113
- /// should be processed between these two function calls. The return value
114
- /// continues to be usable from an embedder's perspective after
115
- /// `post_return` is called, but after `post_return` is invoked it may no
116
- /// longer retain the same value that the wasm module originally returned.
117
- ///
118
- /// Also note that [`TypedFunc::post_return`] must be invoked irrespective
119
- /// of whether the canonical ABI option `post-return` was configured or not.
120
- /// This means that embedders must unconditionally call
121
- /// [`TypedFunc::post_return`] when a function returns. If this function
122
- /// call returns an error, however, then [`TypedFunc::post_return`] is not
123
- /// required.
124
- ///
125
- /// # Errors
126
- ///
127
- /// This function can return an error for a number of reasons:
128
- ///
129
- /// * If the wasm itself traps during execution.
130
- /// * If the wasm traps while copying arguments into memory.
131
- /// * If the wasm provides bad allocation pointers when copying arguments
132
- /// into memory.
133
- /// * If the wasm returns a value which violates the canonical ABI.
134
- /// * If this function's instances cannot be entered, for example if the
135
- /// instance is currently calling a host function.
136
- /// * If a previous function call occurred and the corresponding
137
- /// `post_return` hasn't been invoked yet.
138
- ///
139
- /// In general there are many ways that things could go wrong when copying
140
- /// types in and out of a wasm module with the canonical ABI, and certain
141
- /// error conditions are specific to certain types. For example a
142
- /// WebAssembly module can't return an invalid `char`. When allocating space
143
- /// for this host to copy a string into the returned pointer must be
144
- /// in-bounds in memory.
145
- ///
146
- /// If an error happens then the error should contain detailed enough
147
- /// information to understand which part of the canonical ABI went wrong
148
- /// and what to inspect.
149
- ///
150
- /// # Panics
151
- ///
152
- /// Panics if this is called on a function in an asynchronous store. This
153
- /// only works with functions defined within a synchonous store. Also
154
- /// panics if `store` does not own this function.
155
- pub fn call(&self, store: impl AsContextMut, params: Params) -> Result<Return> {
156
- assert!(
157
- !store.as_context().async_support(),
158
- "must use `call_async` when async support is enabled on the config"
159
- );
160
- self.call_impl(store, params)
161
- }
162
-
163
- /// Exactly like [`Self::call`], except for use on asynchronous stores.
164
- ///
165
- /// # Panics
166
- ///
167
- /// Panics if this is called on a function in a synchronous store. This
168
- /// only works with functions defined within an asynchronous store. Also
169
- /// panics if `store` does not own this function.
170
- #[cfg(feature = "async")]
171
- #[cfg_attr(nightlydoc, doc(cfg(feature = "async")))]
172
- pub async fn call_async<T>(
173
- &self,
174
- mut store: impl AsContextMut<Data = T>,
175
- params: Params,
176
- ) -> Result<Return>
177
- where
178
- T: Send,
179
- Params: Send + Sync,
180
- Return: Send + Sync,
181
- {
182
- let mut store = store.as_context_mut();
183
- assert!(
184
- store.0.async_support(),
185
- "cannot use `call_async` when async support is not enabled on the config"
186
- );
187
- store
188
- .on_fiber(|store| self.call_impl(store, params))
189
- .await?
190
- }
191
-
192
- fn call_impl(&self, mut store: impl AsContextMut, params: Params) -> Result<Return> {
193
- let store = &mut store.as_context_mut();
194
- // Note that this is in theory simpler than it might read at this time.
195
- // Here we're doing a runtime dispatch on the `flatten_count` for the
196
- // params/results to see whether they're inbounds. This creates 4 cases
197
- // to handle. In reality this is a highly optimizable branch where LLVM
198
- // will easily figure out that only one branch here is taken.
199
- //
200
- // Otherwise this current construction is done to ensure that the stack
201
- // space reserved for the params/results is always of the appropriate
202
- // size (as the params/results needed differ depending on the "flatten"
203
- // count)
204
- if Params::flatten_count() <= MAX_FLAT_PARAMS {
205
- if Return::flatten_count() <= MAX_FLAT_RESULTS {
206
- self.func.call_raw(
207
- store,
208
- &params,
209
- Self::lower_stack_args,
210
- Self::lift_stack_result,
211
- )
212
- } else {
213
- self.func.call_raw(
214
- store,
215
- &params,
216
- Self::lower_stack_args,
217
- Self::lift_heap_result,
218
- )
219
- }
220
- } else {
221
- if Return::flatten_count() <= MAX_FLAT_RESULTS {
222
- self.func.call_raw(
223
- store,
224
- &params,
225
- Self::lower_heap_args,
226
- Self::lift_stack_result,
227
- )
228
- } else {
229
- self.func.call_raw(
230
- store,
231
- &params,
232
- Self::lower_heap_args,
233
- Self::lift_heap_result,
234
- )
235
- }
236
- }
237
- }
238
-
239
- /// Lower parameters directly onto the stack specified by the `dst`
240
- /// location.
241
- ///
242
- /// This is only valid to call when the "flatten count" is small enough, or
243
- /// when the canonical ABI says arguments go through the stack rather than
244
- /// the heap.
245
- fn lower_stack_args<T>(
246
- cx: &mut LowerContext<'_, T>,
247
- params: &Params,
248
- ty: InterfaceType,
249
- dst: &mut MaybeUninit<Params::Lower>,
250
- ) -> Result<()> {
251
- assert!(Params::flatten_count() <= MAX_FLAT_PARAMS);
252
- params.lower(cx, ty, dst)?;
253
- Ok(())
254
- }
255
-
256
- /// Lower parameters onto a heap-allocated location.
257
- ///
258
- /// This is used when the stack space to be used for the arguments is above
259
- /// the `MAX_FLAT_PARAMS` threshold. Here the wasm's `realloc` function is
260
- /// invoked to allocate space and then parameters are stored at that heap
261
- /// pointer location.
262
- fn lower_heap_args<T>(
263
- cx: &mut LowerContext<'_, T>,
264
- params: &Params,
265
- ty: InterfaceType,
266
- dst: &mut MaybeUninit<ValRaw>,
267
- ) -> Result<()> {
268
- assert!(Params::flatten_count() > MAX_FLAT_PARAMS);
269
-
270
- // Memory must exist via validation if the arguments are stored on the
271
- // heap, so we can create a `MemoryMut` at this point. Afterwards
272
- // `realloc` is used to allocate space for all the arguments and then
273
- // they're all stored in linear memory.
274
- //
275
- // Note that `realloc` will bake in a check that the returned pointer is
276
- // in-bounds.
277
- let ptr = cx.realloc(0, 0, Params::ALIGN32, Params::SIZE32)?;
278
- params.store(cx, ty, ptr)?;
279
-
280
- // Note that the pointer here is stored as a 64-bit integer. This allows
281
- // this to work with either 32 or 64-bit memories. For a 32-bit memory
282
- // it'll just ignore the upper 32 zero bits, and for 64-bit memories
283
- // this'll have the full 64-bits. Note that for 32-bit memories the call
284
- // to `realloc` above guarantees that the `ptr` is in-bounds meaning
285
- // that we will know that the zero-extended upper bits of `ptr` are
286
- // guaranteed to be zero.
287
- //
288
- // This comment about 64-bit integers is also referred to below with
289
- // "WRITEPTR64".
290
- dst.write(ValRaw::i64(ptr as i64));
291
-
292
- Ok(())
293
- }
294
-
295
- /// Lift the result of a function directly from the stack result.
296
- ///
297
- /// This is only used when the result fits in the maximum number of stack
298
- /// slots.
299
- fn lift_stack_result(
300
- cx: &mut LiftContext<'_>,
301
- ty: InterfaceType,
302
- dst: &Return::Lower,
303
- ) -> Result<Return> {
304
- assert!(Return::flatten_count() <= MAX_FLAT_RESULTS);
305
- Return::lift(cx, ty, dst)
306
- }
307
-
308
- /// Lift the result of a function where the result is stored indirectly on
309
- /// the heap.
310
- fn lift_heap_result(
311
- cx: &mut LiftContext<'_>,
312
- ty: InterfaceType,
313
- dst: &ValRaw,
314
- ) -> Result<Return> {
315
- assert!(Return::flatten_count() > MAX_FLAT_RESULTS);
316
- // FIXME: needs to read an i64 for memory64
317
- let ptr = usize::try_from(dst.get_u32())?;
318
- if ptr % usize::try_from(Return::ALIGN32)? != 0 {
319
- bail!("return pointer not aligned");
320
- }
321
-
322
- let bytes = cx
323
- .memory()
324
- .get(ptr..)
325
- .and_then(|b| b.get(..Return::SIZE32))
326
- .ok_or_else(|| anyhow::anyhow!("pointer out of bounds of memory"))?;
327
- Return::load(cx, ty, bytes)
328
- }
329
-
330
- /// See [`Func::post_return`]
331
- pub fn post_return(&self, store: impl AsContextMut) -> Result<()> {
332
- self.func.post_return(store)
333
- }
334
-
335
- /// See [`Func::post_return_async`]
336
- #[cfg(feature = "async")]
337
- #[cfg_attr(nightlydoc, doc(cfg(feature = "async")))]
338
- pub async fn post_return_async<T: Send>(
339
- &self,
340
- store: impl AsContextMut<Data = T>,
341
- ) -> Result<()> {
342
- self.func.post_return_async(store).await
343
- }
344
- }
345
-
346
- /// A trait representing a static list of named types that can be passed to or
347
- /// returned from a [`TypedFunc`].
348
- ///
349
- /// This trait is implemented for a number of tuple types and is not expected
350
- /// to be implemented externally. The contents of this trait are hidden as it's
351
- /// intended to be an implementation detail of Wasmtime. The contents of this
352
- /// trait are not covered by Wasmtime's stability guarantees.
353
- ///
354
- /// For more information about this trait see [`Func::typed`] and
355
- /// [`TypedFunc`].
356
- //
357
- // Note that this is an `unsafe` trait, and the unsafety means that
358
- // implementations of this trait must be correct or otherwise [`TypedFunc`]
359
- // would not be memory safe. The main reason this is `unsafe` is the
360
- // `typecheck` function which must operate correctly relative to the `AsTuple`
361
- // interpretation of the implementor.
362
- pub unsafe trait ComponentNamedList: ComponentType {}
363
-
364
- /// A trait representing types which can be passed to and read from components
365
- /// with the canonical ABI.
366
- ///
367
- /// This trait is implemented for Rust types which can be communicated to
368
- /// components. This is implemented for Rust types which correspond to
369
- /// interface types in the component model of WebAssembly. The [`Func::typed`]
370
- /// and [`TypedFunc`] Rust items are the main consumers of this trait.
371
- ///
372
- /// For more information on this trait see the examples in [`Func::typed`].
373
- ///
374
- /// The contents of this trait are hidden as it's intended to be an
375
- /// implementation detail of Wasmtime. The contents of this trait are not
376
- /// covered by Wasmtime's stability guarantees.
377
- //
378
- // Note that this is an `unsafe` trait as `TypedFunc`'s safety heavily relies on
379
- // the correctness of the implementations of this trait. Some ways in which this
380
- // trait must be correct to be safe are:
381
- //
382
- // * The `Lower` associated type must be a `ValRaw` sequence. It doesn't have to
383
- // literally be `[ValRaw; N]` but when laid out in memory it must be adjacent
384
- // `ValRaw` values and have a multiple of the size of `ValRaw` and the same
385
- // alignment.
386
- //
387
- // * The `lower` function must initialize the bits within `Lower` that are going
388
- // to be read by the trampoline that's used to enter core wasm. A trampoline
389
- // is passed `*mut Lower` and will read the canonical abi arguments in
390
- // sequence, so all of the bits must be correctly initialized.
391
- //
392
- // * The `size` and `align` functions must be correct for this value stored in
393
- // the canonical ABI. The `Cursor<T>` iteration of these bytes rely on this
394
- // for correctness as they otherwise eschew bounds-checking.
395
- //
396
- // There are likely some other correctness issues which aren't documented as
397
- // well, this isn't intended to be an exhaustive list. It suffices to say,
398
- // though, that correctness bugs in this trait implementation are highly likely
399
- // to lead to security bugs, which again leads to the `unsafe` in the trait.
400
- //
401
- // Also note that this trait specifically is not sealed because we have a proc
402
- // macro that generates implementations of this trait for external types in a
403
- // `#[derive]`-like fashion.
404
- pub unsafe trait ComponentType {
405
- /// Representation of the "lowered" form of this component value.
406
- ///
407
- /// Lowerings lower into core wasm values which are represented by `ValRaw`.
408
- /// This `Lower` type must be a list of `ValRaw` as either a literal array
409
- /// or a struct where every field is a `ValRaw`. This must be `Copy` (as
410
- /// `ValRaw` is `Copy`) and support all byte patterns. This being correct is
411
- /// one reason why the trait is unsafe.
412
- #[doc(hidden)]
413
- type Lower: Copy;
414
-
415
- /// The information about this type's canonical ABI (size/align/etc).
416
- #[doc(hidden)]
417
- const ABI: CanonicalAbiInfo;
418
-
419
- #[doc(hidden)]
420
- const SIZE32: usize = Self::ABI.size32 as usize;
421
- #[doc(hidden)]
422
- const ALIGN32: u32 = Self::ABI.align32;
423
-
424
- #[doc(hidden)]
425
- const IS_RUST_UNIT_TYPE: bool = false;
426
-
427
- /// Returns the number of core wasm abi values will be used to represent
428
- /// this type in its lowered form.
429
- ///
430
- /// This divides the size of `Self::Lower` by the size of `ValRaw`.
431
- #[doc(hidden)]
432
- fn flatten_count() -> usize {
433
- assert!(mem::size_of::<Self::Lower>() % mem::size_of::<ValRaw>() == 0);
434
- assert!(mem::align_of::<Self::Lower>() == mem::align_of::<ValRaw>());
435
- mem::size_of::<Self::Lower>() / mem::size_of::<ValRaw>()
436
- }
437
-
438
- /// Performs a type-check to see whether this component value type matches
439
- /// the interface type `ty` provided.
440
- #[doc(hidden)]
441
- fn typecheck(ty: &InterfaceType, types: &InstanceType<'_>) -> Result<()>;
442
- }
443
-
444
- #[doc(hidden)]
445
- pub unsafe trait ComponentVariant: ComponentType {
446
- const CASES: &'static [Option<CanonicalAbiInfo>];
447
- const INFO: VariantInfo = VariantInfo::new_static(Self::CASES);
448
- const PAYLOAD_OFFSET32: usize = Self::INFO.payload_offset32 as usize;
449
- }
450
-
451
- /// Host types which can be passed to WebAssembly components.
452
- ///
453
- /// This trait is implemented for all types that can be passed to components
454
- /// either as parameters of component exports or returns of component imports.
455
- /// This trait represents the ability to convert from the native host
456
- /// representation to the canonical ABI.
457
- //
458
- // TODO: #[derive(Lower)]
459
- // TODO: more docs here
460
- pub unsafe trait Lower: ComponentType {
461
- /// Performs the "lower" function in the canonical ABI.
462
- ///
463
- /// This method will lower the current value into a component. The `lower`
464
- /// function performs a "flat" lowering into the `dst` specified which is
465
- /// allowed to be uninitialized entering this method but is guaranteed to be
466
- /// fully initialized if the method returns `Ok(())`.
467
- ///
468
- /// The `cx` context provided is the context within which this lowering is
469
- /// happening. This contains information such as canonical options specified
470
- /// (e.g. string encodings, memories, etc), the store itself, along with
471
- /// type information.
472
- ///
473
- /// The `ty` parameter is the destination type that is being lowered into.
474
- /// For example this is the component's "view" of the type that is being
475
- /// lowered. This is guaranteed to have passed a `typecheck` earlier.
476
- ///
477
- /// This will only be called if `typecheck` passes for `Op::Lower`.
478
- #[doc(hidden)]
479
- fn lower<T>(
480
- &self,
481
- cx: &mut LowerContext<'_, T>,
482
- ty: InterfaceType,
483
- dst: &mut MaybeUninit<Self::Lower>,
484
- ) -> Result<()>;
485
-
486
- /// Performs the "store" operation in the canonical ABI.
487
- ///
488
- /// This function will store `self` into the linear memory described by
489
- /// `cx` at the `offset` provided.
490
- ///
491
- /// It is expected that `offset` is a valid offset in memory for
492
- /// `Self::SIZE32` bytes. At this time that's not an unsafe contract as it's
493
- /// always re-checked on all stores, but this is something that will need to
494
- /// be improved in the future to remove extra bounds checks. For now this
495
- /// function will panic if there's a bug and `offset` isn't valid within
496
- /// memory.
497
- ///
498
- /// The `ty` type information passed here is the same as the type
499
- /// information passed to `lower` above, and is the component's own view of
500
- /// what the resulting type should be.
501
- ///
502
- /// This will only be called if `typecheck` passes for `Op::Lower`.
503
- #[doc(hidden)]
504
- fn store<T>(
505
- &self,
506
- cx: &mut LowerContext<'_, T>,
507
- ty: InterfaceType,
508
- offset: usize,
509
- ) -> Result<()>;
510
-
511
- /// Provided method to lower a list of `Self` into memory.
512
- ///
513
- /// Requires that `offset` has already been checked for alignment and
514
- /// validity in terms of being in-bounds, otherwise this may panic.
515
- ///
516
- /// This is primarily here to get overridden for implementations of integers
517
- /// which can avoid some extra fluff and use a pattern that's more easily
518
- /// optimizable by LLVM.
519
- #[doc(hidden)]
520
- fn store_list<T>(
521
- cx: &mut LowerContext<'_, T>,
522
- ty: InterfaceType,
523
- mut offset: usize,
524
- items: &[Self],
525
- ) -> Result<()>
526
- where
527
- Self: Sized,
528
- {
529
- for item in items {
530
- item.store(cx, ty, offset)?;
531
- offset += Self::SIZE32;
532
- }
533
- Ok(())
534
- }
535
- }
536
-
537
- /// Host types which can be created from the canonical ABI.
538
- //
539
- // TODO: #[derive(Lower)]
540
- // TODO: more docs here
541
- pub unsafe trait Lift: Sized + ComponentType {
542
- /// Performs the "lift" operation in the canonical ABI.
543
- ///
544
- /// This function performs a "flat" lift operation from the `src` specified
545
- /// which is a sequence of core wasm values. The lifting operation will
546
- /// validate core wasm values and produce a `Self` on success.
547
- ///
548
- /// The `cx` provided contains contextual information such as the store
549
- /// that's being loaded from, canonical options, and type information.
550
- ///
551
- /// The `ty` parameter is the origin component's specification for what the
552
- /// type that is being lifted is. For example this is the record type or the
553
- /// resource type that is being lifted.
554
- ///
555
- /// Note that this has a default implementation but if `typecheck` passes
556
- /// for `Op::Lift` this needs to be overridden.
557
- #[doc(hidden)]
558
- fn lift(cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self>;
559
-
560
- /// Performs the "load" operation in the canonical ABI.
561
- ///
562
- /// This will read the `bytes` provided, which are a sub-slice into the
563
- /// linear memory described by `cx`. The `bytes` array provided is
564
- /// guaranteed to be `Self::SIZE32` bytes large. All of memory is then also
565
- /// available through `cx` for bounds-checks and such as necessary for
566
- /// strings/lists.
567
- ///
568
- /// The `ty` argument is the type that's being loaded, as described by the
569
- /// original component.
570
- ///
571
- /// Note that this has a default implementation but if `typecheck` passes
572
- /// for `Op::Lift` this needs to be overridden.
573
- #[doc(hidden)]
574
- fn load(cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self>;
575
-
576
- /// Converts `list` into a `Vec<T>`, used in `Lift for Vec<T>`.
577
- ///
578
- /// This is primarily here to get overridden for implementations of integers
579
- /// which can avoid some extra fluff and use a pattern that's more easily
580
- /// optimizable by LLVM.
581
- #[doc(hidden)]
582
- fn load_list(cx: &mut LiftContext<'_>, list: &WasmList<Self>) -> Result<Vec<Self>>
583
- where
584
- Self: Sized,
585
- {
586
- (0..list.len)
587
- .map(|index| list.get_from_store(cx, index).unwrap())
588
- .collect()
589
- }
590
- }
591
-
592
- // Macro to help generate "forwarding implementations" of `ComponentType` to
593
- // another type, used for wrappers in Rust like `&T`, `Box<T>`, etc. Note that
594
- // these wrappers only implement lowering because lifting native Rust types
595
- // cannot be done.
596
- macro_rules! forward_type_impls {
597
- ($(($($generics:tt)*) $a:ty => $b:ty,)*) => ($(
598
- unsafe impl <$($generics)*> ComponentType for $a {
599
- type Lower = <$b as ComponentType>::Lower;
600
-
601
- const ABI: CanonicalAbiInfo = <$b as ComponentType>::ABI;
602
-
603
- #[inline]
604
- fn typecheck(ty: &InterfaceType, types: &InstanceType<'_>) -> Result<()> {
605
- <$b as ComponentType>::typecheck(ty, types)
606
- }
607
- }
608
- )*)
609
- }
610
-
611
- forward_type_impls! {
612
- (T: ComponentType + ?Sized) &'_ T => T,
613
- (T: ComponentType + ?Sized) Box<T> => T,
614
- (T: ComponentType + ?Sized) std::rc::Rc<T> => T,
615
- (T: ComponentType + ?Sized) std::sync::Arc<T> => T,
616
- () String => str,
617
- (T: ComponentType) Vec<T> => [T],
618
- }
619
-
620
- macro_rules! forward_lowers {
621
- ($(($($generics:tt)*) $a:ty => $b:ty,)*) => ($(
622
- unsafe impl <$($generics)*> Lower for $a {
623
- fn lower<U>(
624
- &self,
625
- cx: &mut LowerContext<'_, U>,
626
- ty: InterfaceType,
627
- dst: &mut MaybeUninit<Self::Lower>,
628
- ) -> Result<()> {
629
- <$b as Lower>::lower(self, cx, ty, dst)
630
- }
631
-
632
- fn store<U>(
633
- &self,
634
- cx: &mut LowerContext<'_, U>,
635
- ty: InterfaceType,
636
- offset: usize,
637
- ) -> Result<()> {
638
- <$b as Lower>::store(self, cx, ty, offset)
639
- }
640
- }
641
- )*)
642
- }
643
-
644
- forward_lowers! {
645
- (T: Lower + ?Sized) &'_ T => T,
646
- (T: Lower + ?Sized) Box<T> => T,
647
- (T: Lower + ?Sized) std::rc::Rc<T> => T,
648
- (T: Lower + ?Sized) std::sync::Arc<T> => T,
649
- () String => str,
650
- (T: Lower) Vec<T> => [T],
651
- }
652
-
653
- macro_rules! forward_string_lifts {
654
- ($($a:ty,)*) => ($(
655
- unsafe impl Lift for $a {
656
- #[inline]
657
- fn lift(cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self> {
658
- Ok(<WasmStr as Lift>::lift(cx, ty, src)?.to_str_from_memory(cx.memory())?.into())
659
- }
660
-
661
- #[inline]
662
- fn load(cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
663
- Ok(<WasmStr as Lift>::load(cx, ty, bytes)?.to_str_from_memory(cx.memory())?.into())
664
- }
665
- }
666
- )*)
667
- }
668
-
669
- forward_string_lifts! {
670
- Box<str>,
671
- std::rc::Rc<str>,
672
- std::sync::Arc<str>,
673
- String,
674
- }
675
-
676
- macro_rules! forward_list_lifts {
677
- ($($a:ty,)*) => ($(
678
- unsafe impl <T: Lift> Lift for $a {
679
- fn lift(cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self> {
680
- let list = <WasmList::<T> as Lift>::lift(cx, ty, src)?;
681
- Ok(T::load_list(cx, &list)?.into())
682
- }
683
-
684
- fn load(cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
685
- let list = <WasmList::<T> as Lift>::load(cx, ty, bytes)?;
686
- Ok(T::load_list(cx, &list)?.into())
687
- }
688
- }
689
- )*)
690
- }
691
-
692
- forward_list_lifts! {
693
- Box<[T]>,
694
- std::rc::Rc<[T]>,
695
- std::sync::Arc<[T]>,
696
- Vec<T>,
697
- }
698
-
699
- // Macro to help generate `ComponentType` implementations for primitive types
700
- // such as integers, char, bool, etc.
701
- macro_rules! integers {
702
- ($($primitive:ident = $ty:ident in $field:ident/$get:ident with abi:$abi:ident,)*) => ($(
703
- unsafe impl ComponentType for $primitive {
704
- type Lower = ValRaw;
705
-
706
- const ABI: CanonicalAbiInfo = CanonicalAbiInfo::$abi;
707
-
708
- fn typecheck(ty: &InterfaceType, _types: &InstanceType<'_>) -> Result<()> {
709
- match ty {
710
- InterfaceType::$ty => Ok(()),
711
- other => bail!("expected `{}` found `{}`", desc(&InterfaceType::$ty), desc(other))
712
- }
713
- }
714
- }
715
-
716
- unsafe impl Lower for $primitive {
717
- #[inline]
718
- fn lower<T>(
719
- &self,
720
- _cx: &mut LowerContext<'_, T>,
721
- ty: InterfaceType,
722
- dst: &mut MaybeUninit<Self::Lower>,
723
- ) -> Result<()> {
724
- debug_assert!(matches!(ty, InterfaceType::$ty));
725
- dst.write(ValRaw::$field(*self as $field));
726
- Ok(())
727
- }
728
-
729
- #[inline]
730
- fn store<T>(
731
- &self,
732
- cx: &mut LowerContext<'_, T>,
733
- ty: InterfaceType,
734
- offset: usize,
735
- ) -> Result<()> {
736
- debug_assert!(matches!(ty, InterfaceType::$ty));
737
- debug_assert!(offset % Self::SIZE32 == 0);
738
- *cx.get(offset) = self.to_le_bytes();
739
- Ok(())
740
- }
741
-
742
- fn store_list<T>(
743
- cx: &mut LowerContext<'_, T>,
744
- ty: InterfaceType,
745
- offset: usize,
746
- items: &[Self],
747
- ) -> Result<()> {
748
- debug_assert!(matches!(ty, InterfaceType::$ty));
749
-
750
- // Double-check that the CM alignment is at least the host's
751
- // alignment for this type which should be true for all
752
- // platforms.
753
- assert!((Self::ALIGN32 as usize) >= mem::align_of::<Self>());
754
-
755
- // Slice `cx`'s memory to the window that we'll be modifying.
756
- // This should all have already been verified in terms of
757
- // alignment and sizing meaning that these assertions here are
758
- // not truly necessary but are instead double-checks.
759
- //
760
- // Note that we're casting a `[u8]` slice to `[Self]` with
761
- // `align_to_mut` which is not safe in general but is safe in
762
- // our specific case as all `u8` patterns are valid `Self`
763
- // patterns since `Self` is an integral type.
764
- let dst = &mut cx.as_slice_mut()[offset..][..items.len() * Self::SIZE32];
765
- let (before, middle, end) = unsafe { dst.align_to_mut::<Self>() };
766
- assert!(before.is_empty() && end.is_empty());
767
- assert_eq!(middle.len(), items.len());
768
-
769
- // And with all that out of the way perform the copying loop.
770
- // This is not a `copy_from_slice` because endianness needs to
771
- // be handled here, but LLVM should pretty easily transform this
772
- // into a memcpy on little-endian platforms.
773
- for (dst, src) in middle.iter_mut().zip(items) {
774
- *dst = src.to_le();
775
- }
776
- Ok(())
777
- }
778
- }
779
-
780
- unsafe impl Lift for $primitive {
781
- #[inline]
782
- fn lift(_cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self> {
783
- debug_assert!(matches!(ty, InterfaceType::$ty));
784
- Ok(src.$get() as $primitive)
785
- }
786
-
787
- #[inline]
788
- fn load(_cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
789
- debug_assert!(matches!(ty, InterfaceType::$ty));
790
- debug_assert!((bytes.as_ptr() as usize) % Self::SIZE32 == 0);
791
- Ok($primitive::from_le_bytes(bytes.try_into().unwrap()))
792
- }
793
-
794
- fn load_list(cx: &mut LiftContext<'_>, list: &WasmList<Self>) -> Result<Vec<Self>> {
795
- Ok(
796
- list._as_le_slice(cx.memory())
797
- .iter()
798
- .map(|i| Self::from_le(*i))
799
- .collect(),
800
- )
801
- }
802
- }
803
- )*)
804
- }
805
-
806
- integers! {
807
- i8 = S8 in i32/get_i32 with abi:SCALAR1,
808
- u8 = U8 in u32/get_u32 with abi:SCALAR1,
809
- i16 = S16 in i32/get_i32 with abi:SCALAR2,
810
- u16 = U16 in u32/get_u32 with abi:SCALAR2,
811
- i32 = S32 in i32/get_i32 with abi:SCALAR4,
812
- u32 = U32 in u32/get_u32 with abi:SCALAR4,
813
- i64 = S64 in i64/get_i64 with abi:SCALAR8,
814
- u64 = U64 in u64/get_u64 with abi:SCALAR8,
815
- }
816
-
817
- macro_rules! floats {
818
- ($($float:ident/$get_float:ident = $ty:ident with abi:$abi:ident)*) => ($(const _: () = {
819
- /// All floats in-and-out of the canonical abi always have their nan
820
- /// payloads canonicalized. conveniently the `NAN` constant in rust has
821
- /// the same representation as canonical nan, so we can use that for the
822
- /// nan value.
823
- #[inline]
824
- fn canonicalize(float: $float) -> $float {
825
- if float.is_nan() {
826
- $float::NAN
827
- } else {
828
- float
829
- }
830
- }
831
-
832
- unsafe impl ComponentType for $float {
833
- type Lower = ValRaw;
834
-
835
- const ABI: CanonicalAbiInfo = CanonicalAbiInfo::$abi;
836
-
837
- fn typecheck(ty: &InterfaceType, _types: &InstanceType<'_>) -> Result<()> {
838
- match ty {
839
- InterfaceType::$ty => Ok(()),
840
- other => bail!("expected `{}` found `{}`", desc(&InterfaceType::$ty), desc(other))
841
- }
842
- }
843
- }
844
-
845
- unsafe impl Lower for $float {
846
- #[inline]
847
- fn lower<T>(
848
- &self,
849
- _cx: &mut LowerContext<'_, T>,
850
- ty: InterfaceType,
851
- dst: &mut MaybeUninit<Self::Lower>,
852
- ) -> Result<()> {
853
- debug_assert!(matches!(ty, InterfaceType::$ty));
854
- dst.write(ValRaw::$float(canonicalize(*self).to_bits()));
855
- Ok(())
856
- }
857
-
858
- #[inline]
859
- fn store<T>(
860
- &self,
861
- cx: &mut LowerContext<'_, T>,
862
- ty: InterfaceType,
863
- offset: usize,
864
- ) -> Result<()> {
865
- debug_assert!(matches!(ty, InterfaceType::$ty));
866
- debug_assert!(offset % Self::SIZE32 == 0);
867
- let ptr = cx.get(offset);
868
- *ptr = canonicalize(*self).to_bits().to_le_bytes();
869
- Ok(())
870
- }
871
- }
872
-
873
- unsafe impl Lift for $float {
874
- #[inline]
875
- fn lift(_cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self> {
876
- debug_assert!(matches!(ty, InterfaceType::$ty));
877
- Ok(canonicalize($float::from_bits(src.$get_float())))
878
- }
879
-
880
- #[inline]
881
- fn load(_cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
882
- debug_assert!(matches!(ty, InterfaceType::$ty));
883
- debug_assert!((bytes.as_ptr() as usize) % Self::SIZE32 == 0);
884
- Ok(canonicalize($float::from_le_bytes(bytes.try_into().unwrap())))
885
- }
886
- }
887
- };)*)
888
- }
889
-
890
- floats! {
891
- f32/get_f32 = Float32 with abi:SCALAR4
892
- f64/get_f64 = Float64 with abi:SCALAR8
893
- }
894
-
895
- unsafe impl ComponentType for bool {
896
- type Lower = ValRaw;
897
-
898
- const ABI: CanonicalAbiInfo = CanonicalAbiInfo::SCALAR1;
899
-
900
- fn typecheck(ty: &InterfaceType, _types: &InstanceType<'_>) -> Result<()> {
901
- match ty {
902
- InterfaceType::Bool => Ok(()),
903
- other => bail!("expected `bool` found `{}`", desc(other)),
904
- }
905
- }
906
- }
907
-
908
- unsafe impl Lower for bool {
909
- fn lower<T>(
910
- &self,
911
- _cx: &mut LowerContext<'_, T>,
912
- ty: InterfaceType,
913
- dst: &mut MaybeUninit<Self::Lower>,
914
- ) -> Result<()> {
915
- debug_assert!(matches!(ty, InterfaceType::Bool));
916
- dst.write(ValRaw::i32(*self as i32));
917
- Ok(())
918
- }
919
-
920
- fn store<T>(
921
- &self,
922
- cx: &mut LowerContext<'_, T>,
923
- ty: InterfaceType,
924
- offset: usize,
925
- ) -> Result<()> {
926
- debug_assert!(matches!(ty, InterfaceType::Bool));
927
- debug_assert!(offset % Self::SIZE32 == 0);
928
- cx.get::<1>(offset)[0] = *self as u8;
929
- Ok(())
930
- }
931
- }
932
-
933
- unsafe impl Lift for bool {
934
- #[inline]
935
- fn lift(_cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self> {
936
- debug_assert!(matches!(ty, InterfaceType::Bool));
937
- match src.get_i32() {
938
- 0 => Ok(false),
939
- _ => Ok(true),
940
- }
941
- }
942
-
943
- #[inline]
944
- fn load(_cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
945
- debug_assert!(matches!(ty, InterfaceType::Bool));
946
- match bytes[0] {
947
- 0 => Ok(false),
948
- _ => Ok(true),
949
- }
950
- }
951
- }
952
-
953
- unsafe impl ComponentType for char {
954
- type Lower = ValRaw;
955
-
956
- const ABI: CanonicalAbiInfo = CanonicalAbiInfo::SCALAR4;
957
-
958
- fn typecheck(ty: &InterfaceType, _types: &InstanceType<'_>) -> Result<()> {
959
- match ty {
960
- InterfaceType::Char => Ok(()),
961
- other => bail!("expected `char` found `{}`", desc(other)),
962
- }
963
- }
964
- }
965
-
966
- unsafe impl Lower for char {
967
- #[inline]
968
- fn lower<T>(
969
- &self,
970
- _cx: &mut LowerContext<'_, T>,
971
- ty: InterfaceType,
972
- dst: &mut MaybeUninit<Self::Lower>,
973
- ) -> Result<()> {
974
- debug_assert!(matches!(ty, InterfaceType::Char));
975
- dst.write(ValRaw::u32(u32::from(*self)));
976
- Ok(())
977
- }
978
-
979
- #[inline]
980
- fn store<T>(
981
- &self,
982
- cx: &mut LowerContext<'_, T>,
983
- ty: InterfaceType,
984
- offset: usize,
985
- ) -> Result<()> {
986
- debug_assert!(matches!(ty, InterfaceType::Char));
987
- debug_assert!(offset % Self::SIZE32 == 0);
988
- *cx.get::<4>(offset) = u32::from(*self).to_le_bytes();
989
- Ok(())
990
- }
991
- }
992
-
993
- unsafe impl Lift for char {
994
- #[inline]
995
- fn lift(_cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self> {
996
- debug_assert!(matches!(ty, InterfaceType::Char));
997
- Ok(char::try_from(src.get_u32())?)
998
- }
999
-
1000
- #[inline]
1001
- fn load(_cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
1002
- debug_assert!(matches!(ty, InterfaceType::Char));
1003
- debug_assert!((bytes.as_ptr() as usize) % Self::SIZE32 == 0);
1004
- let bits = u32::from_le_bytes(bytes.try_into().unwrap());
1005
- Ok(char::try_from(bits)?)
1006
- }
1007
- }
1008
-
1009
- // TODO: these probably need different constants for memory64
1010
- const UTF16_TAG: usize = 1 << 31;
1011
- const MAX_STRING_BYTE_LENGTH: usize = (1 << 31) - 1;
1012
-
1013
- // Note that this is similar to `ComponentType for WasmStr` except it can only
1014
- // be used for lowering, not lifting.
1015
- unsafe impl ComponentType for str {
1016
- type Lower = [ValRaw; 2];
1017
-
1018
- const ABI: CanonicalAbiInfo = CanonicalAbiInfo::POINTER_PAIR;
1019
-
1020
- fn typecheck(ty: &InterfaceType, _types: &InstanceType<'_>) -> Result<()> {
1021
- match ty {
1022
- InterfaceType::String => Ok(()),
1023
- other => bail!("expected `string` found `{}`", desc(other)),
1024
- }
1025
- }
1026
- }
1027
-
1028
- unsafe impl Lower for str {
1029
- fn lower<T>(
1030
- &self,
1031
- cx: &mut LowerContext<'_, T>,
1032
- ty: InterfaceType,
1033
- dst: &mut MaybeUninit<[ValRaw; 2]>,
1034
- ) -> Result<()> {
1035
- debug_assert!(matches!(ty, InterfaceType::String));
1036
- let (ptr, len) = lower_string(cx, self)?;
1037
- // See "WRITEPTR64" above for why this is always storing a 64-bit
1038
- // integer.
1039
- map_maybe_uninit!(dst[0]).write(ValRaw::i64(ptr as i64));
1040
- map_maybe_uninit!(dst[1]).write(ValRaw::i64(len as i64));
1041
- Ok(())
1042
- }
1043
-
1044
- fn store<T>(
1045
- &self,
1046
- cx: &mut LowerContext<'_, T>,
1047
- ty: InterfaceType,
1048
- offset: usize,
1049
- ) -> Result<()> {
1050
- debug_assert!(matches!(ty, InterfaceType::String));
1051
- debug_assert!(offset % (Self::ALIGN32 as usize) == 0);
1052
- let (ptr, len) = lower_string(cx, self)?;
1053
- // FIXME: needs memory64 handling
1054
- *cx.get(offset + 0) = (ptr as i32).to_le_bytes();
1055
- *cx.get(offset + 4) = (len as i32).to_le_bytes();
1056
- Ok(())
1057
- }
1058
- }
1059
-
1060
- fn lower_string<T>(cx: &mut LowerContext<'_, T>, string: &str) -> Result<(usize, usize)> {
1061
- // Note that in general the wasm module can't assume anything about what the
1062
- // host strings are encoded as. Additionally hosts are allowed to have
1063
- // differently-encoded strings at runtime. Finally when copying a string
1064
- // into wasm it's somewhat strict in the sense that the various patterns of
1065
- // allocation and such are already dictated for us.
1066
- //
1067
- // In general what this means is that when copying a string from the host
1068
- // into the destination we need to follow one of the cases of copying into
1069
- // WebAssembly. It doesn't particularly matter which case as long as it ends
1070
- // up in the right encoding. For example a destination encoding of
1071
- // latin1+utf16 has a number of ways to get copied into and we do something
1072
- // here that isn't the default "utf8 to latin1+utf16" since we have access
1073
- // to simd-accelerated helpers in the `encoding_rs` crate. This is ok though
1074
- // because we can fake that the host string was already stored in latin1
1075
- // format and follow that copy pattern instead.
1076
- match cx.options.string_encoding() {
1077
- // This corresponds to `store_string_copy` in the canonical ABI where
1078
- // the host's representation is utf-8 and the wasm module wants utf-8 so
1079
- // a copy is all that's needed (and the `realloc` can be precise for the
1080
- // initial memory allocation).
1081
- StringEncoding::Utf8 => {
1082
- if string.len() > MAX_STRING_BYTE_LENGTH {
1083
- bail!(
1084
- "string length of {} too large to copy into wasm",
1085
- string.len()
1086
- );
1087
- }
1088
- let ptr = cx.realloc(0, 0, 1, string.len())?;
1089
- cx.as_slice_mut()[ptr..][..string.len()].copy_from_slice(string.as_bytes());
1090
- Ok((ptr, string.len()))
1091
- }
1092
-
1093
- // This corresponds to `store_utf8_to_utf16` in the canonical ABI. Here
1094
- // an over-large allocation is performed and then shrunk afterwards if
1095
- // necessary.
1096
- StringEncoding::Utf16 => {
1097
- let size = string.len() * 2;
1098
- if size > MAX_STRING_BYTE_LENGTH {
1099
- bail!(
1100
- "string length of {} too large to copy into wasm",
1101
- string.len()
1102
- );
1103
- }
1104
- let mut ptr = cx.realloc(0, 0, 2, size)?;
1105
- let mut copied = 0;
1106
- let bytes = &mut cx.as_slice_mut()[ptr..][..size];
1107
- for (u, bytes) in string.encode_utf16().zip(bytes.chunks_mut(2)) {
1108
- let u_bytes = u.to_le_bytes();
1109
- bytes[0] = u_bytes[0];
1110
- bytes[1] = u_bytes[1];
1111
- copied += 1;
1112
- }
1113
- if (copied * 2) < size {
1114
- ptr = cx.realloc(ptr, size, 2, copied * 2)?;
1115
- }
1116
- Ok((ptr, copied))
1117
- }
1118
-
1119
- StringEncoding::CompactUtf16 => {
1120
- // This corresponds to `store_string_to_latin1_or_utf16`
1121
- let bytes = string.as_bytes();
1122
- let mut iter = string.char_indices();
1123
- let mut ptr = cx.realloc(0, 0, 2, bytes.len())?;
1124
- let mut dst = &mut cx.as_slice_mut()[ptr..][..bytes.len()];
1125
- let mut result = 0;
1126
- while let Some((i, ch)) = iter.next() {
1127
- // Test if this `char` fits into the latin1 encoding.
1128
- if let Ok(byte) = u8::try_from(u32::from(ch)) {
1129
- dst[result] = byte;
1130
- result += 1;
1131
- continue;
1132
- }
1133
-
1134
- // .. if utf16 is forced to be used then the allocation is
1135
- // bumped up to the maximum size.
1136
- let worst_case = bytes
1137
- .len()
1138
- .checked_mul(2)
1139
- .ok_or_else(|| anyhow!("byte length overflow"))?;
1140
- if worst_case > MAX_STRING_BYTE_LENGTH {
1141
- bail!("byte length too large");
1142
- }
1143
- ptr = cx.realloc(ptr, bytes.len(), 2, worst_case)?;
1144
- dst = &mut cx.as_slice_mut()[ptr..][..worst_case];
1145
-
1146
- // Previously encoded latin1 bytes are inflated to their 16-bit
1147
- // size for utf16
1148
- for i in (0..result).rev() {
1149
- dst[2 * i] = dst[i];
1150
- dst[2 * i + 1] = 0;
1151
- }
1152
-
1153
- // and then the remainder of the string is encoded.
1154
- for (u, bytes) in string[i..]
1155
- .encode_utf16()
1156
- .zip(dst[2 * result..].chunks_mut(2))
1157
- {
1158
- let u_bytes = u.to_le_bytes();
1159
- bytes[0] = u_bytes[0];
1160
- bytes[1] = u_bytes[1];
1161
- result += 1;
1162
- }
1163
- if worst_case > 2 * result {
1164
- ptr = cx.realloc(ptr, worst_case, 2, 2 * result)?;
1165
- }
1166
- return Ok((ptr, result | UTF16_TAG));
1167
- }
1168
- if result < bytes.len() {
1169
- ptr = cx.realloc(ptr, bytes.len(), 2, result)?;
1170
- }
1171
- Ok((ptr, result))
1172
- }
1173
- }
1174
- }
1175
-
1176
- /// Representation of a string located in linear memory in a WebAssembly
1177
- /// instance.
1178
- ///
1179
- /// This type is used with [`TypedFunc`], for example, when WebAssembly returns
1180
- /// a string. This type cannot be used to give a string to WebAssembly, instead
1181
- /// `&str` should be used for that (since it's coming from the host).
1182
- ///
1183
- /// Note that this type represents an in-bounds string in linear memory, but it
1184
- /// does not represent a valid string (e.g. valid utf-8). Validation happens
1185
- /// when [`WasmStr::to_str`] is called.
1186
- //
1187
- // TODO: should probably expand this with examples
1188
- pub struct WasmStr {
1189
- ptr: usize,
1190
- len: usize,
1191
- options: Options,
1192
- }
1193
-
1194
- impl WasmStr {
1195
- fn new(ptr: usize, len: usize, cx: &mut LiftContext<'_>) -> Result<WasmStr> {
1196
- let byte_len = match cx.options.string_encoding() {
1197
- StringEncoding::Utf8 => Some(len),
1198
- StringEncoding::Utf16 => len.checked_mul(2),
1199
- StringEncoding::CompactUtf16 => {
1200
- if len & UTF16_TAG == 0 {
1201
- Some(len)
1202
- } else {
1203
- (len ^ UTF16_TAG).checked_mul(2)
1204
- }
1205
- }
1206
- };
1207
- match byte_len.and_then(|len| ptr.checked_add(len)) {
1208
- Some(n) if n <= cx.memory().len() => {}
1209
- _ => bail!("string pointer/length out of bounds of memory"),
1210
- }
1211
- Ok(WasmStr {
1212
- ptr,
1213
- len,
1214
- options: *cx.options,
1215
- })
1216
- }
1217
-
1218
- /// Returns the underlying string that this cursor points to.
1219
- ///
1220
- /// Note that this will internally decode the string from the wasm's
1221
- /// encoding to utf-8 and additionally perform validation.
1222
- ///
1223
- /// The `store` provided must be the store where this string lives to
1224
- /// access the correct memory.
1225
- ///
1226
- /// # Errors
1227
- ///
1228
- /// Returns an error if the string wasn't encoded correctly (e.g. invalid
1229
- /// utf-8).
1230
- ///
1231
- /// # Panics
1232
- ///
1233
- /// Panics if this string is not owned by `store`.
1234
- //
1235
- // TODO: should add accessors for specifically utf-8 and utf-16 that perhaps
1236
- // in an opt-in basis don't do validation. Additionally there should be some
1237
- // method that returns `[u16]` after validating to avoid the utf16-to-utf8
1238
- // transcode.
1239
- pub fn to_str<'a, T: 'a>(&self, store: impl Into<StoreContext<'a, T>>) -> Result<Cow<'a, str>> {
1240
- let store = store.into().0;
1241
- let memory = self.options.memory(store);
1242
- self.to_str_from_memory(memory)
1243
- }
1244
-
1245
- fn to_str_from_memory<'a>(&self, memory: &'a [u8]) -> Result<Cow<'a, str>> {
1246
- match self.options.string_encoding() {
1247
- StringEncoding::Utf8 => self.decode_utf8(memory),
1248
- StringEncoding::Utf16 => self.decode_utf16(memory, self.len),
1249
- StringEncoding::CompactUtf16 => {
1250
- if self.len & UTF16_TAG == 0 {
1251
- self.decode_latin1(memory)
1252
- } else {
1253
- self.decode_utf16(memory, self.len ^ UTF16_TAG)
1254
- }
1255
- }
1256
- }
1257
- }
1258
-
1259
- fn decode_utf8<'a>(&self, memory: &'a [u8]) -> Result<Cow<'a, str>> {
1260
- // Note that bounds-checking already happen in construction of `WasmStr`
1261
- // so this is never expected to panic. This could theoretically be
1262
- // unchecked indexing if we're feeling wild enough.
1263
- Ok(str::from_utf8(&memory[self.ptr..][..self.len])?.into())
1264
- }
1265
-
1266
- fn decode_utf16<'a>(&self, memory: &'a [u8], len: usize) -> Result<Cow<'a, str>> {
1267
- // See notes in `decode_utf8` for why this is panicking indexing.
1268
- let memory = &memory[self.ptr..][..len * 2];
1269
- Ok(std::char::decode_utf16(
1270
- memory
1271
- .chunks(2)
1272
- .map(|chunk| u16::from_le_bytes(chunk.try_into().unwrap())),
1273
- )
1274
- .collect::<Result<String, _>>()?
1275
- .into())
1276
- }
1277
-
1278
- fn decode_latin1<'a>(&self, memory: &'a [u8]) -> Result<Cow<'a, str>> {
1279
- // See notes in `decode_utf8` for why this is panicking indexing.
1280
- Ok(encoding_rs::mem::decode_latin1(
1281
- &memory[self.ptr..][..self.len],
1282
- ))
1283
- }
1284
- }
1285
-
1286
- // Note that this is similar to `ComponentType for str` except it can only be
1287
- // used for lifting, not lowering.
1288
- unsafe impl ComponentType for WasmStr {
1289
- type Lower = <str as ComponentType>::Lower;
1290
-
1291
- const ABI: CanonicalAbiInfo = CanonicalAbiInfo::POINTER_PAIR;
1292
-
1293
- fn typecheck(ty: &InterfaceType, _types: &InstanceType<'_>) -> Result<()> {
1294
- match ty {
1295
- InterfaceType::String => Ok(()),
1296
- other => bail!("expected `string` found `{}`", desc(other)),
1297
- }
1298
- }
1299
- }
1300
-
1301
- unsafe impl Lift for WasmStr {
1302
- #[inline]
1303
- fn lift(cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self> {
1304
- debug_assert!(matches!(ty, InterfaceType::String));
1305
- // FIXME: needs memory64 treatment
1306
- let ptr = src[0].get_u32();
1307
- let len = src[1].get_u32();
1308
- let (ptr, len) = (usize::try_from(ptr)?, usize::try_from(len)?);
1309
- WasmStr::new(ptr, len, cx)
1310
- }
1311
-
1312
- #[inline]
1313
- fn load(cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
1314
- debug_assert!(matches!(ty, InterfaceType::String));
1315
- debug_assert!((bytes.as_ptr() as usize) % (Self::ALIGN32 as usize) == 0);
1316
- // FIXME: needs memory64 treatment
1317
- let ptr = u32::from_le_bytes(bytes[..4].try_into().unwrap());
1318
- let len = u32::from_le_bytes(bytes[4..].try_into().unwrap());
1319
- let (ptr, len) = (usize::try_from(ptr)?, usize::try_from(len)?);
1320
- WasmStr::new(ptr, len, cx)
1321
- }
1322
- }
1323
-
1324
- unsafe impl<T> ComponentType for [T]
1325
- where
1326
- T: ComponentType,
1327
- {
1328
- type Lower = [ValRaw; 2];
1329
-
1330
- const ABI: CanonicalAbiInfo = CanonicalAbiInfo::POINTER_PAIR;
1331
-
1332
- fn typecheck(ty: &InterfaceType, types: &InstanceType<'_>) -> Result<()> {
1333
- match ty {
1334
- InterfaceType::List(t) => T::typecheck(&types.types[*t].element, types),
1335
- other => bail!("expected `list` found `{}`", desc(other)),
1336
- }
1337
- }
1338
- }
1339
-
1340
- unsafe impl<T> Lower for [T]
1341
- where
1342
- T: Lower,
1343
- {
1344
- fn lower<U>(
1345
- &self,
1346
- cx: &mut LowerContext<'_, U>,
1347
- ty: InterfaceType,
1348
- dst: &mut MaybeUninit<[ValRaw; 2]>,
1349
- ) -> Result<()> {
1350
- let elem = match ty {
1351
- InterfaceType::List(i) => cx.types[i].element,
1352
- _ => bad_type_info(),
1353
- };
1354
- let (ptr, len) = lower_list(cx, elem, self)?;
1355
- // See "WRITEPTR64" above for why this is always storing a 64-bit
1356
- // integer.
1357
- map_maybe_uninit!(dst[0]).write(ValRaw::i64(ptr as i64));
1358
- map_maybe_uninit!(dst[1]).write(ValRaw::i64(len as i64));
1359
- Ok(())
1360
- }
1361
-
1362
- fn store<U>(
1363
- &self,
1364
- cx: &mut LowerContext<'_, U>,
1365
- ty: InterfaceType,
1366
- offset: usize,
1367
- ) -> Result<()> {
1368
- let elem = match ty {
1369
- InterfaceType::List(i) => cx.types[i].element,
1370
- _ => bad_type_info(),
1371
- };
1372
- debug_assert!(offset % (Self::ALIGN32 as usize) == 0);
1373
- let (ptr, len) = lower_list(cx, elem, self)?;
1374
- *cx.get(offset + 0) = (ptr as i32).to_le_bytes();
1375
- *cx.get(offset + 4) = (len as i32).to_le_bytes();
1376
- Ok(())
1377
- }
1378
- }
1379
-
1380
- // FIXME: this is not a memcpy for `T` where `T` is something like `u8`.
1381
- //
1382
- // Some attempts to fix this have proved not fruitful. In isolation an attempt
1383
- // was made where:
1384
- //
1385
- // * `MemoryMut` stored a `*mut [u8]` as its "last view" of memory to avoid
1386
- // reloading the base pointer constantly. This view is reset on `realloc`.
1387
- // * The bounds-checks in `MemoryMut::get` were removed (replaced with unsafe
1388
- // indexing)
1389
- //
1390
- // Even then though this didn't correctly vectorized for `Vec<u8>`. It's not
1391
- // entirely clear why but it appeared that it's related to reloading the base
1392
- // pointer fo memory (I guess from `MemoryMut` itself?). Overall I'm not really
1393
- // clear on what's happening there, but this is surely going to be a performance
1394
- // bottleneck in the future.
1395
- fn lower_list<T, U>(
1396
- cx: &mut LowerContext<'_, U>,
1397
- ty: InterfaceType,
1398
- list: &[T],
1399
- ) -> Result<(usize, usize)>
1400
- where
1401
- T: Lower,
1402
- {
1403
- let elem_size = T::SIZE32;
1404
- let size = list
1405
- .len()
1406
- .checked_mul(elem_size)
1407
- .ok_or_else(|| anyhow!("size overflow copying a list"))?;
1408
- let ptr = cx.realloc(0, 0, T::ALIGN32, size)?;
1409
- T::store_list(cx, ty, ptr, list)?;
1410
- Ok((ptr, list.len()))
1411
- }
1412
-
1413
- /// Representation of a list of values that are owned by a WebAssembly instance.
1414
- ///
1415
- /// This type is used whenever a `(list T)` is returned from a [`TypedFunc`],
1416
- /// for example. This type represents a list of values that are stored in linear
1417
- /// memory which are waiting to be read.
1418
- ///
1419
- /// Note that this type represents only a valid range of bytes for the list
1420
- /// itself, it does not represent validity of the elements themselves and that's
1421
- /// performed when they're iterated.
1422
- pub struct WasmList<T> {
1423
- ptr: usize,
1424
- len: usize,
1425
- options: Options,
1426
- elem: InterfaceType,
1427
- // NB: it would probably be more efficient to store a non-atomic index-style
1428
- // reference to something inside a `StoreOpaque`, but that's not easily
1429
- // available at this time, so it's left as a future exercise.
1430
- types: Arc<ComponentTypes>,
1431
- instance: SendSyncPtr<ComponentInstance>,
1432
- _marker: marker::PhantomData<T>,
1433
- }
1434
-
1435
- impl<T: Lift> WasmList<T> {
1436
- fn new(
1437
- ptr: usize,
1438
- len: usize,
1439
- cx: &mut LiftContext<'_>,
1440
- elem: InterfaceType,
1441
- ) -> Result<WasmList<T>> {
1442
- match len
1443
- .checked_mul(T::SIZE32)
1444
- .and_then(|len| ptr.checked_add(len))
1445
- {
1446
- Some(n) if n <= cx.memory().len() => {}
1447
- _ => bail!("list pointer/length out of bounds of memory"),
1448
- }
1449
- if ptr % usize::try_from(T::ALIGN32)? != 0 {
1450
- bail!("list pointer is not aligned")
1451
- }
1452
- Ok(WasmList {
1453
- ptr,
1454
- len,
1455
- options: *cx.options,
1456
- elem,
1457
- types: cx.types.clone(),
1458
- instance: SendSyncPtr::new(NonNull::new(cx.instance_ptr()).unwrap()),
1459
- _marker: marker::PhantomData,
1460
- })
1461
- }
1462
-
1463
- /// Returns the item length of this vector
1464
- #[inline]
1465
- pub fn len(&self) -> usize {
1466
- self.len
1467
- }
1468
-
1469
- /// Gets the `n`th element of this list.
1470
- ///
1471
- /// Returns `None` if `index` is out of bounds. Returns `Some(Err(..))` if
1472
- /// the value couldn't be decoded (it was invalid). Returns `Some(Ok(..))`
1473
- /// if the value is valid.
1474
- ///
1475
- /// # Panics
1476
- ///
1477
- /// This function will panic if the string did not originally come from the
1478
- /// `store` specified.
1479
- //
1480
- // TODO: given that interface values are intended to be consumed in one go
1481
- // should we even expose a random access iteration API? In theory all
1482
- // consumers should be validating through the iterator.
1483
- pub fn get(&self, mut store: impl AsContextMut, index: usize) -> Option<Result<T>> {
1484
- let store = store.as_context_mut().0;
1485
- self.options.store_id().assert_belongs_to(store.id());
1486
- // This should be safe because the unsafety lies in the `self.instance`
1487
- // pointer passed in has previously been validated by the lifting
1488
- // context this was originally created within and with the check above
1489
- // this is guaranteed to be the same store. This means that this should
1490
- // be carrying over the original assertion from the original creation of
1491
- // the lifting context that created this type.
1492
- let mut cx =
1493
- unsafe { LiftContext::new(store, &self.options, &self.types, self.instance.as_ptr()) };
1494
- self.get_from_store(&mut cx, index)
1495
- }
1496
-
1497
- fn get_from_store(&self, cx: &mut LiftContext<'_>, index: usize) -> Option<Result<T>> {
1498
- if index >= self.len {
1499
- return None;
1500
- }
1501
- // Note that this is using panicking indexing and this is expected to
1502
- // never fail. The bounds-checking here happened during the construction
1503
- // of the `WasmList` itself which means these should always be in-bounds
1504
- // (and wasm memory can only grow). This could theoretically be
1505
- // unchecked indexing if we're confident enough and it's actually a perf
1506
- // issue one day.
1507
- let bytes = &cx.memory()[self.ptr + index * T::SIZE32..][..T::SIZE32];
1508
- Some(T::load(cx, self.elem, bytes))
1509
- }
1510
-
1511
- /// Returns an iterator over the elements of this list.
1512
- ///
1513
- /// Each item of the list may fail to decode and is represented through the
1514
- /// `Result` value of the iterator.
1515
- pub fn iter<'a, U: 'a>(
1516
- &'a self,
1517
- store: impl Into<StoreContextMut<'a, U>>,
1518
- ) -> impl ExactSizeIterator<Item = Result<T>> + 'a {
1519
- let store = store.into().0;
1520
- self.options.store_id().assert_belongs_to(store.id());
1521
- // See comments about unsafety in the `get` method.
1522
- let mut cx =
1523
- unsafe { LiftContext::new(store, &self.options, &self.types, self.instance.as_ptr()) };
1524
- (0..self.len).map(move |i| self.get_from_store(&mut cx, i).unwrap())
1525
- }
1526
- }
1527
-
1528
- macro_rules! raw_wasm_list_accessors {
1529
- ($($i:ident)*) => ($(
1530
- impl WasmList<$i> {
1531
- /// Get access to the raw underlying memory for this list.
1532
- ///
1533
- /// This method will return a direct slice into the original wasm
1534
- /// module's linear memory where the data for this slice is stored.
1535
- /// This allows the embedder to have efficient access to the
1536
- /// underlying memory if needed and avoid copies and such if
1537
- /// desired.
1538
- ///
1539
- /// Note that multi-byte integers are stored in little-endian format
1540
- /// so portable processing of this slice must be aware of the host's
1541
- /// byte-endianness. The `from_le` constructors in the Rust standard
1542
- /// library should be suitable for converting from little-endian.
1543
- ///
1544
- /// # Panics
1545
- ///
1546
- /// Panics if the `store` provided is not the one from which this
1547
- /// slice originated.
1548
- pub fn as_le_slice<'a, T: 'a>(&self, store: impl Into<StoreContext<'a, T>>) -> &'a [$i] {
1549
- let memory = self.options.memory(store.into().0);
1550
- self._as_le_slice(memory)
1551
- }
1552
-
1553
- fn _as_le_slice<'a>(&self, all_of_memory: &'a [u8]) -> &'a [$i] {
1554
- // See comments in `WasmList::get` for the panicking indexing
1555
- let byte_size = self.len * mem::size_of::<$i>();
1556
- let bytes = &all_of_memory[self.ptr..][..byte_size];
1557
-
1558
- // The canonical ABI requires that everything is aligned to its
1559
- // own size, so this should be an aligned array. Furthermore the
1560
- // alignment of primitive integers for hosts should be smaller
1561
- // than or equal to the size of the primitive itself, meaning
1562
- // that a wasm canonical-abi-aligned list is also aligned for
1563
- // the host. That should mean that the head/tail slices here are
1564
- // empty.
1565
- //
1566
- // Also note that the `unsafe` here is needed since the type
1567
- // we're aligning to isn't guaranteed to be valid, but in our
1568
- // case it's just integers and bytes so this should be safe.
1569
- unsafe {
1570
- let (head, body, tail) = bytes.align_to::<$i>();
1571
- assert!(head.is_empty() && tail.is_empty());
1572
- body
1573
- }
1574
- }
1575
- }
1576
- )*)
1577
- }
1578
-
1579
- raw_wasm_list_accessors! {
1580
- i8 i16 i32 i64
1581
- u8 u16 u32 u64
1582
- }
1583
-
1584
- // Note that this is similar to `ComponentType for str` except it can only be
1585
- // used for lifting, not lowering.
1586
- unsafe impl<T: ComponentType> ComponentType for WasmList<T> {
1587
- type Lower = <[T] as ComponentType>::Lower;
1588
-
1589
- const ABI: CanonicalAbiInfo = CanonicalAbiInfo::POINTER_PAIR;
1590
-
1591
- fn typecheck(ty: &InterfaceType, types: &InstanceType<'_>) -> Result<()> {
1592
- <[T] as ComponentType>::typecheck(ty, types)
1593
- }
1594
- }
1595
-
1596
- unsafe impl<T: Lift> Lift for WasmList<T> {
1597
- fn lift(cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self> {
1598
- let elem = match ty {
1599
- InterfaceType::List(i) => cx.types[i].element,
1600
- _ => bad_type_info(),
1601
- };
1602
- // FIXME: needs memory64 treatment
1603
- let ptr = src[0].get_u32();
1604
- let len = src[1].get_u32();
1605
- let (ptr, len) = (usize::try_from(ptr)?, usize::try_from(len)?);
1606
- WasmList::new(ptr, len, cx, elem)
1607
- }
1608
-
1609
- fn load(cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
1610
- let elem = match ty {
1611
- InterfaceType::List(i) => cx.types[i].element,
1612
- _ => bad_type_info(),
1613
- };
1614
- debug_assert!((bytes.as_ptr() as usize) % (Self::ALIGN32 as usize) == 0);
1615
- // FIXME: needs memory64 treatment
1616
- let ptr = u32::from_le_bytes(bytes[..4].try_into().unwrap());
1617
- let len = u32::from_le_bytes(bytes[4..].try_into().unwrap());
1618
- let (ptr, len) = (usize::try_from(ptr)?, usize::try_from(len)?);
1619
- WasmList::new(ptr, len, cx, elem)
1620
- }
1621
- }
1622
-
1623
- /// Verify that the given wasm type is a tuple with the expected fields in the right order.
1624
- fn typecheck_tuple(
1625
- ty: &InterfaceType,
1626
- types: &InstanceType<'_>,
1627
- expected: &[fn(&InterfaceType, &InstanceType<'_>) -> Result<()>],
1628
- ) -> Result<()> {
1629
- match ty {
1630
- InterfaceType::Tuple(t) => {
1631
- let tuple = &types.types[*t];
1632
- if tuple.types.len() != expected.len() {
1633
- bail!(
1634
- "expected {}-tuple, found {}-tuple",
1635
- expected.len(),
1636
- tuple.types.len()
1637
- );
1638
- }
1639
- for (ty, check) in tuple.types.iter().zip(expected) {
1640
- check(ty, types)?;
1641
- }
1642
- Ok(())
1643
- }
1644
- other => bail!("expected `tuple` found `{}`", desc(other)),
1645
- }
1646
- }
1647
-
1648
- /// Verify that the given wasm type is a record with the expected fields in the right order and with the right
1649
- /// names.
1650
- pub fn typecheck_record(
1651
- ty: &InterfaceType,
1652
- types: &InstanceType<'_>,
1653
- expected: &[(&str, fn(&InterfaceType, &InstanceType<'_>) -> Result<()>)],
1654
- ) -> Result<()> {
1655
- match ty {
1656
- InterfaceType::Record(index) => {
1657
- let fields = &types.types[*index].fields;
1658
-
1659
- if fields.len() != expected.len() {
1660
- bail!(
1661
- "expected record of {} fields, found {} fields",
1662
- expected.len(),
1663
- fields.len()
1664
- );
1665
- }
1666
-
1667
- for (field, &(name, check)) in fields.iter().zip(expected) {
1668
- check(&field.ty, types)
1669
- .with_context(|| format!("type mismatch for field {}", name))?;
1670
-
1671
- if field.name != name {
1672
- bail!("expected record field named {}, found {}", name, field.name);
1673
- }
1674
- }
1675
-
1676
- Ok(())
1677
- }
1678
- other => bail!("expected `record` found `{}`", desc(other)),
1679
- }
1680
- }
1681
-
1682
- /// Verify that the given wasm type is a variant with the expected cases in the right order and with the right
1683
- /// names.
1684
- pub fn typecheck_variant(
1685
- ty: &InterfaceType,
1686
- types: &InstanceType<'_>,
1687
- expected: &[(
1688
- &str,
1689
- Option<fn(&InterfaceType, &InstanceType<'_>) -> Result<()>>,
1690
- )],
1691
- ) -> Result<()> {
1692
- match ty {
1693
- InterfaceType::Variant(index) => {
1694
- let cases = &types.types[*index].cases;
1695
-
1696
- if cases.len() != expected.len() {
1697
- bail!(
1698
- "expected variant of {} cases, found {} cases",
1699
- expected.len(),
1700
- cases.len()
1701
- );
1702
- }
1703
-
1704
- for (case, &(name, check)) in cases.iter().zip(expected) {
1705
- if case.name != name {
1706
- bail!("expected variant case named {name}, found {}", case.name);
1707
- }
1708
-
1709
- match (check, &case.ty) {
1710
- (Some(check), Some(ty)) => check(ty, types)
1711
- .with_context(|| format!("type mismatch for case {name}"))?,
1712
- (None, None) => {}
1713
- (Some(_), None) => {
1714
- bail!("case `{name}` has no type but one was expected")
1715
- }
1716
- (None, Some(_)) => {
1717
- bail!("case `{name}` has a type but none was expected")
1718
- }
1719
- }
1720
- }
1721
-
1722
- Ok(())
1723
- }
1724
- other => bail!("expected `variant` found `{}`", desc(other)),
1725
- }
1726
- }
1727
-
1728
- /// Verify that the given wasm type is a enum with the expected cases in the right order and with the right
1729
- /// names.
1730
- pub fn typecheck_enum(
1731
- ty: &InterfaceType,
1732
- types: &InstanceType<'_>,
1733
- expected: &[&str],
1734
- ) -> Result<()> {
1735
- match ty {
1736
- InterfaceType::Enum(index) => {
1737
- let names = &types.types[*index].names;
1738
-
1739
- if names.len() != expected.len() {
1740
- bail!(
1741
- "expected enum of {} names, found {} names",
1742
- expected.len(),
1743
- names.len()
1744
- );
1745
- }
1746
-
1747
- for (name, expected) in names.iter().zip(expected) {
1748
- if name != expected {
1749
- bail!("expected enum case named {}, found {}", expected, name);
1750
- }
1751
- }
1752
-
1753
- Ok(())
1754
- }
1755
- other => bail!("expected `enum` found `{}`", desc(other)),
1756
- }
1757
- }
1758
-
1759
- /// Verify that the given wasm type is a flags type with the expected flags in the right order and with the right
1760
- /// names.
1761
- pub fn typecheck_flags(
1762
- ty: &InterfaceType,
1763
- types: &InstanceType<'_>,
1764
- expected: &[&str],
1765
- ) -> Result<()> {
1766
- match ty {
1767
- InterfaceType::Flags(index) => {
1768
- let names = &types.types[*index].names;
1769
-
1770
- if names.len() != expected.len() {
1771
- bail!(
1772
- "expected flags type with {} names, found {} names",
1773
- expected.len(),
1774
- names.len()
1775
- );
1776
- }
1777
-
1778
- for (name, expected) in names.iter().zip(expected) {
1779
- if name != expected {
1780
- bail!("expected flag named {}, found {}", expected, name);
1781
- }
1782
- }
1783
-
1784
- Ok(())
1785
- }
1786
- other => bail!("expected `flags` found `{}`", desc(other)),
1787
- }
1788
- }
1789
-
1790
- /// Format the specified bitflags using the specified names for debugging
1791
- pub fn format_flags(bits: &[u32], names: &[&str], f: &mut fmt::Formatter) -> fmt::Result {
1792
- f.write_str("(")?;
1793
- let mut wrote = false;
1794
- for (index, name) in names.iter().enumerate() {
1795
- if ((bits[index / 32] >> (index % 32)) & 1) != 0 {
1796
- if wrote {
1797
- f.write_str("|")?;
1798
- } else {
1799
- wrote = true;
1800
- }
1801
-
1802
- f.write_str(name)?;
1803
- }
1804
- }
1805
- f.write_str(")")
1806
- }
1807
-
1808
- unsafe impl<T> ComponentType for Option<T>
1809
- where
1810
- T: ComponentType,
1811
- {
1812
- type Lower = TupleLower2<<u32 as ComponentType>::Lower, T::Lower>;
1813
-
1814
- const ABI: CanonicalAbiInfo = CanonicalAbiInfo::variant_static(&[None, Some(T::ABI)]);
1815
-
1816
- fn typecheck(ty: &InterfaceType, types: &InstanceType<'_>) -> Result<()> {
1817
- match ty {
1818
- InterfaceType::Option(t) => T::typecheck(&types.types[*t].ty, types),
1819
- other => bail!("expected `option` found `{}`", desc(other)),
1820
- }
1821
- }
1822
- }
1823
-
1824
- unsafe impl<T> ComponentVariant for Option<T>
1825
- where
1826
- T: ComponentType,
1827
- {
1828
- const CASES: &'static [Option<CanonicalAbiInfo>] = &[None, Some(T::ABI)];
1829
- }
1830
-
1831
- unsafe impl<T> Lower for Option<T>
1832
- where
1833
- T: Lower,
1834
- {
1835
- fn lower<U>(
1836
- &self,
1837
- cx: &mut LowerContext<'_, U>,
1838
- ty: InterfaceType,
1839
- dst: &mut MaybeUninit<Self::Lower>,
1840
- ) -> Result<()> {
1841
- let payload = match ty {
1842
- InterfaceType::Option(ty) => cx.types[ty].ty,
1843
- _ => bad_type_info(),
1844
- };
1845
- match self {
1846
- None => {
1847
- map_maybe_uninit!(dst.A1).write(ValRaw::i32(0));
1848
- // Note that this is unsafe as we're writing an arbitrary
1849
- // bit-pattern to an arbitrary type, but part of the unsafe
1850
- // contract of the `ComponentType` trait is that we can assign
1851
- // any bit-pattern. By writing all zeros here we're ensuring
1852
- // that the core wasm arguments this translates to will all be
1853
- // zeros (as the canonical ABI requires).
1854
- unsafe {
1855
- map_maybe_uninit!(dst.A2).as_mut_ptr().write_bytes(0u8, 1);
1856
- }
1857
- }
1858
- Some(val) => {
1859
- map_maybe_uninit!(dst.A1).write(ValRaw::i32(1));
1860
- val.lower(cx, payload, map_maybe_uninit!(dst.A2))?;
1861
- }
1862
- }
1863
- Ok(())
1864
- }
1865
-
1866
- fn store<U>(
1867
- &self,
1868
- cx: &mut LowerContext<'_, U>,
1869
- ty: InterfaceType,
1870
- offset: usize,
1871
- ) -> Result<()> {
1872
- debug_assert!(offset % (Self::ALIGN32 as usize) == 0);
1873
- let payload = match ty {
1874
- InterfaceType::Option(ty) => cx.types[ty].ty,
1875
- _ => bad_type_info(),
1876
- };
1877
- match self {
1878
- None => {
1879
- cx.get::<1>(offset)[0] = 0;
1880
- }
1881
- Some(val) => {
1882
- cx.get::<1>(offset)[0] = 1;
1883
- val.store(cx, payload, offset + (Self::INFO.payload_offset32 as usize))?;
1884
- }
1885
- }
1886
- Ok(())
1887
- }
1888
- }
1889
-
1890
- unsafe impl<T> Lift for Option<T>
1891
- where
1892
- T: Lift,
1893
- {
1894
- fn lift(cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self> {
1895
- let payload = match ty {
1896
- InterfaceType::Option(ty) => cx.types[ty].ty,
1897
- _ => bad_type_info(),
1898
- };
1899
- Ok(match src.A1.get_i32() {
1900
- 0 => None,
1901
- 1 => Some(T::lift(cx, payload, &src.A2)?),
1902
- _ => bail!("invalid option discriminant"),
1903
- })
1904
- }
1905
-
1906
- fn load(cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
1907
- debug_assert!((bytes.as_ptr() as usize) % (Self::ALIGN32 as usize) == 0);
1908
- let payload_ty = match ty {
1909
- InterfaceType::Option(ty) => cx.types[ty].ty,
1910
- _ => bad_type_info(),
1911
- };
1912
- let discrim = bytes[0];
1913
- let payload = &bytes[Self::INFO.payload_offset32 as usize..];
1914
- match discrim {
1915
- 0 => Ok(None),
1916
- 1 => Ok(Some(T::load(cx, payload_ty, payload)?)),
1917
- _ => bail!("invalid option discriminant"),
1918
- }
1919
- }
1920
- }
1921
-
1922
- #[derive(Clone, Copy)]
1923
- #[repr(C)]
1924
- pub struct ResultLower<T: Copy, E: Copy> {
1925
- tag: ValRaw,
1926
- payload: ResultLowerPayload<T, E>,
1927
- }
1928
-
1929
- #[derive(Clone, Copy)]
1930
- #[repr(C)]
1931
- union ResultLowerPayload<T: Copy, E: Copy> {
1932
- ok: T,
1933
- err: E,
1934
- }
1935
-
1936
- unsafe impl<T, E> ComponentType for Result<T, E>
1937
- where
1938
- T: ComponentType,
1939
- E: ComponentType,
1940
- {
1941
- type Lower = ResultLower<T::Lower, E::Lower>;
1942
-
1943
- const ABI: CanonicalAbiInfo = CanonicalAbiInfo::variant_static(&[Some(T::ABI), Some(E::ABI)]);
1944
-
1945
- fn typecheck(ty: &InterfaceType, types: &InstanceType<'_>) -> Result<()> {
1946
- match ty {
1947
- InterfaceType::Result(r) => {
1948
- let result = &types.types[*r];
1949
- match &result.ok {
1950
- Some(ty) => T::typecheck(ty, types)?,
1951
- None if T::IS_RUST_UNIT_TYPE => {}
1952
- None => bail!("expected no `ok` type"),
1953
- }
1954
- match &result.err {
1955
- Some(ty) => E::typecheck(ty, types)?,
1956
- None if E::IS_RUST_UNIT_TYPE => {}
1957
- None => bail!("expected no `err` type"),
1958
- }
1959
- Ok(())
1960
- }
1961
- other => bail!("expected `result` found `{}`", desc(other)),
1962
- }
1963
- }
1964
- }
1965
-
1966
- /// Lowers the payload of a variant into the storage for the entire payload,
1967
- /// handling writing zeros at the end of the representation if this payload is
1968
- /// smaller than the entire flat representation.
1969
- ///
1970
- /// * `payload` - the flat storage space for the entire payload of the variant
1971
- /// * `typed_payload` - projection from the payload storage space to the
1972
- /// individaul storage space for this variant.
1973
- /// * `lower` - lowering operation used to initialize the `typed_payload` return
1974
- /// value.
1975
- ///
1976
- /// For more information on this se the comments in the `Lower for Result`
1977
- /// implementation below.
1978
- pub unsafe fn lower_payload<P, T>(
1979
- payload: &mut MaybeUninit<P>,
1980
- typed_payload: impl FnOnce(&mut MaybeUninit<P>) -> &mut MaybeUninit<T>,
1981
- lower: impl FnOnce(&mut MaybeUninit<T>) -> Result<()>,
1982
- ) -> Result<()> {
1983
- let typed = typed_payload(payload);
1984
- lower(typed)?;
1985
-
1986
- let typed_len = storage_as_slice(typed).len();
1987
- let payload = storage_as_slice_mut(payload);
1988
- for slot in payload[typed_len..].iter_mut() {
1989
- *slot = ValRaw::u64(0);
1990
- }
1991
- Ok(())
1992
- }
1993
-
1994
- unsafe impl<T, E> ComponentVariant for Result<T, E>
1995
- where
1996
- T: ComponentType,
1997
- E: ComponentType,
1998
- {
1999
- const CASES: &'static [Option<CanonicalAbiInfo>] = &[Some(T::ABI), Some(E::ABI)];
2000
- }
2001
-
2002
- unsafe impl<T, E> Lower for Result<T, E>
2003
- where
2004
- T: Lower,
2005
- E: Lower,
2006
- {
2007
- fn lower<U>(
2008
- &self,
2009
- cx: &mut LowerContext<'_, U>,
2010
- ty: InterfaceType,
2011
- dst: &mut MaybeUninit<Self::Lower>,
2012
- ) -> Result<()> {
2013
- let (ok, err) = match ty {
2014
- InterfaceType::Result(ty) => {
2015
- let ty = &cx.types[ty];
2016
- (ty.ok, ty.err)
2017
- }
2018
- _ => bad_type_info(),
2019
- };
2020
-
2021
- // This implementation of `Lower::lower`, if you're reading these from
2022
- // the top of this file, is the first location that the "join" logic of
2023
- // the component model's canonical ABI encountered. The rough problem is
2024
- // that let's say we have a component model type of the form:
2025
- //
2026
- // (result u64 (error (tuple f32 u16)))
2027
- //
2028
- // The flat representation of this is actually pretty tricky. Currently
2029
- // it is:
2030
- //
2031
- // i32 i64 i32
2032
- //
2033
- // The first `i32` is the discriminant for the `result`, and the payload
2034
- // is represented by `i64 i32`. The "ok" variant will only use the `i64`
2035
- // and the "err" variant will use both `i64` and `i32`.
2036
- //
2037
- // In the "ok" variant the first issue is encountered. The size of one
2038
- // variant may not match the size of the other variants. All variants
2039
- // start at the "front" but when lowering a type we need to be sure to
2040
- // initialize the later variants (lest we leak random host memory into
2041
- // the guest module). Due to how the `Lower` type is represented as a
2042
- // `union` of all the variants what ends up happening here is that
2043
- // internally within the `lower_payload` after the typed payload is
2044
- // lowered the remaining bits of the payload that weren't initialized
2045
- // are all set to zero. This will guarantee that we'll write to all the
2046
- // slots for each variant.
2047
- //
2048
- // The "err" variant encounters the second issue, however, which is that
2049
- // the flat representation for each type may differ between payloads. In
2050
- // the "ok" arm an `i64` is written, but the `lower` implementation for
2051
- // the "err" arm will write an `f32` and then an `i32`. For this
2052
- // implementation of `lower` to be valid the `f32` needs to get inflated
2053
- // to an `i64` with zero-padding in the upper bits. What may be
2054
- // surprising, however, is that none of this is handled in this file.
2055
- // This implementation looks like it's blindly deferring to `E::lower`
2056
- // and hoping it does the right thing.
2057
- //
2058
- // In reality, however, the correctness of variant lowering relies on
2059
- // two subtle details of the `ValRaw` implementation in Wasmtime:
2060
- //
2061
- // 1. First the `ValRaw` value always contains little-endian values.
2062
- // This means that if a `u32` is written, a `u64` is read, and then
2063
- // the `u64` has its upper bits truncated the original value will
2064
- // always be retained. This is primarily here for big-endian
2065
- // platforms where if it weren't little endian then the opposite
2066
- // would occur and the wrong value would be read.
2067
- //
2068
- // 2. Second, and perhaps even more subtly, the `ValRaw` constructors
2069
- // for 32-bit types actually always initialize 64-bits of the
2070
- // `ValRaw`. In the component model flat ABI only 32 and 64-bit types
2071
- // are used so 64-bits is big enough to contain everything. This
2072
- // means that when a `ValRaw` is written into the destination it will
2073
- // always, whether it's needed or not, be "ready" to get extended up
2074
- // to 64-bits.
2075
- //
2076
- // Put together these two subtle guarantees means that all `Lower`
2077
- // implementations can be written "naturally" as one might naively
2078
- // expect. Variants will, on each arm, zero out remaining fields and all
2079
- // writes to the flat representation will automatically be 64-bit writes
2080
- // meaning that if the value is read as a 64-bit value, which isn't
2081
- // known at the time of the write, it'll still be correct.
2082
- match self {
2083
- Ok(e) => {
2084
- map_maybe_uninit!(dst.tag).write(ValRaw::i32(0));
2085
- unsafe {
2086
- lower_payload(
2087
- map_maybe_uninit!(dst.payload),
2088
- |payload| map_maybe_uninit!(payload.ok),
2089
- |dst| match ok {
2090
- Some(ok) => e.lower(cx, ok, dst),
2091
- None => Ok(()),
2092
- },
2093
- )
2094
- }
2095
- }
2096
- Err(e) => {
2097
- map_maybe_uninit!(dst.tag).write(ValRaw::i32(1));
2098
- unsafe {
2099
- lower_payload(
2100
- map_maybe_uninit!(dst.payload),
2101
- |payload| map_maybe_uninit!(payload.err),
2102
- |dst| match err {
2103
- Some(err) => e.lower(cx, err, dst),
2104
- None => Ok(()),
2105
- },
2106
- )
2107
- }
2108
- }
2109
- }
2110
- }
2111
-
2112
- fn store<U>(
2113
- &self,
2114
- cx: &mut LowerContext<'_, U>,
2115
- ty: InterfaceType,
2116
- offset: usize,
2117
- ) -> Result<()> {
2118
- let (ok, err) = match ty {
2119
- InterfaceType::Result(ty) => {
2120
- let ty = &cx.types[ty];
2121
- (ty.ok, ty.err)
2122
- }
2123
- _ => bad_type_info(),
2124
- };
2125
- debug_assert!(offset % (Self::ALIGN32 as usize) == 0);
2126
- let payload_offset = Self::INFO.payload_offset32 as usize;
2127
- match self {
2128
- Ok(e) => {
2129
- cx.get::<1>(offset)[0] = 0;
2130
- if let Some(ok) = ok {
2131
- e.store(cx, ok, offset + payload_offset)?;
2132
- }
2133
- }
2134
- Err(e) => {
2135
- cx.get::<1>(offset)[0] = 1;
2136
- if let Some(err) = err {
2137
- e.store(cx, err, offset + payload_offset)?;
2138
- }
2139
- }
2140
- }
2141
- Ok(())
2142
- }
2143
- }
2144
-
2145
- unsafe impl<T, E> Lift for Result<T, E>
2146
- where
2147
- T: Lift,
2148
- E: Lift,
2149
- {
2150
- #[inline]
2151
- fn lift(cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self> {
2152
- let (ok, err) = match ty {
2153
- InterfaceType::Result(ty) => {
2154
- let ty = &cx.types[ty];
2155
- (ty.ok, ty.err)
2156
- }
2157
- _ => bad_type_info(),
2158
- };
2159
- // Note that this implementation specifically isn't trying to actually
2160
- // reinterpret or alter the bits of `lower` depending on which variant
2161
- // we're lifting. This ends up all working out because the value is
2162
- // stored in little-endian format.
2163
- //
2164
- // When stored in little-endian format the `{T,E}::Lower`, when each
2165
- // individual `ValRaw` is read, means that if an i64 value, extended
2166
- // from an i32 value, was stored then when the i32 value is read it'll
2167
- // automatically ignore the upper bits.
2168
- //
2169
- // This "trick" allows us to seamlessly pass through the `Self::Lower`
2170
- // representation into the lifting/lowering without trying to handle
2171
- // "join"ed types as per the canonical ABI. It just so happens that i64
2172
- // bits will naturally be reinterpreted as f64. Additionally if the
2173
- // joined type is i64 but only the lower bits are read that's ok and we
2174
- // don't need to validate the upper bits.
2175
- //
2176
- // This is largely enabled by WebAssembly/component-model#35 where no
2177
- // validation needs to be performed for ignored bits and bytes here.
2178
- Ok(match src.tag.get_i32() {
2179
- 0 => Ok(unsafe { lift_option(cx, ok, &src.payload.ok)? }),
2180
- 1 => Err(unsafe { lift_option(cx, err, &src.payload.err)? }),
2181
- _ => bail!("invalid expected discriminant"),
2182
- })
2183
- }
2184
-
2185
- #[inline]
2186
- fn load(cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
2187
- debug_assert!((bytes.as_ptr() as usize) % (Self::ALIGN32 as usize) == 0);
2188
- let discrim = bytes[0];
2189
- let payload = &bytes[Self::INFO.payload_offset32 as usize..];
2190
- let (ok, err) = match ty {
2191
- InterfaceType::Result(ty) => {
2192
- let ty = &cx.types[ty];
2193
- (ty.ok, ty.err)
2194
- }
2195
- _ => bad_type_info(),
2196
- };
2197
- match discrim {
2198
- 0 => Ok(Ok(load_option(cx, ok, &payload[..T::SIZE32])?)),
2199
- 1 => Ok(Err(load_option(cx, err, &payload[..E::SIZE32])?)),
2200
- _ => bail!("invalid expected discriminant"),
2201
- }
2202
- }
2203
- }
2204
-
2205
- fn lift_option<T>(cx: &mut LiftContext<'_>, ty: Option<InterfaceType>, src: &T::Lower) -> Result<T>
2206
- where
2207
- T: Lift,
2208
- {
2209
- match ty {
2210
- Some(ty) => T::lift(cx, ty, src),
2211
- None => Ok(empty_lift()),
2212
- }
2213
- }
2214
-
2215
- fn load_option<T>(cx: &mut LiftContext<'_>, ty: Option<InterfaceType>, bytes: &[u8]) -> Result<T>
2216
- where
2217
- T: Lift,
2218
- {
2219
- match ty {
2220
- Some(ty) => T::load(cx, ty, bytes),
2221
- None => Ok(empty_lift()),
2222
- }
2223
- }
2224
-
2225
- fn empty_lift<T>() -> T
2226
- where
2227
- T: Lift,
2228
- {
2229
- assert!(T::IS_RUST_UNIT_TYPE);
2230
- assert_eq!(mem::size_of::<T>(), 0);
2231
- unsafe { MaybeUninit::uninit().assume_init() }
2232
- }
2233
-
2234
- macro_rules! impl_component_ty_for_tuples {
2235
- ($n:tt $($t:ident)*) => {paste::paste!{
2236
- #[allow(non_snake_case)]
2237
- #[doc(hidden)]
2238
- #[derive(Clone, Copy)]
2239
- #[repr(C)]
2240
- pub struct [<TupleLower$n>]<$($t),*> {
2241
- $($t: $t,)*
2242
- _align_tuple_lower0_correctly: [ValRaw; 0],
2243
- }
2244
-
2245
- #[allow(non_snake_case)]
2246
- unsafe impl<$($t,)*> ComponentType for ($($t,)*)
2247
- where $($t: ComponentType),*
2248
- {
2249
- type Lower = [<TupleLower$n>]<$($t::Lower),*>;
2250
-
2251
- const ABI: CanonicalAbiInfo = CanonicalAbiInfo::record_static(&[
2252
- $($t::ABI),*
2253
- ]);
2254
-
2255
- const IS_RUST_UNIT_TYPE: bool = {
2256
- let mut _is_unit = true;
2257
- $(
2258
- let _anything_to_bind_the_macro_variable = $t::IS_RUST_UNIT_TYPE;
2259
- _is_unit = false;
2260
- )*
2261
- _is_unit
2262
- };
2263
-
2264
- fn typecheck(
2265
- ty: &InterfaceType,
2266
- types: &InstanceType<'_>,
2267
- ) -> Result<()> {
2268
- typecheck_tuple(ty, types, &[$($t::typecheck),*])
2269
- }
2270
- }
2271
-
2272
- #[allow(non_snake_case)]
2273
- unsafe impl<$($t,)*> Lower for ($($t,)*)
2274
- where $($t: Lower),*
2275
- {
2276
- fn lower<U>(
2277
- &self,
2278
- cx: &mut LowerContext<'_, U>,
2279
- ty: InterfaceType,
2280
- _dst: &mut MaybeUninit<Self::Lower>,
2281
- ) -> Result<()> {
2282
- let types = match ty {
2283
- InterfaceType::Tuple(t) => &cx.types[t].types,
2284
- _ => bad_type_info(),
2285
- };
2286
- let ($($t,)*) = self;
2287
- let mut _types = types.iter();
2288
- $(
2289
- let ty = *_types.next().unwrap_or_else(bad_type_info);
2290
- $t.lower(cx, ty, map_maybe_uninit!(_dst.$t))?;
2291
- )*
2292
- Ok(())
2293
- }
2294
-
2295
- fn store<U>(
2296
- &self,
2297
- cx: &mut LowerContext<'_, U>,
2298
- ty: InterfaceType,
2299
- mut _offset: usize,
2300
- ) -> Result<()> {
2301
- debug_assert!(_offset % (Self::ALIGN32 as usize) == 0);
2302
- let types = match ty {
2303
- InterfaceType::Tuple(t) => &cx.types[t].types,
2304
- _ => bad_type_info(),
2305
- };
2306
- let ($($t,)*) = self;
2307
- let mut _types = types.iter();
2308
- $(
2309
- let ty = *_types.next().unwrap_or_else(bad_type_info);
2310
- $t.store(cx, ty, $t::ABI.next_field32_size(&mut _offset))?;
2311
- )*
2312
- Ok(())
2313
- }
2314
- }
2315
-
2316
- #[allow(non_snake_case)]
2317
- unsafe impl<$($t,)*> Lift for ($($t,)*)
2318
- where $($t: Lift),*
2319
- {
2320
- #[inline]
2321
- fn lift(cx: &mut LiftContext<'_>, ty: InterfaceType, _src: &Self::Lower) -> Result<Self> {
2322
- let types = match ty {
2323
- InterfaceType::Tuple(t) => &cx.types[t].types,
2324
- _ => bad_type_info(),
2325
- };
2326
- let mut _types = types.iter();
2327
- Ok(($(
2328
- $t::lift(
2329
- cx,
2330
- *_types.next().unwrap_or_else(bad_type_info),
2331
- &_src.$t,
2332
- )?,
2333
- )*))
2334
- }
2335
-
2336
- #[inline]
2337
- fn load(cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
2338
- debug_assert!((bytes.as_ptr() as usize) % (Self::ALIGN32 as usize) == 0);
2339
- let types = match ty {
2340
- InterfaceType::Tuple(t) => &cx.types[t].types,
2341
- _ => bad_type_info(),
2342
- };
2343
- let mut _types = types.iter();
2344
- let mut _offset = 0;
2345
- $(
2346
- let ty = *_types.next().unwrap_or_else(bad_type_info);
2347
- let $t = $t::load(cx, ty, &bytes[$t::ABI.next_field32_size(&mut _offset)..][..$t::SIZE32])?;
2348
- )*
2349
- Ok(($($t,)*))
2350
- }
2351
- }
2352
-
2353
- #[allow(non_snake_case)]
2354
- unsafe impl<$($t,)*> ComponentNamedList for ($($t,)*)
2355
- where $($t: ComponentType),*
2356
- {}
2357
- }};
2358
- }
2359
-
2360
- for_each_function_signature!(impl_component_ty_for_tuples);
2361
-
2362
- pub fn desc(ty: &InterfaceType) -> &'static str {
2363
- match ty {
2364
- InterfaceType::U8 => "u8",
2365
- InterfaceType::S8 => "s8",
2366
- InterfaceType::U16 => "u16",
2367
- InterfaceType::S16 => "s16",
2368
- InterfaceType::U32 => "u32",
2369
- InterfaceType::S32 => "s32",
2370
- InterfaceType::U64 => "u64",
2371
- InterfaceType::S64 => "s64",
2372
- InterfaceType::Float32 => "f32",
2373
- InterfaceType::Float64 => "f64",
2374
- InterfaceType::Bool => "bool",
2375
- InterfaceType::Char => "char",
2376
- InterfaceType::String => "string",
2377
- InterfaceType::List(_) => "list",
2378
- InterfaceType::Tuple(_) => "tuple",
2379
- InterfaceType::Option(_) => "option",
2380
- InterfaceType::Result(_) => "result",
2381
-
2382
- InterfaceType::Record(_) => "record",
2383
- InterfaceType::Variant(_) => "variant",
2384
- InterfaceType::Flags(_) => "flags",
2385
- InterfaceType::Enum(_) => "enum",
2386
- InterfaceType::Own(_) => "owned resource",
2387
- InterfaceType::Borrow(_) => "borrowed resource",
2388
- }
2389
- }
2390
-
2391
- #[cold]
2392
- #[doc(hidden)]
2393
- pub fn bad_type_info<T>() -> T {
2394
- // NB: should consider something like `unreachable_unchecked` here if this
2395
- // becomes a performance bottleneck at some point, but that also comes with
2396
- // a tradeoff of propagating a lot of unsafety, so it may not be worth it.
2397
- panic!("bad type information detected");
2398
- }