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
@@ -0,0 +1,2400 @@
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
+ #[allow(trivial_numeric_casts)]
719
+ fn lower<T>(
720
+ &self,
721
+ _cx: &mut LowerContext<'_, T>,
722
+ ty: InterfaceType,
723
+ dst: &mut MaybeUninit<Self::Lower>,
724
+ ) -> Result<()> {
725
+ debug_assert!(matches!(ty, InterfaceType::$ty));
726
+ dst.write(ValRaw::$field(*self as $field));
727
+ Ok(())
728
+ }
729
+
730
+ #[inline]
731
+ fn store<T>(
732
+ &self,
733
+ cx: &mut LowerContext<'_, T>,
734
+ ty: InterfaceType,
735
+ offset: usize,
736
+ ) -> Result<()> {
737
+ debug_assert!(matches!(ty, InterfaceType::$ty));
738
+ debug_assert!(offset % Self::SIZE32 == 0);
739
+ *cx.get(offset) = self.to_le_bytes();
740
+ Ok(())
741
+ }
742
+
743
+ fn store_list<T>(
744
+ cx: &mut LowerContext<'_, T>,
745
+ ty: InterfaceType,
746
+ offset: usize,
747
+ items: &[Self],
748
+ ) -> Result<()> {
749
+ debug_assert!(matches!(ty, InterfaceType::$ty));
750
+
751
+ // Double-check that the CM alignment is at least the host's
752
+ // alignment for this type which should be true for all
753
+ // platforms.
754
+ assert!((Self::ALIGN32 as usize) >= mem::align_of::<Self>());
755
+
756
+ // Slice `cx`'s memory to the window that we'll be modifying.
757
+ // This should all have already been verified in terms of
758
+ // alignment and sizing meaning that these assertions here are
759
+ // not truly necessary but are instead double-checks.
760
+ //
761
+ // Note that we're casting a `[u8]` slice to `[Self]` with
762
+ // `align_to_mut` which is not safe in general but is safe in
763
+ // our specific case as all `u8` patterns are valid `Self`
764
+ // patterns since `Self` is an integral type.
765
+ let dst = &mut cx.as_slice_mut()[offset..][..items.len() * Self::SIZE32];
766
+ let (before, middle, end) = unsafe { dst.align_to_mut::<Self>() };
767
+ assert!(before.is_empty() && end.is_empty());
768
+ assert_eq!(middle.len(), items.len());
769
+
770
+ // And with all that out of the way perform the copying loop.
771
+ // This is not a `copy_from_slice` because endianness needs to
772
+ // be handled here, but LLVM should pretty easily transform this
773
+ // into a memcpy on little-endian platforms.
774
+ for (dst, src) in middle.iter_mut().zip(items) {
775
+ *dst = src.to_le();
776
+ }
777
+ Ok(())
778
+ }
779
+ }
780
+
781
+ unsafe impl Lift for $primitive {
782
+ #[inline]
783
+ #[allow(trivial_numeric_casts)]
784
+ fn lift(_cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self> {
785
+ debug_assert!(matches!(ty, InterfaceType::$ty));
786
+ Ok(src.$get() as $primitive)
787
+ }
788
+
789
+ #[inline]
790
+ fn load(_cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
791
+ debug_assert!(matches!(ty, InterfaceType::$ty));
792
+ debug_assert!((bytes.as_ptr() as usize) % Self::SIZE32 == 0);
793
+ Ok($primitive::from_le_bytes(bytes.try_into().unwrap()))
794
+ }
795
+
796
+ fn load_list(cx: &mut LiftContext<'_>, list: &WasmList<Self>) -> Result<Vec<Self>> {
797
+ Ok(
798
+ list._as_le_slice(cx.memory())
799
+ .iter()
800
+ .map(|i| Self::from_le(*i))
801
+ .collect(),
802
+ )
803
+ }
804
+ }
805
+ )*)
806
+ }
807
+
808
+ integers! {
809
+ i8 = S8 in i32/get_i32 with abi:SCALAR1,
810
+ u8 = U8 in u32/get_u32 with abi:SCALAR1,
811
+ i16 = S16 in i32/get_i32 with abi:SCALAR2,
812
+ u16 = U16 in u32/get_u32 with abi:SCALAR2,
813
+ i32 = S32 in i32/get_i32 with abi:SCALAR4,
814
+ u32 = U32 in u32/get_u32 with abi:SCALAR4,
815
+ i64 = S64 in i64/get_i64 with abi:SCALAR8,
816
+ u64 = U64 in u64/get_u64 with abi:SCALAR8,
817
+ }
818
+
819
+ macro_rules! floats {
820
+ ($($float:ident/$get_float:ident = $ty:ident with abi:$abi:ident)*) => ($(const _: () = {
821
+ /// All floats in-and-out of the canonical abi always have their nan
822
+ /// payloads canonicalized. conveniently the `NAN` constant in rust has
823
+ /// the same representation as canonical nan, so we can use that for the
824
+ /// nan value.
825
+ #[inline]
826
+ fn canonicalize(float: $float) -> $float {
827
+ if float.is_nan() {
828
+ $float::NAN
829
+ } else {
830
+ float
831
+ }
832
+ }
833
+
834
+ unsafe impl ComponentType for $float {
835
+ type Lower = ValRaw;
836
+
837
+ const ABI: CanonicalAbiInfo = CanonicalAbiInfo::$abi;
838
+
839
+ fn typecheck(ty: &InterfaceType, _types: &InstanceType<'_>) -> Result<()> {
840
+ match ty {
841
+ InterfaceType::$ty => Ok(()),
842
+ other => bail!("expected `{}` found `{}`", desc(&InterfaceType::$ty), desc(other))
843
+ }
844
+ }
845
+ }
846
+
847
+ unsafe impl Lower for $float {
848
+ #[inline]
849
+ fn lower<T>(
850
+ &self,
851
+ _cx: &mut LowerContext<'_, T>,
852
+ ty: InterfaceType,
853
+ dst: &mut MaybeUninit<Self::Lower>,
854
+ ) -> Result<()> {
855
+ debug_assert!(matches!(ty, InterfaceType::$ty));
856
+ dst.write(ValRaw::$float(canonicalize(*self).to_bits()));
857
+ Ok(())
858
+ }
859
+
860
+ #[inline]
861
+ fn store<T>(
862
+ &self,
863
+ cx: &mut LowerContext<'_, T>,
864
+ ty: InterfaceType,
865
+ offset: usize,
866
+ ) -> Result<()> {
867
+ debug_assert!(matches!(ty, InterfaceType::$ty));
868
+ debug_assert!(offset % Self::SIZE32 == 0);
869
+ let ptr = cx.get(offset);
870
+ *ptr = canonicalize(*self).to_bits().to_le_bytes();
871
+ Ok(())
872
+ }
873
+ }
874
+
875
+ unsafe impl Lift for $float {
876
+ #[inline]
877
+ fn lift(_cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self> {
878
+ debug_assert!(matches!(ty, InterfaceType::$ty));
879
+ Ok(canonicalize($float::from_bits(src.$get_float())))
880
+ }
881
+
882
+ #[inline]
883
+ fn load(_cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
884
+ debug_assert!(matches!(ty, InterfaceType::$ty));
885
+ debug_assert!((bytes.as_ptr() as usize) % Self::SIZE32 == 0);
886
+ Ok(canonicalize($float::from_le_bytes(bytes.try_into().unwrap())))
887
+ }
888
+ }
889
+ };)*)
890
+ }
891
+
892
+ floats! {
893
+ f32/get_f32 = Float32 with abi:SCALAR4
894
+ f64/get_f64 = Float64 with abi:SCALAR8
895
+ }
896
+
897
+ unsafe impl ComponentType for bool {
898
+ type Lower = ValRaw;
899
+
900
+ const ABI: CanonicalAbiInfo = CanonicalAbiInfo::SCALAR1;
901
+
902
+ fn typecheck(ty: &InterfaceType, _types: &InstanceType<'_>) -> Result<()> {
903
+ match ty {
904
+ InterfaceType::Bool => Ok(()),
905
+ other => bail!("expected `bool` found `{}`", desc(other)),
906
+ }
907
+ }
908
+ }
909
+
910
+ unsafe impl Lower for bool {
911
+ fn lower<T>(
912
+ &self,
913
+ _cx: &mut LowerContext<'_, T>,
914
+ ty: InterfaceType,
915
+ dst: &mut MaybeUninit<Self::Lower>,
916
+ ) -> Result<()> {
917
+ debug_assert!(matches!(ty, InterfaceType::Bool));
918
+ dst.write(ValRaw::i32(*self as i32));
919
+ Ok(())
920
+ }
921
+
922
+ fn store<T>(
923
+ &self,
924
+ cx: &mut LowerContext<'_, T>,
925
+ ty: InterfaceType,
926
+ offset: usize,
927
+ ) -> Result<()> {
928
+ debug_assert!(matches!(ty, InterfaceType::Bool));
929
+ debug_assert!(offset % Self::SIZE32 == 0);
930
+ cx.get::<1>(offset)[0] = *self as u8;
931
+ Ok(())
932
+ }
933
+ }
934
+
935
+ unsafe impl Lift for bool {
936
+ #[inline]
937
+ fn lift(_cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self> {
938
+ debug_assert!(matches!(ty, InterfaceType::Bool));
939
+ match src.get_i32() {
940
+ 0 => Ok(false),
941
+ _ => Ok(true),
942
+ }
943
+ }
944
+
945
+ #[inline]
946
+ fn load(_cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
947
+ debug_assert!(matches!(ty, InterfaceType::Bool));
948
+ match bytes[0] {
949
+ 0 => Ok(false),
950
+ _ => Ok(true),
951
+ }
952
+ }
953
+ }
954
+
955
+ unsafe impl ComponentType for char {
956
+ type Lower = ValRaw;
957
+
958
+ const ABI: CanonicalAbiInfo = CanonicalAbiInfo::SCALAR4;
959
+
960
+ fn typecheck(ty: &InterfaceType, _types: &InstanceType<'_>) -> Result<()> {
961
+ match ty {
962
+ InterfaceType::Char => Ok(()),
963
+ other => bail!("expected `char` found `{}`", desc(other)),
964
+ }
965
+ }
966
+ }
967
+
968
+ unsafe impl Lower for char {
969
+ #[inline]
970
+ fn lower<T>(
971
+ &self,
972
+ _cx: &mut LowerContext<'_, T>,
973
+ ty: InterfaceType,
974
+ dst: &mut MaybeUninit<Self::Lower>,
975
+ ) -> Result<()> {
976
+ debug_assert!(matches!(ty, InterfaceType::Char));
977
+ dst.write(ValRaw::u32(u32::from(*self)));
978
+ Ok(())
979
+ }
980
+
981
+ #[inline]
982
+ fn store<T>(
983
+ &self,
984
+ cx: &mut LowerContext<'_, T>,
985
+ ty: InterfaceType,
986
+ offset: usize,
987
+ ) -> Result<()> {
988
+ debug_assert!(matches!(ty, InterfaceType::Char));
989
+ debug_assert!(offset % Self::SIZE32 == 0);
990
+ *cx.get::<4>(offset) = u32::from(*self).to_le_bytes();
991
+ Ok(())
992
+ }
993
+ }
994
+
995
+ unsafe impl Lift for char {
996
+ #[inline]
997
+ fn lift(_cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self> {
998
+ debug_assert!(matches!(ty, InterfaceType::Char));
999
+ Ok(char::try_from(src.get_u32())?)
1000
+ }
1001
+
1002
+ #[inline]
1003
+ fn load(_cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
1004
+ debug_assert!(matches!(ty, InterfaceType::Char));
1005
+ debug_assert!((bytes.as_ptr() as usize) % Self::SIZE32 == 0);
1006
+ let bits = u32::from_le_bytes(bytes.try_into().unwrap());
1007
+ Ok(char::try_from(bits)?)
1008
+ }
1009
+ }
1010
+
1011
+ // TODO: these probably need different constants for memory64
1012
+ const UTF16_TAG: usize = 1 << 31;
1013
+ const MAX_STRING_BYTE_LENGTH: usize = (1 << 31) - 1;
1014
+
1015
+ // Note that this is similar to `ComponentType for WasmStr` except it can only
1016
+ // be used for lowering, not lifting.
1017
+ unsafe impl ComponentType for str {
1018
+ type Lower = [ValRaw; 2];
1019
+
1020
+ const ABI: CanonicalAbiInfo = CanonicalAbiInfo::POINTER_PAIR;
1021
+
1022
+ fn typecheck(ty: &InterfaceType, _types: &InstanceType<'_>) -> Result<()> {
1023
+ match ty {
1024
+ InterfaceType::String => Ok(()),
1025
+ other => bail!("expected `string` found `{}`", desc(other)),
1026
+ }
1027
+ }
1028
+ }
1029
+
1030
+ unsafe impl Lower for str {
1031
+ fn lower<T>(
1032
+ &self,
1033
+ cx: &mut LowerContext<'_, T>,
1034
+ ty: InterfaceType,
1035
+ dst: &mut MaybeUninit<[ValRaw; 2]>,
1036
+ ) -> Result<()> {
1037
+ debug_assert!(matches!(ty, InterfaceType::String));
1038
+ let (ptr, len) = lower_string(cx, self)?;
1039
+ // See "WRITEPTR64" above for why this is always storing a 64-bit
1040
+ // integer.
1041
+ map_maybe_uninit!(dst[0]).write(ValRaw::i64(ptr as i64));
1042
+ map_maybe_uninit!(dst[1]).write(ValRaw::i64(len as i64));
1043
+ Ok(())
1044
+ }
1045
+
1046
+ fn store<T>(
1047
+ &self,
1048
+ cx: &mut LowerContext<'_, T>,
1049
+ ty: InterfaceType,
1050
+ offset: usize,
1051
+ ) -> Result<()> {
1052
+ debug_assert!(matches!(ty, InterfaceType::String));
1053
+ debug_assert!(offset % (Self::ALIGN32 as usize) == 0);
1054
+ let (ptr, len) = lower_string(cx, self)?;
1055
+ // FIXME: needs memory64 handling
1056
+ *cx.get(offset + 0) = (ptr as i32).to_le_bytes();
1057
+ *cx.get(offset + 4) = (len as i32).to_le_bytes();
1058
+ Ok(())
1059
+ }
1060
+ }
1061
+
1062
+ fn lower_string<T>(cx: &mut LowerContext<'_, T>, string: &str) -> Result<(usize, usize)> {
1063
+ // Note that in general the wasm module can't assume anything about what the
1064
+ // host strings are encoded as. Additionally hosts are allowed to have
1065
+ // differently-encoded strings at runtime. Finally when copying a string
1066
+ // into wasm it's somewhat strict in the sense that the various patterns of
1067
+ // allocation and such are already dictated for us.
1068
+ //
1069
+ // In general what this means is that when copying a string from the host
1070
+ // into the destination we need to follow one of the cases of copying into
1071
+ // WebAssembly. It doesn't particularly matter which case as long as it ends
1072
+ // up in the right encoding. For example a destination encoding of
1073
+ // latin1+utf16 has a number of ways to get copied into and we do something
1074
+ // here that isn't the default "utf8 to latin1+utf16" since we have access
1075
+ // to simd-accelerated helpers in the `encoding_rs` crate. This is ok though
1076
+ // because we can fake that the host string was already stored in latin1
1077
+ // format and follow that copy pattern instead.
1078
+ match cx.options.string_encoding() {
1079
+ // This corresponds to `store_string_copy` in the canonical ABI where
1080
+ // the host's representation is utf-8 and the wasm module wants utf-8 so
1081
+ // a copy is all that's needed (and the `realloc` can be precise for the
1082
+ // initial memory allocation).
1083
+ StringEncoding::Utf8 => {
1084
+ if string.len() > MAX_STRING_BYTE_LENGTH {
1085
+ bail!(
1086
+ "string length of {} too large to copy into wasm",
1087
+ string.len()
1088
+ );
1089
+ }
1090
+ let ptr = cx.realloc(0, 0, 1, string.len())?;
1091
+ cx.as_slice_mut()[ptr..][..string.len()].copy_from_slice(string.as_bytes());
1092
+ Ok((ptr, string.len()))
1093
+ }
1094
+
1095
+ // This corresponds to `store_utf8_to_utf16` in the canonical ABI. Here
1096
+ // an over-large allocation is performed and then shrunk afterwards if
1097
+ // necessary.
1098
+ StringEncoding::Utf16 => {
1099
+ let size = string.len() * 2;
1100
+ if size > MAX_STRING_BYTE_LENGTH {
1101
+ bail!(
1102
+ "string length of {} too large to copy into wasm",
1103
+ string.len()
1104
+ );
1105
+ }
1106
+ let mut ptr = cx.realloc(0, 0, 2, size)?;
1107
+ let mut copied = 0;
1108
+ let bytes = &mut cx.as_slice_mut()[ptr..][..size];
1109
+ for (u, bytes) in string.encode_utf16().zip(bytes.chunks_mut(2)) {
1110
+ let u_bytes = u.to_le_bytes();
1111
+ bytes[0] = u_bytes[0];
1112
+ bytes[1] = u_bytes[1];
1113
+ copied += 1;
1114
+ }
1115
+ if (copied * 2) < size {
1116
+ ptr = cx.realloc(ptr, size, 2, copied * 2)?;
1117
+ }
1118
+ Ok((ptr, copied))
1119
+ }
1120
+
1121
+ StringEncoding::CompactUtf16 => {
1122
+ // This corresponds to `store_string_to_latin1_or_utf16`
1123
+ let bytes = string.as_bytes();
1124
+ let mut iter = string.char_indices();
1125
+ let mut ptr = cx.realloc(0, 0, 2, bytes.len())?;
1126
+ let mut dst = &mut cx.as_slice_mut()[ptr..][..bytes.len()];
1127
+ let mut result = 0;
1128
+ while let Some((i, ch)) = iter.next() {
1129
+ // Test if this `char` fits into the latin1 encoding.
1130
+ if let Ok(byte) = u8::try_from(u32::from(ch)) {
1131
+ dst[result] = byte;
1132
+ result += 1;
1133
+ continue;
1134
+ }
1135
+
1136
+ // .. if utf16 is forced to be used then the allocation is
1137
+ // bumped up to the maximum size.
1138
+ let worst_case = bytes
1139
+ .len()
1140
+ .checked_mul(2)
1141
+ .ok_or_else(|| anyhow!("byte length overflow"))?;
1142
+ if worst_case > MAX_STRING_BYTE_LENGTH {
1143
+ bail!("byte length too large");
1144
+ }
1145
+ ptr = cx.realloc(ptr, bytes.len(), 2, worst_case)?;
1146
+ dst = &mut cx.as_slice_mut()[ptr..][..worst_case];
1147
+
1148
+ // Previously encoded latin1 bytes are inflated to their 16-bit
1149
+ // size for utf16
1150
+ for i in (0..result).rev() {
1151
+ dst[2 * i] = dst[i];
1152
+ dst[2 * i + 1] = 0;
1153
+ }
1154
+
1155
+ // and then the remainder of the string is encoded.
1156
+ for (u, bytes) in string[i..]
1157
+ .encode_utf16()
1158
+ .zip(dst[2 * result..].chunks_mut(2))
1159
+ {
1160
+ let u_bytes = u.to_le_bytes();
1161
+ bytes[0] = u_bytes[0];
1162
+ bytes[1] = u_bytes[1];
1163
+ result += 1;
1164
+ }
1165
+ if worst_case > 2 * result {
1166
+ ptr = cx.realloc(ptr, worst_case, 2, 2 * result)?;
1167
+ }
1168
+ return Ok((ptr, result | UTF16_TAG));
1169
+ }
1170
+ if result < bytes.len() {
1171
+ ptr = cx.realloc(ptr, bytes.len(), 2, result)?;
1172
+ }
1173
+ Ok((ptr, result))
1174
+ }
1175
+ }
1176
+ }
1177
+
1178
+ /// Representation of a string located in linear memory in a WebAssembly
1179
+ /// instance.
1180
+ ///
1181
+ /// This type is used with [`TypedFunc`], for example, when WebAssembly returns
1182
+ /// a string. This type cannot be used to give a string to WebAssembly, instead
1183
+ /// `&str` should be used for that (since it's coming from the host).
1184
+ ///
1185
+ /// Note that this type represents an in-bounds string in linear memory, but it
1186
+ /// does not represent a valid string (e.g. valid utf-8). Validation happens
1187
+ /// when [`WasmStr::to_str`] is called.
1188
+ //
1189
+ // TODO: should probably expand this with examples
1190
+ pub struct WasmStr {
1191
+ ptr: usize,
1192
+ len: usize,
1193
+ options: Options,
1194
+ }
1195
+
1196
+ impl WasmStr {
1197
+ fn new(ptr: usize, len: usize, cx: &mut LiftContext<'_>) -> Result<WasmStr> {
1198
+ let byte_len = match cx.options.string_encoding() {
1199
+ StringEncoding::Utf8 => Some(len),
1200
+ StringEncoding::Utf16 => len.checked_mul(2),
1201
+ StringEncoding::CompactUtf16 => {
1202
+ if len & UTF16_TAG == 0 {
1203
+ Some(len)
1204
+ } else {
1205
+ (len ^ UTF16_TAG).checked_mul(2)
1206
+ }
1207
+ }
1208
+ };
1209
+ match byte_len.and_then(|len| ptr.checked_add(len)) {
1210
+ Some(n) if n <= cx.memory().len() => {}
1211
+ _ => bail!("string pointer/length out of bounds of memory"),
1212
+ }
1213
+ Ok(WasmStr {
1214
+ ptr,
1215
+ len,
1216
+ options: *cx.options,
1217
+ })
1218
+ }
1219
+
1220
+ /// Returns the underlying string that this cursor points to.
1221
+ ///
1222
+ /// Note that this will internally decode the string from the wasm's
1223
+ /// encoding to utf-8 and additionally perform validation.
1224
+ ///
1225
+ /// The `store` provided must be the store where this string lives to
1226
+ /// access the correct memory.
1227
+ ///
1228
+ /// # Errors
1229
+ ///
1230
+ /// Returns an error if the string wasn't encoded correctly (e.g. invalid
1231
+ /// utf-8).
1232
+ ///
1233
+ /// # Panics
1234
+ ///
1235
+ /// Panics if this string is not owned by `store`.
1236
+ //
1237
+ // TODO: should add accessors for specifically utf-8 and utf-16 that perhaps
1238
+ // in an opt-in basis don't do validation. Additionally there should be some
1239
+ // method that returns `[u16]` after validating to avoid the utf16-to-utf8
1240
+ // transcode.
1241
+ pub fn to_str<'a, T: 'a>(&self, store: impl Into<StoreContext<'a, T>>) -> Result<Cow<'a, str>> {
1242
+ let store = store.into().0;
1243
+ let memory = self.options.memory(store);
1244
+ self.to_str_from_memory(memory)
1245
+ }
1246
+
1247
+ fn to_str_from_memory<'a>(&self, memory: &'a [u8]) -> Result<Cow<'a, str>> {
1248
+ match self.options.string_encoding() {
1249
+ StringEncoding::Utf8 => self.decode_utf8(memory),
1250
+ StringEncoding::Utf16 => self.decode_utf16(memory, self.len),
1251
+ StringEncoding::CompactUtf16 => {
1252
+ if self.len & UTF16_TAG == 0 {
1253
+ self.decode_latin1(memory)
1254
+ } else {
1255
+ self.decode_utf16(memory, self.len ^ UTF16_TAG)
1256
+ }
1257
+ }
1258
+ }
1259
+ }
1260
+
1261
+ fn decode_utf8<'a>(&self, memory: &'a [u8]) -> Result<Cow<'a, str>> {
1262
+ // Note that bounds-checking already happen in construction of `WasmStr`
1263
+ // so this is never expected to panic. This could theoretically be
1264
+ // unchecked indexing if we're feeling wild enough.
1265
+ Ok(str::from_utf8(&memory[self.ptr..][..self.len])?.into())
1266
+ }
1267
+
1268
+ fn decode_utf16<'a>(&self, memory: &'a [u8], len: usize) -> Result<Cow<'a, str>> {
1269
+ // See notes in `decode_utf8` for why this is panicking indexing.
1270
+ let memory = &memory[self.ptr..][..len * 2];
1271
+ Ok(std::char::decode_utf16(
1272
+ memory
1273
+ .chunks(2)
1274
+ .map(|chunk| u16::from_le_bytes(chunk.try_into().unwrap())),
1275
+ )
1276
+ .collect::<Result<String, _>>()?
1277
+ .into())
1278
+ }
1279
+
1280
+ fn decode_latin1<'a>(&self, memory: &'a [u8]) -> Result<Cow<'a, str>> {
1281
+ // See notes in `decode_utf8` for why this is panicking indexing.
1282
+ Ok(encoding_rs::mem::decode_latin1(
1283
+ &memory[self.ptr..][..self.len],
1284
+ ))
1285
+ }
1286
+ }
1287
+
1288
+ // Note that this is similar to `ComponentType for str` except it can only be
1289
+ // used for lifting, not lowering.
1290
+ unsafe impl ComponentType for WasmStr {
1291
+ type Lower = <str as ComponentType>::Lower;
1292
+
1293
+ const ABI: CanonicalAbiInfo = CanonicalAbiInfo::POINTER_PAIR;
1294
+
1295
+ fn typecheck(ty: &InterfaceType, _types: &InstanceType<'_>) -> Result<()> {
1296
+ match ty {
1297
+ InterfaceType::String => Ok(()),
1298
+ other => bail!("expected `string` found `{}`", desc(other)),
1299
+ }
1300
+ }
1301
+ }
1302
+
1303
+ unsafe impl Lift for WasmStr {
1304
+ #[inline]
1305
+ fn lift(cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self> {
1306
+ debug_assert!(matches!(ty, InterfaceType::String));
1307
+ // FIXME: needs memory64 treatment
1308
+ let ptr = src[0].get_u32();
1309
+ let len = src[1].get_u32();
1310
+ let (ptr, len) = (usize::try_from(ptr)?, usize::try_from(len)?);
1311
+ WasmStr::new(ptr, len, cx)
1312
+ }
1313
+
1314
+ #[inline]
1315
+ fn load(cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
1316
+ debug_assert!(matches!(ty, InterfaceType::String));
1317
+ debug_assert!((bytes.as_ptr() as usize) % (Self::ALIGN32 as usize) == 0);
1318
+ // FIXME: needs memory64 treatment
1319
+ let ptr = u32::from_le_bytes(bytes[..4].try_into().unwrap());
1320
+ let len = u32::from_le_bytes(bytes[4..].try_into().unwrap());
1321
+ let (ptr, len) = (usize::try_from(ptr)?, usize::try_from(len)?);
1322
+ WasmStr::new(ptr, len, cx)
1323
+ }
1324
+ }
1325
+
1326
+ unsafe impl<T> ComponentType for [T]
1327
+ where
1328
+ T: ComponentType,
1329
+ {
1330
+ type Lower = [ValRaw; 2];
1331
+
1332
+ const ABI: CanonicalAbiInfo = CanonicalAbiInfo::POINTER_PAIR;
1333
+
1334
+ fn typecheck(ty: &InterfaceType, types: &InstanceType<'_>) -> Result<()> {
1335
+ match ty {
1336
+ InterfaceType::List(t) => T::typecheck(&types.types[*t].element, types),
1337
+ other => bail!("expected `list` found `{}`", desc(other)),
1338
+ }
1339
+ }
1340
+ }
1341
+
1342
+ unsafe impl<T> Lower for [T]
1343
+ where
1344
+ T: Lower,
1345
+ {
1346
+ fn lower<U>(
1347
+ &self,
1348
+ cx: &mut LowerContext<'_, U>,
1349
+ ty: InterfaceType,
1350
+ dst: &mut MaybeUninit<[ValRaw; 2]>,
1351
+ ) -> Result<()> {
1352
+ let elem = match ty {
1353
+ InterfaceType::List(i) => cx.types[i].element,
1354
+ _ => bad_type_info(),
1355
+ };
1356
+ let (ptr, len) = lower_list(cx, elem, self)?;
1357
+ // See "WRITEPTR64" above for why this is always storing a 64-bit
1358
+ // integer.
1359
+ map_maybe_uninit!(dst[0]).write(ValRaw::i64(ptr as i64));
1360
+ map_maybe_uninit!(dst[1]).write(ValRaw::i64(len as i64));
1361
+ Ok(())
1362
+ }
1363
+
1364
+ fn store<U>(
1365
+ &self,
1366
+ cx: &mut LowerContext<'_, U>,
1367
+ ty: InterfaceType,
1368
+ offset: usize,
1369
+ ) -> Result<()> {
1370
+ let elem = match ty {
1371
+ InterfaceType::List(i) => cx.types[i].element,
1372
+ _ => bad_type_info(),
1373
+ };
1374
+ debug_assert!(offset % (Self::ALIGN32 as usize) == 0);
1375
+ let (ptr, len) = lower_list(cx, elem, self)?;
1376
+ *cx.get(offset + 0) = (ptr as i32).to_le_bytes();
1377
+ *cx.get(offset + 4) = (len as i32).to_le_bytes();
1378
+ Ok(())
1379
+ }
1380
+ }
1381
+
1382
+ // FIXME: this is not a memcpy for `T` where `T` is something like `u8`.
1383
+ //
1384
+ // Some attempts to fix this have proved not fruitful. In isolation an attempt
1385
+ // was made where:
1386
+ //
1387
+ // * `MemoryMut` stored a `*mut [u8]` as its "last view" of memory to avoid
1388
+ // reloading the base pointer constantly. This view is reset on `realloc`.
1389
+ // * The bounds-checks in `MemoryMut::get` were removed (replaced with unsafe
1390
+ // indexing)
1391
+ //
1392
+ // Even then though this didn't correctly vectorized for `Vec<u8>`. It's not
1393
+ // entirely clear why but it appeared that it's related to reloading the base
1394
+ // pointer fo memory (I guess from `MemoryMut` itself?). Overall I'm not really
1395
+ // clear on what's happening there, but this is surely going to be a performance
1396
+ // bottleneck in the future.
1397
+ fn lower_list<T, U>(
1398
+ cx: &mut LowerContext<'_, U>,
1399
+ ty: InterfaceType,
1400
+ list: &[T],
1401
+ ) -> Result<(usize, usize)>
1402
+ where
1403
+ T: Lower,
1404
+ {
1405
+ let elem_size = T::SIZE32;
1406
+ let size = list
1407
+ .len()
1408
+ .checked_mul(elem_size)
1409
+ .ok_or_else(|| anyhow!("size overflow copying a list"))?;
1410
+ let ptr = cx.realloc(0, 0, T::ALIGN32, size)?;
1411
+ T::store_list(cx, ty, ptr, list)?;
1412
+ Ok((ptr, list.len()))
1413
+ }
1414
+
1415
+ /// Representation of a list of values that are owned by a WebAssembly instance.
1416
+ ///
1417
+ /// This type is used whenever a `(list T)` is returned from a [`TypedFunc`],
1418
+ /// for example. This type represents a list of values that are stored in linear
1419
+ /// memory which are waiting to be read.
1420
+ ///
1421
+ /// Note that this type represents only a valid range of bytes for the list
1422
+ /// itself, it does not represent validity of the elements themselves and that's
1423
+ /// performed when they're iterated.
1424
+ pub struct WasmList<T> {
1425
+ ptr: usize,
1426
+ len: usize,
1427
+ options: Options,
1428
+ elem: InterfaceType,
1429
+ // NB: it would probably be more efficient to store a non-atomic index-style
1430
+ // reference to something inside a `StoreOpaque`, but that's not easily
1431
+ // available at this time, so it's left as a future exercise.
1432
+ types: Arc<ComponentTypes>,
1433
+ instance: SendSyncPtr<ComponentInstance>,
1434
+ _marker: marker::PhantomData<T>,
1435
+ }
1436
+
1437
+ impl<T: Lift> WasmList<T> {
1438
+ fn new(
1439
+ ptr: usize,
1440
+ len: usize,
1441
+ cx: &mut LiftContext<'_>,
1442
+ elem: InterfaceType,
1443
+ ) -> Result<WasmList<T>> {
1444
+ match len
1445
+ .checked_mul(T::SIZE32)
1446
+ .and_then(|len| ptr.checked_add(len))
1447
+ {
1448
+ Some(n) if n <= cx.memory().len() => {}
1449
+ _ => bail!("list pointer/length out of bounds of memory"),
1450
+ }
1451
+ if ptr % usize::try_from(T::ALIGN32)? != 0 {
1452
+ bail!("list pointer is not aligned")
1453
+ }
1454
+ Ok(WasmList {
1455
+ ptr,
1456
+ len,
1457
+ options: *cx.options,
1458
+ elem,
1459
+ types: cx.types.clone(),
1460
+ instance: SendSyncPtr::new(NonNull::new(cx.instance_ptr()).unwrap()),
1461
+ _marker: marker::PhantomData,
1462
+ })
1463
+ }
1464
+
1465
+ /// Returns the item length of this vector
1466
+ #[inline]
1467
+ pub fn len(&self) -> usize {
1468
+ self.len
1469
+ }
1470
+
1471
+ /// Gets the `n`th element of this list.
1472
+ ///
1473
+ /// Returns `None` if `index` is out of bounds. Returns `Some(Err(..))` if
1474
+ /// the value couldn't be decoded (it was invalid). Returns `Some(Ok(..))`
1475
+ /// if the value is valid.
1476
+ ///
1477
+ /// # Panics
1478
+ ///
1479
+ /// This function will panic if the string did not originally come from the
1480
+ /// `store` specified.
1481
+ //
1482
+ // TODO: given that interface values are intended to be consumed in one go
1483
+ // should we even expose a random access iteration API? In theory all
1484
+ // consumers should be validating through the iterator.
1485
+ pub fn get(&self, mut store: impl AsContextMut, index: usize) -> Option<Result<T>> {
1486
+ let store = store.as_context_mut().0;
1487
+ self.options.store_id().assert_belongs_to(store.id());
1488
+ // This should be safe because the unsafety lies in the `self.instance`
1489
+ // pointer passed in has previously been validated by the lifting
1490
+ // context this was originally created within and with the check above
1491
+ // this is guaranteed to be the same store. This means that this should
1492
+ // be carrying over the original assertion from the original creation of
1493
+ // the lifting context that created this type.
1494
+ let mut cx =
1495
+ unsafe { LiftContext::new(store, &self.options, &self.types, self.instance.as_ptr()) };
1496
+ self.get_from_store(&mut cx, index)
1497
+ }
1498
+
1499
+ fn get_from_store(&self, cx: &mut LiftContext<'_>, index: usize) -> Option<Result<T>> {
1500
+ if index >= self.len {
1501
+ return None;
1502
+ }
1503
+ // Note that this is using panicking indexing and this is expected to
1504
+ // never fail. The bounds-checking here happened during the construction
1505
+ // of the `WasmList` itself which means these should always be in-bounds
1506
+ // (and wasm memory can only grow). This could theoretically be
1507
+ // unchecked indexing if we're confident enough and it's actually a perf
1508
+ // issue one day.
1509
+ let bytes = &cx.memory()[self.ptr + index * T::SIZE32..][..T::SIZE32];
1510
+ Some(T::load(cx, self.elem, bytes))
1511
+ }
1512
+
1513
+ /// Returns an iterator over the elements of this list.
1514
+ ///
1515
+ /// Each item of the list may fail to decode and is represented through the
1516
+ /// `Result` value of the iterator.
1517
+ pub fn iter<'a, U: 'a>(
1518
+ &'a self,
1519
+ store: impl Into<StoreContextMut<'a, U>>,
1520
+ ) -> impl ExactSizeIterator<Item = Result<T>> + 'a {
1521
+ let store = store.into().0;
1522
+ self.options.store_id().assert_belongs_to(store.id());
1523
+ // See comments about unsafety in the `get` method.
1524
+ let mut cx =
1525
+ unsafe { LiftContext::new(store, &self.options, &self.types, self.instance.as_ptr()) };
1526
+ (0..self.len).map(move |i| self.get_from_store(&mut cx, i).unwrap())
1527
+ }
1528
+ }
1529
+
1530
+ macro_rules! raw_wasm_list_accessors {
1531
+ ($($i:ident)*) => ($(
1532
+ impl WasmList<$i> {
1533
+ /// Get access to the raw underlying memory for this list.
1534
+ ///
1535
+ /// This method will return a direct slice into the original wasm
1536
+ /// module's linear memory where the data for this slice is stored.
1537
+ /// This allows the embedder to have efficient access to the
1538
+ /// underlying memory if needed and avoid copies and such if
1539
+ /// desired.
1540
+ ///
1541
+ /// Note that multi-byte integers are stored in little-endian format
1542
+ /// so portable processing of this slice must be aware of the host's
1543
+ /// byte-endianness. The `from_le` constructors in the Rust standard
1544
+ /// library should be suitable for converting from little-endian.
1545
+ ///
1546
+ /// # Panics
1547
+ ///
1548
+ /// Panics if the `store` provided is not the one from which this
1549
+ /// slice originated.
1550
+ pub fn as_le_slice<'a, T: 'a>(&self, store: impl Into<StoreContext<'a, T>>) -> &'a [$i] {
1551
+ let memory = self.options.memory(store.into().0);
1552
+ self._as_le_slice(memory)
1553
+ }
1554
+
1555
+ fn _as_le_slice<'a>(&self, all_of_memory: &'a [u8]) -> &'a [$i] {
1556
+ // See comments in `WasmList::get` for the panicking indexing
1557
+ let byte_size = self.len * mem::size_of::<$i>();
1558
+ let bytes = &all_of_memory[self.ptr..][..byte_size];
1559
+
1560
+ // The canonical ABI requires that everything is aligned to its
1561
+ // own size, so this should be an aligned array. Furthermore the
1562
+ // alignment of primitive integers for hosts should be smaller
1563
+ // than or equal to the size of the primitive itself, meaning
1564
+ // that a wasm canonical-abi-aligned list is also aligned for
1565
+ // the host. That should mean that the head/tail slices here are
1566
+ // empty.
1567
+ //
1568
+ // Also note that the `unsafe` here is needed since the type
1569
+ // we're aligning to isn't guaranteed to be valid, but in our
1570
+ // case it's just integers and bytes so this should be safe.
1571
+ unsafe {
1572
+ let (head, body, tail) = bytes.align_to::<$i>();
1573
+ assert!(head.is_empty() && tail.is_empty());
1574
+ body
1575
+ }
1576
+ }
1577
+ }
1578
+ )*)
1579
+ }
1580
+
1581
+ raw_wasm_list_accessors! {
1582
+ i8 i16 i32 i64
1583
+ u8 u16 u32 u64
1584
+ }
1585
+
1586
+ // Note that this is similar to `ComponentType for str` except it can only be
1587
+ // used for lifting, not lowering.
1588
+ unsafe impl<T: ComponentType> ComponentType for WasmList<T> {
1589
+ type Lower = <[T] as ComponentType>::Lower;
1590
+
1591
+ const ABI: CanonicalAbiInfo = CanonicalAbiInfo::POINTER_PAIR;
1592
+
1593
+ fn typecheck(ty: &InterfaceType, types: &InstanceType<'_>) -> Result<()> {
1594
+ <[T] as ComponentType>::typecheck(ty, types)
1595
+ }
1596
+ }
1597
+
1598
+ unsafe impl<T: Lift> Lift for WasmList<T> {
1599
+ fn lift(cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self> {
1600
+ let elem = match ty {
1601
+ InterfaceType::List(i) => cx.types[i].element,
1602
+ _ => bad_type_info(),
1603
+ };
1604
+ // FIXME: needs memory64 treatment
1605
+ let ptr = src[0].get_u32();
1606
+ let len = src[1].get_u32();
1607
+ let (ptr, len) = (usize::try_from(ptr)?, usize::try_from(len)?);
1608
+ WasmList::new(ptr, len, cx, elem)
1609
+ }
1610
+
1611
+ fn load(cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
1612
+ let elem = match ty {
1613
+ InterfaceType::List(i) => cx.types[i].element,
1614
+ _ => bad_type_info(),
1615
+ };
1616
+ debug_assert!((bytes.as_ptr() as usize) % (Self::ALIGN32 as usize) == 0);
1617
+ // FIXME: needs memory64 treatment
1618
+ let ptr = u32::from_le_bytes(bytes[..4].try_into().unwrap());
1619
+ let len = u32::from_le_bytes(bytes[4..].try_into().unwrap());
1620
+ let (ptr, len) = (usize::try_from(ptr)?, usize::try_from(len)?);
1621
+ WasmList::new(ptr, len, cx, elem)
1622
+ }
1623
+ }
1624
+
1625
+ /// Verify that the given wasm type is a tuple with the expected fields in the right order.
1626
+ fn typecheck_tuple(
1627
+ ty: &InterfaceType,
1628
+ types: &InstanceType<'_>,
1629
+ expected: &[fn(&InterfaceType, &InstanceType<'_>) -> Result<()>],
1630
+ ) -> Result<()> {
1631
+ match ty {
1632
+ InterfaceType::Tuple(t) => {
1633
+ let tuple = &types.types[*t];
1634
+ if tuple.types.len() != expected.len() {
1635
+ bail!(
1636
+ "expected {}-tuple, found {}-tuple",
1637
+ expected.len(),
1638
+ tuple.types.len()
1639
+ );
1640
+ }
1641
+ for (ty, check) in tuple.types.iter().zip(expected) {
1642
+ check(ty, types)?;
1643
+ }
1644
+ Ok(())
1645
+ }
1646
+ other => bail!("expected `tuple` found `{}`", desc(other)),
1647
+ }
1648
+ }
1649
+
1650
+ /// Verify that the given wasm type is a record with the expected fields in the right order and with the right
1651
+ /// names.
1652
+ pub fn typecheck_record(
1653
+ ty: &InterfaceType,
1654
+ types: &InstanceType<'_>,
1655
+ expected: &[(&str, fn(&InterfaceType, &InstanceType<'_>) -> Result<()>)],
1656
+ ) -> Result<()> {
1657
+ match ty {
1658
+ InterfaceType::Record(index) => {
1659
+ let fields = &types.types[*index].fields;
1660
+
1661
+ if fields.len() != expected.len() {
1662
+ bail!(
1663
+ "expected record of {} fields, found {} fields",
1664
+ expected.len(),
1665
+ fields.len()
1666
+ );
1667
+ }
1668
+
1669
+ for (field, &(name, check)) in fields.iter().zip(expected) {
1670
+ check(&field.ty, types)
1671
+ .with_context(|| format!("type mismatch for field {}", name))?;
1672
+
1673
+ if field.name != name {
1674
+ bail!("expected record field named {}, found {}", name, field.name);
1675
+ }
1676
+ }
1677
+
1678
+ Ok(())
1679
+ }
1680
+ other => bail!("expected `record` found `{}`", desc(other)),
1681
+ }
1682
+ }
1683
+
1684
+ /// Verify that the given wasm type is a variant with the expected cases in the right order and with the right
1685
+ /// names.
1686
+ pub fn typecheck_variant(
1687
+ ty: &InterfaceType,
1688
+ types: &InstanceType<'_>,
1689
+ expected: &[(
1690
+ &str,
1691
+ Option<fn(&InterfaceType, &InstanceType<'_>) -> Result<()>>,
1692
+ )],
1693
+ ) -> Result<()> {
1694
+ match ty {
1695
+ InterfaceType::Variant(index) => {
1696
+ let cases = &types.types[*index].cases;
1697
+
1698
+ if cases.len() != expected.len() {
1699
+ bail!(
1700
+ "expected variant of {} cases, found {} cases",
1701
+ expected.len(),
1702
+ cases.len()
1703
+ );
1704
+ }
1705
+
1706
+ for (case, &(name, check)) in cases.iter().zip(expected) {
1707
+ if case.name != name {
1708
+ bail!("expected variant case named {name}, found {}", case.name);
1709
+ }
1710
+
1711
+ match (check, &case.ty) {
1712
+ (Some(check), Some(ty)) => check(ty, types)
1713
+ .with_context(|| format!("type mismatch for case {name}"))?,
1714
+ (None, None) => {}
1715
+ (Some(_), None) => {
1716
+ bail!("case `{name}` has no type but one was expected")
1717
+ }
1718
+ (None, Some(_)) => {
1719
+ bail!("case `{name}` has a type but none was expected")
1720
+ }
1721
+ }
1722
+ }
1723
+
1724
+ Ok(())
1725
+ }
1726
+ other => bail!("expected `variant` found `{}`", desc(other)),
1727
+ }
1728
+ }
1729
+
1730
+ /// Verify that the given wasm type is a enum with the expected cases in the right order and with the right
1731
+ /// names.
1732
+ pub fn typecheck_enum(
1733
+ ty: &InterfaceType,
1734
+ types: &InstanceType<'_>,
1735
+ expected: &[&str],
1736
+ ) -> Result<()> {
1737
+ match ty {
1738
+ InterfaceType::Enum(index) => {
1739
+ let names = &types.types[*index].names;
1740
+
1741
+ if names.len() != expected.len() {
1742
+ bail!(
1743
+ "expected enum of {} names, found {} names",
1744
+ expected.len(),
1745
+ names.len()
1746
+ );
1747
+ }
1748
+
1749
+ for (name, expected) in names.iter().zip(expected) {
1750
+ if name != expected {
1751
+ bail!("expected enum case named {}, found {}", expected, name);
1752
+ }
1753
+ }
1754
+
1755
+ Ok(())
1756
+ }
1757
+ other => bail!("expected `enum` found `{}`", desc(other)),
1758
+ }
1759
+ }
1760
+
1761
+ /// Verify that the given wasm type is a flags type with the expected flags in the right order and with the right
1762
+ /// names.
1763
+ pub fn typecheck_flags(
1764
+ ty: &InterfaceType,
1765
+ types: &InstanceType<'_>,
1766
+ expected: &[&str],
1767
+ ) -> Result<()> {
1768
+ match ty {
1769
+ InterfaceType::Flags(index) => {
1770
+ let names = &types.types[*index].names;
1771
+
1772
+ if names.len() != expected.len() {
1773
+ bail!(
1774
+ "expected flags type with {} names, found {} names",
1775
+ expected.len(),
1776
+ names.len()
1777
+ );
1778
+ }
1779
+
1780
+ for (name, expected) in names.iter().zip(expected) {
1781
+ if name != expected {
1782
+ bail!("expected flag named {}, found {}", expected, name);
1783
+ }
1784
+ }
1785
+
1786
+ Ok(())
1787
+ }
1788
+ other => bail!("expected `flags` found `{}`", desc(other)),
1789
+ }
1790
+ }
1791
+
1792
+ /// Format the specified bitflags using the specified names for debugging
1793
+ pub fn format_flags(bits: &[u32], names: &[&str], f: &mut fmt::Formatter) -> fmt::Result {
1794
+ f.write_str("(")?;
1795
+ let mut wrote = false;
1796
+ for (index, name) in names.iter().enumerate() {
1797
+ if ((bits[index / 32] >> (index % 32)) & 1) != 0 {
1798
+ if wrote {
1799
+ f.write_str("|")?;
1800
+ } else {
1801
+ wrote = true;
1802
+ }
1803
+
1804
+ f.write_str(name)?;
1805
+ }
1806
+ }
1807
+ f.write_str(")")
1808
+ }
1809
+
1810
+ unsafe impl<T> ComponentType for Option<T>
1811
+ where
1812
+ T: ComponentType,
1813
+ {
1814
+ type Lower = TupleLower2<<u32 as ComponentType>::Lower, T::Lower>;
1815
+
1816
+ const ABI: CanonicalAbiInfo = CanonicalAbiInfo::variant_static(&[None, Some(T::ABI)]);
1817
+
1818
+ fn typecheck(ty: &InterfaceType, types: &InstanceType<'_>) -> Result<()> {
1819
+ match ty {
1820
+ InterfaceType::Option(t) => T::typecheck(&types.types[*t].ty, types),
1821
+ other => bail!("expected `option` found `{}`", desc(other)),
1822
+ }
1823
+ }
1824
+ }
1825
+
1826
+ unsafe impl<T> ComponentVariant for Option<T>
1827
+ where
1828
+ T: ComponentType,
1829
+ {
1830
+ const CASES: &'static [Option<CanonicalAbiInfo>] = &[None, Some(T::ABI)];
1831
+ }
1832
+
1833
+ unsafe impl<T> Lower for Option<T>
1834
+ where
1835
+ T: Lower,
1836
+ {
1837
+ fn lower<U>(
1838
+ &self,
1839
+ cx: &mut LowerContext<'_, U>,
1840
+ ty: InterfaceType,
1841
+ dst: &mut MaybeUninit<Self::Lower>,
1842
+ ) -> Result<()> {
1843
+ let payload = match ty {
1844
+ InterfaceType::Option(ty) => cx.types[ty].ty,
1845
+ _ => bad_type_info(),
1846
+ };
1847
+ match self {
1848
+ None => {
1849
+ map_maybe_uninit!(dst.A1).write(ValRaw::i32(0));
1850
+ // Note that this is unsafe as we're writing an arbitrary
1851
+ // bit-pattern to an arbitrary type, but part of the unsafe
1852
+ // contract of the `ComponentType` trait is that we can assign
1853
+ // any bit-pattern. By writing all zeros here we're ensuring
1854
+ // that the core wasm arguments this translates to will all be
1855
+ // zeros (as the canonical ABI requires).
1856
+ unsafe {
1857
+ map_maybe_uninit!(dst.A2).as_mut_ptr().write_bytes(0u8, 1);
1858
+ }
1859
+ }
1860
+ Some(val) => {
1861
+ map_maybe_uninit!(dst.A1).write(ValRaw::i32(1));
1862
+ val.lower(cx, payload, map_maybe_uninit!(dst.A2))?;
1863
+ }
1864
+ }
1865
+ Ok(())
1866
+ }
1867
+
1868
+ fn store<U>(
1869
+ &self,
1870
+ cx: &mut LowerContext<'_, U>,
1871
+ ty: InterfaceType,
1872
+ offset: usize,
1873
+ ) -> Result<()> {
1874
+ debug_assert!(offset % (Self::ALIGN32 as usize) == 0);
1875
+ let payload = match ty {
1876
+ InterfaceType::Option(ty) => cx.types[ty].ty,
1877
+ _ => bad_type_info(),
1878
+ };
1879
+ match self {
1880
+ None => {
1881
+ cx.get::<1>(offset)[0] = 0;
1882
+ }
1883
+ Some(val) => {
1884
+ cx.get::<1>(offset)[0] = 1;
1885
+ val.store(cx, payload, offset + (Self::INFO.payload_offset32 as usize))?;
1886
+ }
1887
+ }
1888
+ Ok(())
1889
+ }
1890
+ }
1891
+
1892
+ unsafe impl<T> Lift for Option<T>
1893
+ where
1894
+ T: Lift,
1895
+ {
1896
+ fn lift(cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self> {
1897
+ let payload = match ty {
1898
+ InterfaceType::Option(ty) => cx.types[ty].ty,
1899
+ _ => bad_type_info(),
1900
+ };
1901
+ Ok(match src.A1.get_i32() {
1902
+ 0 => None,
1903
+ 1 => Some(T::lift(cx, payload, &src.A2)?),
1904
+ _ => bail!("invalid option discriminant"),
1905
+ })
1906
+ }
1907
+
1908
+ fn load(cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
1909
+ debug_assert!((bytes.as_ptr() as usize) % (Self::ALIGN32 as usize) == 0);
1910
+ let payload_ty = match ty {
1911
+ InterfaceType::Option(ty) => cx.types[ty].ty,
1912
+ _ => bad_type_info(),
1913
+ };
1914
+ let discrim = bytes[0];
1915
+ let payload = &bytes[Self::INFO.payload_offset32 as usize..];
1916
+ match discrim {
1917
+ 0 => Ok(None),
1918
+ 1 => Ok(Some(T::load(cx, payload_ty, payload)?)),
1919
+ _ => bail!("invalid option discriminant"),
1920
+ }
1921
+ }
1922
+ }
1923
+
1924
+ #[derive(Clone, Copy)]
1925
+ #[repr(C)]
1926
+ pub struct ResultLower<T: Copy, E: Copy> {
1927
+ tag: ValRaw,
1928
+ payload: ResultLowerPayload<T, E>,
1929
+ }
1930
+
1931
+ #[derive(Clone, Copy)]
1932
+ #[repr(C)]
1933
+ union ResultLowerPayload<T: Copy, E: Copy> {
1934
+ ok: T,
1935
+ err: E,
1936
+ }
1937
+
1938
+ unsafe impl<T, E> ComponentType for Result<T, E>
1939
+ where
1940
+ T: ComponentType,
1941
+ E: ComponentType,
1942
+ {
1943
+ type Lower = ResultLower<T::Lower, E::Lower>;
1944
+
1945
+ const ABI: CanonicalAbiInfo = CanonicalAbiInfo::variant_static(&[Some(T::ABI), Some(E::ABI)]);
1946
+
1947
+ fn typecheck(ty: &InterfaceType, types: &InstanceType<'_>) -> Result<()> {
1948
+ match ty {
1949
+ InterfaceType::Result(r) => {
1950
+ let result = &types.types[*r];
1951
+ match &result.ok {
1952
+ Some(ty) => T::typecheck(ty, types)?,
1953
+ None if T::IS_RUST_UNIT_TYPE => {}
1954
+ None => bail!("expected no `ok` type"),
1955
+ }
1956
+ match &result.err {
1957
+ Some(ty) => E::typecheck(ty, types)?,
1958
+ None if E::IS_RUST_UNIT_TYPE => {}
1959
+ None => bail!("expected no `err` type"),
1960
+ }
1961
+ Ok(())
1962
+ }
1963
+ other => bail!("expected `result` found `{}`", desc(other)),
1964
+ }
1965
+ }
1966
+ }
1967
+
1968
+ /// Lowers the payload of a variant into the storage for the entire payload,
1969
+ /// handling writing zeros at the end of the representation if this payload is
1970
+ /// smaller than the entire flat representation.
1971
+ ///
1972
+ /// * `payload` - the flat storage space for the entire payload of the variant
1973
+ /// * `typed_payload` - projection from the payload storage space to the
1974
+ /// individaul storage space for this variant.
1975
+ /// * `lower` - lowering operation used to initialize the `typed_payload` return
1976
+ /// value.
1977
+ ///
1978
+ /// For more information on this se the comments in the `Lower for Result`
1979
+ /// implementation below.
1980
+ pub unsafe fn lower_payload<P, T>(
1981
+ payload: &mut MaybeUninit<P>,
1982
+ typed_payload: impl FnOnce(&mut MaybeUninit<P>) -> &mut MaybeUninit<T>,
1983
+ lower: impl FnOnce(&mut MaybeUninit<T>) -> Result<()>,
1984
+ ) -> Result<()> {
1985
+ let typed = typed_payload(payload);
1986
+ lower(typed)?;
1987
+
1988
+ let typed_len = storage_as_slice(typed).len();
1989
+ let payload = storage_as_slice_mut(payload);
1990
+ for slot in payload[typed_len..].iter_mut() {
1991
+ *slot = ValRaw::u64(0);
1992
+ }
1993
+ Ok(())
1994
+ }
1995
+
1996
+ unsafe impl<T, E> ComponentVariant for Result<T, E>
1997
+ where
1998
+ T: ComponentType,
1999
+ E: ComponentType,
2000
+ {
2001
+ const CASES: &'static [Option<CanonicalAbiInfo>] = &[Some(T::ABI), Some(E::ABI)];
2002
+ }
2003
+
2004
+ unsafe impl<T, E> Lower for Result<T, E>
2005
+ where
2006
+ T: Lower,
2007
+ E: Lower,
2008
+ {
2009
+ fn lower<U>(
2010
+ &self,
2011
+ cx: &mut LowerContext<'_, U>,
2012
+ ty: InterfaceType,
2013
+ dst: &mut MaybeUninit<Self::Lower>,
2014
+ ) -> Result<()> {
2015
+ let (ok, err) = match ty {
2016
+ InterfaceType::Result(ty) => {
2017
+ let ty = &cx.types[ty];
2018
+ (ty.ok, ty.err)
2019
+ }
2020
+ _ => bad_type_info(),
2021
+ };
2022
+
2023
+ // This implementation of `Lower::lower`, if you're reading these from
2024
+ // the top of this file, is the first location that the "join" logic of
2025
+ // the component model's canonical ABI encountered. The rough problem is
2026
+ // that let's say we have a component model type of the form:
2027
+ //
2028
+ // (result u64 (error (tuple f32 u16)))
2029
+ //
2030
+ // The flat representation of this is actually pretty tricky. Currently
2031
+ // it is:
2032
+ //
2033
+ // i32 i64 i32
2034
+ //
2035
+ // The first `i32` is the discriminant for the `result`, and the payload
2036
+ // is represented by `i64 i32`. The "ok" variant will only use the `i64`
2037
+ // and the "err" variant will use both `i64` and `i32`.
2038
+ //
2039
+ // In the "ok" variant the first issue is encountered. The size of one
2040
+ // variant may not match the size of the other variants. All variants
2041
+ // start at the "front" but when lowering a type we need to be sure to
2042
+ // initialize the later variants (lest we leak random host memory into
2043
+ // the guest module). Due to how the `Lower` type is represented as a
2044
+ // `union` of all the variants what ends up happening here is that
2045
+ // internally within the `lower_payload` after the typed payload is
2046
+ // lowered the remaining bits of the payload that weren't initialized
2047
+ // are all set to zero. This will guarantee that we'll write to all the
2048
+ // slots for each variant.
2049
+ //
2050
+ // The "err" variant encounters the second issue, however, which is that
2051
+ // the flat representation for each type may differ between payloads. In
2052
+ // the "ok" arm an `i64` is written, but the `lower` implementation for
2053
+ // the "err" arm will write an `f32` and then an `i32`. For this
2054
+ // implementation of `lower` to be valid the `f32` needs to get inflated
2055
+ // to an `i64` with zero-padding in the upper bits. What may be
2056
+ // surprising, however, is that none of this is handled in this file.
2057
+ // This implementation looks like it's blindly deferring to `E::lower`
2058
+ // and hoping it does the right thing.
2059
+ //
2060
+ // In reality, however, the correctness of variant lowering relies on
2061
+ // two subtle details of the `ValRaw` implementation in Wasmtime:
2062
+ //
2063
+ // 1. First the `ValRaw` value always contains little-endian values.
2064
+ // This means that if a `u32` is written, a `u64` is read, and then
2065
+ // the `u64` has its upper bits truncated the original value will
2066
+ // always be retained. This is primarily here for big-endian
2067
+ // platforms where if it weren't little endian then the opposite
2068
+ // would occur and the wrong value would be read.
2069
+ //
2070
+ // 2. Second, and perhaps even more subtly, the `ValRaw` constructors
2071
+ // for 32-bit types actually always initialize 64-bits of the
2072
+ // `ValRaw`. In the component model flat ABI only 32 and 64-bit types
2073
+ // are used so 64-bits is big enough to contain everything. This
2074
+ // means that when a `ValRaw` is written into the destination it will
2075
+ // always, whether it's needed or not, be "ready" to get extended up
2076
+ // to 64-bits.
2077
+ //
2078
+ // Put together these two subtle guarantees means that all `Lower`
2079
+ // implementations can be written "naturally" as one might naively
2080
+ // expect. Variants will, on each arm, zero out remaining fields and all
2081
+ // writes to the flat representation will automatically be 64-bit writes
2082
+ // meaning that if the value is read as a 64-bit value, which isn't
2083
+ // known at the time of the write, it'll still be correct.
2084
+ match self {
2085
+ Ok(e) => {
2086
+ map_maybe_uninit!(dst.tag).write(ValRaw::i32(0));
2087
+ unsafe {
2088
+ lower_payload(
2089
+ map_maybe_uninit!(dst.payload),
2090
+ |payload| map_maybe_uninit!(payload.ok),
2091
+ |dst| match ok {
2092
+ Some(ok) => e.lower(cx, ok, dst),
2093
+ None => Ok(()),
2094
+ },
2095
+ )
2096
+ }
2097
+ }
2098
+ Err(e) => {
2099
+ map_maybe_uninit!(dst.tag).write(ValRaw::i32(1));
2100
+ unsafe {
2101
+ lower_payload(
2102
+ map_maybe_uninit!(dst.payload),
2103
+ |payload| map_maybe_uninit!(payload.err),
2104
+ |dst| match err {
2105
+ Some(err) => e.lower(cx, err, dst),
2106
+ None => Ok(()),
2107
+ },
2108
+ )
2109
+ }
2110
+ }
2111
+ }
2112
+ }
2113
+
2114
+ fn store<U>(
2115
+ &self,
2116
+ cx: &mut LowerContext<'_, U>,
2117
+ ty: InterfaceType,
2118
+ offset: usize,
2119
+ ) -> Result<()> {
2120
+ let (ok, err) = match ty {
2121
+ InterfaceType::Result(ty) => {
2122
+ let ty = &cx.types[ty];
2123
+ (ty.ok, ty.err)
2124
+ }
2125
+ _ => bad_type_info(),
2126
+ };
2127
+ debug_assert!(offset % (Self::ALIGN32 as usize) == 0);
2128
+ let payload_offset = Self::INFO.payload_offset32 as usize;
2129
+ match self {
2130
+ Ok(e) => {
2131
+ cx.get::<1>(offset)[0] = 0;
2132
+ if let Some(ok) = ok {
2133
+ e.store(cx, ok, offset + payload_offset)?;
2134
+ }
2135
+ }
2136
+ Err(e) => {
2137
+ cx.get::<1>(offset)[0] = 1;
2138
+ if let Some(err) = err {
2139
+ e.store(cx, err, offset + payload_offset)?;
2140
+ }
2141
+ }
2142
+ }
2143
+ Ok(())
2144
+ }
2145
+ }
2146
+
2147
+ unsafe impl<T, E> Lift for Result<T, E>
2148
+ where
2149
+ T: Lift,
2150
+ E: Lift,
2151
+ {
2152
+ #[inline]
2153
+ fn lift(cx: &mut LiftContext<'_>, ty: InterfaceType, src: &Self::Lower) -> Result<Self> {
2154
+ let (ok, err) = match ty {
2155
+ InterfaceType::Result(ty) => {
2156
+ let ty = &cx.types[ty];
2157
+ (ty.ok, ty.err)
2158
+ }
2159
+ _ => bad_type_info(),
2160
+ };
2161
+ // Note that this implementation specifically isn't trying to actually
2162
+ // reinterpret or alter the bits of `lower` depending on which variant
2163
+ // we're lifting. This ends up all working out because the value is
2164
+ // stored in little-endian format.
2165
+ //
2166
+ // When stored in little-endian format the `{T,E}::Lower`, when each
2167
+ // individual `ValRaw` is read, means that if an i64 value, extended
2168
+ // from an i32 value, was stored then when the i32 value is read it'll
2169
+ // automatically ignore the upper bits.
2170
+ //
2171
+ // This "trick" allows us to seamlessly pass through the `Self::Lower`
2172
+ // representation into the lifting/lowering without trying to handle
2173
+ // "join"ed types as per the canonical ABI. It just so happens that i64
2174
+ // bits will naturally be reinterpreted as f64. Additionally if the
2175
+ // joined type is i64 but only the lower bits are read that's ok and we
2176
+ // don't need to validate the upper bits.
2177
+ //
2178
+ // This is largely enabled by WebAssembly/component-model#35 where no
2179
+ // validation needs to be performed for ignored bits and bytes here.
2180
+ Ok(match src.tag.get_i32() {
2181
+ 0 => Ok(unsafe { lift_option(cx, ok, &src.payload.ok)? }),
2182
+ 1 => Err(unsafe { lift_option(cx, err, &src.payload.err)? }),
2183
+ _ => bail!("invalid expected discriminant"),
2184
+ })
2185
+ }
2186
+
2187
+ #[inline]
2188
+ fn load(cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
2189
+ debug_assert!((bytes.as_ptr() as usize) % (Self::ALIGN32 as usize) == 0);
2190
+ let discrim = bytes[0];
2191
+ let payload = &bytes[Self::INFO.payload_offset32 as usize..];
2192
+ let (ok, err) = match ty {
2193
+ InterfaceType::Result(ty) => {
2194
+ let ty = &cx.types[ty];
2195
+ (ty.ok, ty.err)
2196
+ }
2197
+ _ => bad_type_info(),
2198
+ };
2199
+ match discrim {
2200
+ 0 => Ok(Ok(load_option(cx, ok, &payload[..T::SIZE32])?)),
2201
+ 1 => Ok(Err(load_option(cx, err, &payload[..E::SIZE32])?)),
2202
+ _ => bail!("invalid expected discriminant"),
2203
+ }
2204
+ }
2205
+ }
2206
+
2207
+ fn lift_option<T>(cx: &mut LiftContext<'_>, ty: Option<InterfaceType>, src: &T::Lower) -> Result<T>
2208
+ where
2209
+ T: Lift,
2210
+ {
2211
+ match ty {
2212
+ Some(ty) => T::lift(cx, ty, src),
2213
+ None => Ok(empty_lift()),
2214
+ }
2215
+ }
2216
+
2217
+ fn load_option<T>(cx: &mut LiftContext<'_>, ty: Option<InterfaceType>, bytes: &[u8]) -> Result<T>
2218
+ where
2219
+ T: Lift,
2220
+ {
2221
+ match ty {
2222
+ Some(ty) => T::load(cx, ty, bytes),
2223
+ None => Ok(empty_lift()),
2224
+ }
2225
+ }
2226
+
2227
+ fn empty_lift<T>() -> T
2228
+ where
2229
+ T: Lift,
2230
+ {
2231
+ assert!(T::IS_RUST_UNIT_TYPE);
2232
+ assert_eq!(mem::size_of::<T>(), 0);
2233
+ unsafe { MaybeUninit::uninit().assume_init() }
2234
+ }
2235
+
2236
+ macro_rules! impl_component_ty_for_tuples {
2237
+ ($n:tt $($t:ident)*) => {paste::paste!{
2238
+ #[allow(non_snake_case)]
2239
+ #[doc(hidden)]
2240
+ #[derive(Clone, Copy)]
2241
+ #[repr(C)]
2242
+ pub struct [<TupleLower$n>]<$($t),*> {
2243
+ $($t: $t,)*
2244
+ _align_tuple_lower0_correctly: [ValRaw; 0],
2245
+ }
2246
+
2247
+ #[allow(non_snake_case)]
2248
+ unsafe impl<$($t,)*> ComponentType for ($($t,)*)
2249
+ where $($t: ComponentType),*
2250
+ {
2251
+ type Lower = [<TupleLower$n>]<$($t::Lower),*>;
2252
+
2253
+ const ABI: CanonicalAbiInfo = CanonicalAbiInfo::record_static(&[
2254
+ $($t::ABI),*
2255
+ ]);
2256
+
2257
+ const IS_RUST_UNIT_TYPE: bool = {
2258
+ let mut _is_unit = true;
2259
+ $(
2260
+ let _anything_to_bind_the_macro_variable = $t::IS_RUST_UNIT_TYPE;
2261
+ _is_unit = false;
2262
+ )*
2263
+ _is_unit
2264
+ };
2265
+
2266
+ fn typecheck(
2267
+ ty: &InterfaceType,
2268
+ types: &InstanceType<'_>,
2269
+ ) -> Result<()> {
2270
+ typecheck_tuple(ty, types, &[$($t::typecheck),*])
2271
+ }
2272
+ }
2273
+
2274
+ #[allow(non_snake_case)]
2275
+ unsafe impl<$($t,)*> Lower for ($($t,)*)
2276
+ where $($t: Lower),*
2277
+ {
2278
+ fn lower<U>(
2279
+ &self,
2280
+ cx: &mut LowerContext<'_, U>,
2281
+ ty: InterfaceType,
2282
+ _dst: &mut MaybeUninit<Self::Lower>,
2283
+ ) -> Result<()> {
2284
+ let types = match ty {
2285
+ InterfaceType::Tuple(t) => &cx.types[t].types,
2286
+ _ => bad_type_info(),
2287
+ };
2288
+ let ($($t,)*) = self;
2289
+ let mut _types = types.iter();
2290
+ $(
2291
+ let ty = *_types.next().unwrap_or_else(bad_type_info);
2292
+ $t.lower(cx, ty, map_maybe_uninit!(_dst.$t))?;
2293
+ )*
2294
+ Ok(())
2295
+ }
2296
+
2297
+ fn store<U>(
2298
+ &self,
2299
+ cx: &mut LowerContext<'_, U>,
2300
+ ty: InterfaceType,
2301
+ mut _offset: usize,
2302
+ ) -> Result<()> {
2303
+ debug_assert!(_offset % (Self::ALIGN32 as usize) == 0);
2304
+ let types = match ty {
2305
+ InterfaceType::Tuple(t) => &cx.types[t].types,
2306
+ _ => bad_type_info(),
2307
+ };
2308
+ let ($($t,)*) = self;
2309
+ let mut _types = types.iter();
2310
+ $(
2311
+ let ty = *_types.next().unwrap_or_else(bad_type_info);
2312
+ $t.store(cx, ty, $t::ABI.next_field32_size(&mut _offset))?;
2313
+ )*
2314
+ Ok(())
2315
+ }
2316
+ }
2317
+
2318
+ #[allow(non_snake_case)]
2319
+ unsafe impl<$($t,)*> Lift for ($($t,)*)
2320
+ where $($t: Lift),*
2321
+ {
2322
+ #[inline]
2323
+ fn lift(cx: &mut LiftContext<'_>, ty: InterfaceType, _src: &Self::Lower) -> Result<Self> {
2324
+ let types = match ty {
2325
+ InterfaceType::Tuple(t) => &cx.types[t].types,
2326
+ _ => bad_type_info(),
2327
+ };
2328
+ let mut _types = types.iter();
2329
+ Ok(($(
2330
+ $t::lift(
2331
+ cx,
2332
+ *_types.next().unwrap_or_else(bad_type_info),
2333
+ &_src.$t,
2334
+ )?,
2335
+ )*))
2336
+ }
2337
+
2338
+ #[inline]
2339
+ fn load(cx: &mut LiftContext<'_>, ty: InterfaceType, bytes: &[u8]) -> Result<Self> {
2340
+ debug_assert!((bytes.as_ptr() as usize) % (Self::ALIGN32 as usize) == 0);
2341
+ let types = match ty {
2342
+ InterfaceType::Tuple(t) => &cx.types[t].types,
2343
+ _ => bad_type_info(),
2344
+ };
2345
+ let mut _types = types.iter();
2346
+ let mut _offset = 0;
2347
+ $(
2348
+ let ty = *_types.next().unwrap_or_else(bad_type_info);
2349
+ let $t = $t::load(cx, ty, &bytes[$t::ABI.next_field32_size(&mut _offset)..][..$t::SIZE32])?;
2350
+ )*
2351
+ Ok(($($t,)*))
2352
+ }
2353
+ }
2354
+
2355
+ #[allow(non_snake_case)]
2356
+ unsafe impl<$($t,)*> ComponentNamedList for ($($t,)*)
2357
+ where $($t: ComponentType),*
2358
+ {}
2359
+ }};
2360
+ }
2361
+
2362
+ for_each_function_signature!(impl_component_ty_for_tuples);
2363
+
2364
+ pub fn desc(ty: &InterfaceType) -> &'static str {
2365
+ match ty {
2366
+ InterfaceType::U8 => "u8",
2367
+ InterfaceType::S8 => "s8",
2368
+ InterfaceType::U16 => "u16",
2369
+ InterfaceType::S16 => "s16",
2370
+ InterfaceType::U32 => "u32",
2371
+ InterfaceType::S32 => "s32",
2372
+ InterfaceType::U64 => "u64",
2373
+ InterfaceType::S64 => "s64",
2374
+ InterfaceType::Float32 => "f32",
2375
+ InterfaceType::Float64 => "f64",
2376
+ InterfaceType::Bool => "bool",
2377
+ InterfaceType::Char => "char",
2378
+ InterfaceType::String => "string",
2379
+ InterfaceType::List(_) => "list",
2380
+ InterfaceType::Tuple(_) => "tuple",
2381
+ InterfaceType::Option(_) => "option",
2382
+ InterfaceType::Result(_) => "result",
2383
+
2384
+ InterfaceType::Record(_) => "record",
2385
+ InterfaceType::Variant(_) => "variant",
2386
+ InterfaceType::Flags(_) => "flags",
2387
+ InterfaceType::Enum(_) => "enum",
2388
+ InterfaceType::Own(_) => "owned resource",
2389
+ InterfaceType::Borrow(_) => "borrowed resource",
2390
+ }
2391
+ }
2392
+
2393
+ #[cold]
2394
+ #[doc(hidden)]
2395
+ pub fn bad_type_info<T>() -> T {
2396
+ // NB: should consider something like `unreachable_unchecked` here if this
2397
+ // becomes a performance bottleneck at some point, but that also comes with
2398
+ // a tradeoff of propagating a lot of unsafety, so it may not be worth it.
2399
+ panic!("bad type information detected");
2400
+ }