wasmtime 16.0.0 → 17.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1115) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +103 -79
  3. data/ext/Cargo.toml +7 -6
  4. data/ext/cargo-vendor/cranelift-bforest-0.104.1/.cargo-checksum.json +1 -0
  5. data/ext/cargo-vendor/cranelift-bforest-0.104.1/Cargo.toml +40 -0
  6. data/ext/cargo-vendor/cranelift-codegen-0.104.1/.cargo-checksum.json +1 -0
  7. data/ext/cargo-vendor/cranelift-codegen-0.104.1/Cargo.toml +175 -0
  8. data/ext/cargo-vendor/cranelift-codegen-0.104.1/build.rs +392 -0
  9. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/egraph/cost.rs +213 -0
  10. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/egraph/elaborate.rs +823 -0
  11. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/egraph.rs +704 -0
  12. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/isa/aarch64/inst.isle +4197 -0
  13. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/isa/aarch64/lower/isle.rs +882 -0
  14. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/isa/x64/abi.rs +1305 -0
  15. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/isle_prelude.rs +957 -0
  16. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/machinst/isle.rs +908 -0
  17. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/machinst/mod.rs +558 -0
  18. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/machinst/pcc.rs +159 -0
  19. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/opts/README.md +87 -0
  20. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/opts/arithmetic.isle +169 -0
  21. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/opts/bitops.isle +188 -0
  22. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/opts/cprop.isle +246 -0
  23. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/opts/extends.isle +124 -0
  24. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/opts/icmp.isle +197 -0
  25. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/opts/selects.isle +77 -0
  26. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/opts/shifts.isle +307 -0
  27. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/opts/spaceship.isle +194 -0
  28. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/opts.rs +265 -0
  29. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/prelude.isle +641 -0
  30. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/prelude_lower.isle +1073 -0
  31. data/ext/cargo-vendor/cranelift-codegen-0.104.1/src/prelude_opt.isle +134 -0
  32. data/ext/cargo-vendor/cranelift-codegen-meta-0.104.1/.cargo-checksum.json +1 -0
  33. data/ext/cargo-vendor/cranelift-codegen-meta-0.104.1/Cargo.toml +35 -0
  34. data/ext/cargo-vendor/cranelift-codegen-shared-0.104.1/.cargo-checksum.json +1 -0
  35. data/ext/cargo-vendor/cranelift-codegen-shared-0.104.1/Cargo.toml +22 -0
  36. data/ext/cargo-vendor/cranelift-control-0.104.1/.cargo-checksum.json +1 -0
  37. data/ext/cargo-vendor/cranelift-control-0.104.1/Cargo.toml +30 -0
  38. data/ext/cargo-vendor/cranelift-entity-0.104.1/.cargo-checksum.json +1 -0
  39. data/ext/cargo-vendor/cranelift-entity-0.104.1/Cargo.toml +50 -0
  40. data/ext/cargo-vendor/cranelift-entity-0.104.1/src/primary.rs +541 -0
  41. data/ext/cargo-vendor/cranelift-frontend-0.104.1/.cargo-checksum.json +1 -0
  42. data/ext/cargo-vendor/cranelift-frontend-0.104.1/Cargo.toml +68 -0
  43. data/ext/cargo-vendor/cranelift-isle-0.104.1/.cargo-checksum.json +1 -0
  44. data/ext/cargo-vendor/cranelift-isle-0.104.1/Cargo.toml +46 -0
  45. data/ext/cargo-vendor/cranelift-native-0.104.1/.cargo-checksum.json +1 -0
  46. data/ext/cargo-vendor/cranelift-native-0.104.1/Cargo.toml +43 -0
  47. data/ext/cargo-vendor/cranelift-wasm-0.104.1/.cargo-checksum.json +1 -0
  48. data/ext/cargo-vendor/cranelift-wasm-0.104.1/Cargo.toml +106 -0
  49. data/ext/cargo-vendor/cranelift-wasm-0.104.1/src/code_translator.rs +3646 -0
  50. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/.cargo-checksum.json +1 -0
  51. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/Cargo.toml +49 -0
  52. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/README.md +52 -0
  53. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/src/clocks.rs +56 -0
  54. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/src/lib.rs +24 -0
  55. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/src/noop_scheduler.rs +25 -0
  56. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/tests/clocks.rs +33 -0
  57. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/tests/common/mod.rs +33 -0
  58. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/tests/random.rs +17 -0
  59. data/ext/cargo-vendor/deterministic-wasi-ctx-0.1.18/tests/scheduler.rs +24 -0
  60. data/ext/cargo-vendor/rand_pcg-0.3.1/.cargo-checksum.json +1 -0
  61. data/ext/cargo-vendor/rand_pcg-0.3.1/CHANGELOG.md +37 -0
  62. data/ext/cargo-vendor/rand_pcg-0.3.1/COPYRIGHT +12 -0
  63. data/ext/cargo-vendor/rand_pcg-0.3.1/Cargo.toml +37 -0
  64. data/ext/cargo-vendor/rand_pcg-0.3.1/LICENSE-APACHE +201 -0
  65. data/ext/cargo-vendor/rand_pcg-0.3.1/LICENSE-MIT +26 -0
  66. data/ext/cargo-vendor/rand_pcg-0.3.1/README.md +42 -0
  67. data/ext/cargo-vendor/rand_pcg-0.3.1/src/lib.rs +45 -0
  68. data/ext/cargo-vendor/rand_pcg-0.3.1/src/pcg128.rs +296 -0
  69. data/ext/cargo-vendor/rand_pcg-0.3.1/src/pcg64.rs +166 -0
  70. data/ext/cargo-vendor/rand_pcg-0.3.1/tests/lcg128xsl64.rs +77 -0
  71. data/ext/cargo-vendor/rand_pcg-0.3.1/tests/lcg64xsh32.rs +70 -0
  72. data/ext/cargo-vendor/rand_pcg-0.3.1/tests/mcg128xsl64.rs +75 -0
  73. data/ext/cargo-vendor/wasi-cap-std-sync-17.0.1/.cargo-checksum.json +1 -0
  74. data/ext/cargo-vendor/wasi-cap-std-sync-17.0.1/Cargo.toml +102 -0
  75. data/ext/cargo-vendor/wasi-common-17.0.1/.cargo-checksum.json +1 -0
  76. data/ext/cargo-vendor/wasi-common-17.0.1/Cargo.toml +131 -0
  77. data/ext/cargo-vendor/wasi-common-17.0.1/src/error.rs +26 -0
  78. data/ext/cargo-vendor/wasi-common-17.0.1/src/snapshots/preview_1/error.rs +266 -0
  79. data/ext/cargo-vendor/wasmtime-17.0.1/.cargo-checksum.json +1 -0
  80. data/ext/cargo-vendor/wasmtime-17.0.1/Cargo.toml +211 -0
  81. data/ext/cargo-vendor/wasmtime-17.0.1/src/component/component.rs +545 -0
  82. data/ext/cargo-vendor/wasmtime-17.0.1/src/component/instance.rs +815 -0
  83. data/ext/cargo-vendor/wasmtime-17.0.1/src/component/linker.rs +580 -0
  84. data/ext/cargo-vendor/wasmtime-17.0.1/src/component/matching.rs +215 -0
  85. data/ext/cargo-vendor/wasmtime-17.0.1/src/component/mod.rs +351 -0
  86. data/ext/cargo-vendor/wasmtime-17.0.1/src/component/resource_table.rs +350 -0
  87. data/ext/cargo-vendor/wasmtime-17.0.1/src/component/resources.rs +823 -0
  88. data/ext/cargo-vendor/wasmtime-17.0.1/src/config.rs +2428 -0
  89. data/ext/cargo-vendor/wasmtime-17.0.1/src/func/typed.rs +638 -0
  90. data/ext/cargo-vendor/wasmtime-17.0.1/src/lib.rs +526 -0
  91. data/ext/cargo-vendor/wasmtime-17.0.1/src/store.rs +2389 -0
  92. data/ext/cargo-vendor/wasmtime-asm-macros-17.0.1/.cargo-checksum.json +1 -0
  93. data/ext/cargo-vendor/wasmtime-asm-macros-17.0.1/Cargo.toml +22 -0
  94. data/ext/cargo-vendor/wasmtime-cache-17.0.1/.cargo-checksum.json +1 -0
  95. data/ext/cargo-vendor/wasmtime-cache-17.0.1/Cargo.toml +81 -0
  96. data/ext/cargo-vendor/wasmtime-component-macro-17.0.1/.cargo-checksum.json +1 -0
  97. data/ext/cargo-vendor/wasmtime-component-macro-17.0.1/Cargo.toml +67 -0
  98. data/ext/cargo-vendor/wasmtime-component-macro-17.0.1/src/bindgen.rs +371 -0
  99. data/ext/cargo-vendor/wasmtime-component-macro-17.0.1/tests/codegen/multiversion/root.wit +8 -0
  100. data/ext/cargo-vendor/wasmtime-component-util-17.0.1/.cargo-checksum.json +1 -0
  101. data/ext/cargo-vendor/wasmtime-component-util-17.0.1/Cargo.toml +25 -0
  102. data/ext/cargo-vendor/wasmtime-cranelift-17.0.1/.cargo-checksum.json +1 -0
  103. data/ext/cargo-vendor/wasmtime-cranelift-17.0.1/Cargo.toml +112 -0
  104. data/ext/cargo-vendor/wasmtime-cranelift-shared-17.0.1/.cargo-checksum.json +1 -0
  105. data/ext/cargo-vendor/wasmtime-cranelift-shared-17.0.1/Cargo.toml +71 -0
  106. data/ext/cargo-vendor/wasmtime-environ-17.0.1/.cargo-checksum.json +1 -0
  107. data/ext/cargo-vendor/wasmtime-environ-17.0.1/Cargo.lock +726 -0
  108. data/ext/cargo-vendor/wasmtime-environ-17.0.1/Cargo.toml +125 -0
  109. data/ext/cargo-vendor/wasmtime-environ-17.0.1/examples/factc.rs +205 -0
  110. data/ext/cargo-vendor/wasmtime-fiber-17.0.1/.cargo-checksum.json +1 -0
  111. data/ext/cargo-vendor/wasmtime-fiber-17.0.1/Cargo.toml +63 -0
  112. data/ext/cargo-vendor/wasmtime-jit-17.0.1/.cargo-checksum.json +1 -0
  113. data/ext/cargo-vendor/wasmtime-jit-17.0.1/Cargo.toml +125 -0
  114. data/ext/cargo-vendor/wasmtime-jit-debug-17.0.1/.cargo-checksum.json +1 -0
  115. data/ext/cargo-vendor/wasmtime-jit-debug-17.0.1/Cargo.toml +67 -0
  116. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-17.0.1/.cargo-checksum.json +1 -0
  117. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-17.0.1/Cargo.toml +46 -0
  118. data/ext/cargo-vendor/wasmtime-runtime-17.0.1/.cargo-checksum.json +1 -0
  119. data/ext/cargo-vendor/wasmtime-runtime-17.0.1/Cargo.toml +139 -0
  120. data/ext/cargo-vendor/wasmtime-runtime-17.0.1/src/instance/allocator/pooling/memory_pool.rs +997 -0
  121. data/ext/cargo-vendor/wasmtime-runtime-17.0.1/src/instance/allocator/pooling.rs +658 -0
  122. data/ext/cargo-vendor/wasmtime-runtime-17.0.1/src/memory.rs +973 -0
  123. data/ext/cargo-vendor/wasmtime-runtime-17.0.1/src/parking_spot.rs +622 -0
  124. data/ext/cargo-vendor/wasmtime-runtime-17.0.1/src/sys/windows/mmap.rs +216 -0
  125. data/ext/cargo-vendor/wasmtime-types-17.0.1/.cargo-checksum.json +1 -0
  126. data/ext/cargo-vendor/wasmtime-types-17.0.1/Cargo.toml +36 -0
  127. data/ext/cargo-vendor/wasmtime-versioned-export-macros-17.0.1/.cargo-checksum.json +1 -0
  128. data/ext/cargo-vendor/wasmtime-versioned-export-macros-17.0.1/Cargo.toml +32 -0
  129. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/.cargo-checksum.json +1 -0
  130. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/Cargo.toml +261 -0
  131. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/src/preview2/ctx.rs +333 -0
  132. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/src/preview2/filesystem.rs +325 -0
  133. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/src/preview2/host/clocks.rs +103 -0
  134. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/src/preview2/host/filesystem.rs +1069 -0
  135. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/src/preview2/host/instance_network.rs +15 -0
  136. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/src/preview2/host/network.rs +625 -0
  137. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/src/preview2/host/tcp.rs +605 -0
  138. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/src/preview2/host/udp.rs +530 -0
  139. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/src/preview2/mod.rs +327 -0
  140. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/src/preview2/network.rs +108 -0
  141. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/src/preview2/poll.rs +175 -0
  142. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/src/preview2/preview1.rs +2362 -0
  143. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/src/preview2/stream.rs +181 -0
  144. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/src/preview2/tcp.rs +335 -0
  145. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/src/preview2/udp.rs +125 -0
  146. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/tests/all/api.rs +217 -0
  147. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/tests/all/async_.rs +364 -0
  148. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/tests/all/main.rs +112 -0
  149. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/tests/all/preview1.rs +243 -0
  150. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/tests/all/sync.rs +303 -0
  151. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/command-extended.wit +6 -0
  152. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/cli/command.wit +7 -0
  153. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/cli/imports.wit +20 -0
  154. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/cli/stdio.wit +17 -0
  155. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/cli/terminal.wit +49 -0
  156. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/clocks/monotonic-clock.wit +45 -0
  157. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/clocks/wall-clock.wit +42 -0
  158. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/clocks/world.wit +6 -0
  159. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/filesystem/preopens.wit +8 -0
  160. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/filesystem/types.wit +634 -0
  161. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/filesystem/world.wit +6 -0
  162. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/http/proxy.wit +32 -0
  163. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/http/types.wit +570 -0
  164. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/io/error.wit +34 -0
  165. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/io/poll.wit +41 -0
  166. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/io/streams.wit +251 -0
  167. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/io/world.wit +6 -0
  168. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/random/insecure-seed.wit +25 -0
  169. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/random/insecure.wit +22 -0
  170. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/random/random.wit +26 -0
  171. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/random/world.wit +7 -0
  172. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/sockets/ip-name-lookup.wit +51 -0
  173. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/sockets/network.wit +145 -0
  174. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/sockets/tcp-create-socket.wit +27 -0
  175. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/sockets/tcp.wit +309 -0
  176. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/sockets/udp-create-socket.wit +27 -0
  177. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/sockets/udp.wit +264 -0
  178. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/deps/sockets/world.wit +11 -0
  179. data/ext/cargo-vendor/wasmtime-wasi-17.0.1/wit/test.wit +22 -0
  180. data/ext/cargo-vendor/wasmtime-winch-17.0.1/.cargo-checksum.json +1 -0
  181. data/ext/cargo-vendor/wasmtime-winch-17.0.1/Cargo.toml +77 -0
  182. data/ext/cargo-vendor/wasmtime-wit-bindgen-17.0.1/.cargo-checksum.json +1 -0
  183. data/ext/cargo-vendor/wasmtime-wit-bindgen-17.0.1/Cargo.toml +41 -0
  184. data/ext/cargo-vendor/wasmtime-wit-bindgen-17.0.1/src/lib.rs +2097 -0
  185. data/ext/cargo-vendor/wasmtime-wmemcheck-17.0.1/.cargo-checksum.json +1 -0
  186. data/ext/cargo-vendor/wasmtime-wmemcheck-17.0.1/Cargo.toml +29 -0
  187. data/ext/cargo-vendor/wiggle-17.0.1/.cargo-checksum.json +1 -0
  188. data/ext/cargo-vendor/wiggle-17.0.1/Cargo.toml +115 -0
  189. data/ext/cargo-vendor/wiggle-generate-17.0.1/.cargo-checksum.json +1 -0
  190. data/ext/cargo-vendor/wiggle-generate-17.0.1/Cargo.toml +65 -0
  191. data/ext/cargo-vendor/wiggle-macro-17.0.1/.cargo-checksum.json +1 -0
  192. data/ext/cargo-vendor/wiggle-macro-17.0.1/Cargo.toml +55 -0
  193. data/ext/cargo-vendor/winch-codegen-0.15.1/.cargo-checksum.json +1 -0
  194. data/ext/cargo-vendor/winch-codegen-0.15.1/Cargo.toml +76 -0
  195. data/ext/cargo-vendor/winch-codegen-0.15.1/src/codegen/context.rs +553 -0
  196. data/ext/cargo-vendor/winch-codegen-0.15.1/src/codegen/env.rs +309 -0
  197. data/ext/cargo-vendor/winch-codegen-0.15.1/src/isa/aarch64/masm.rs +457 -0
  198. data/ext/cargo-vendor/winch-codegen-0.15.1/src/isa/x64/asm.rs +1149 -0
  199. data/ext/cargo-vendor/winch-codegen-0.15.1/src/isa/x64/masm.rs +1044 -0
  200. data/ext/cargo-vendor/winch-codegen-0.15.1/src/masm.rs +708 -0
  201. data/ext/cargo-vendor/winch-codegen-0.15.1/src/stack.rs +452 -0
  202. data/ext/cargo-vendor/winch-codegen-0.15.1/src/visitor.rs +1617 -0
  203. data/ext/src/helpers/mod.rs +4 -0
  204. data/ext/src/helpers/nogvl.rs +29 -0
  205. data/ext/src/helpers/tmplock.rs +45 -0
  206. data/ext/src/ruby_api/engine.rs +7 -3
  207. data/ext/src/ruby_api/mod.rs +3 -0
  208. data/ext/src/ruby_api/module.rs +22 -8
  209. data/ext/src/ruby_api/store.rs +66 -12
  210. data/ext/src/ruby_api/wasi_ctx.rs +110 -0
  211. data/ext/src/ruby_api/wasi_ctx_builder.rs +10 -7
  212. data/lib/wasmtime/version.rb +1 -1
  213. metadata +931 -904
  214. data/ext/cargo-vendor/cranelift-bforest-0.103.0/.cargo-checksum.json +0 -1
  215. data/ext/cargo-vendor/cranelift-bforest-0.103.0/Cargo.toml +0 -40
  216. data/ext/cargo-vendor/cranelift-codegen-0.103.0/.cargo-checksum.json +0 -1
  217. data/ext/cargo-vendor/cranelift-codegen-0.103.0/Cargo.toml +0 -175
  218. data/ext/cargo-vendor/cranelift-codegen-0.103.0/build.rs +0 -391
  219. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/egraph/cost.rs +0 -171
  220. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/egraph/elaborate.rs +0 -750
  221. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/egraph.rs +0 -703
  222. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isa/aarch64/inst.isle +0 -4193
  223. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isa/aarch64/lower/isle.rs +0 -874
  224. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isa/x64/abi.rs +0 -1300
  225. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/isle_prelude.rs +0 -977
  226. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/machinst/isle.rs +0 -896
  227. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/machinst/mod.rs +0 -557
  228. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/machinst/pcc.rs +0 -160
  229. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/README.md +0 -5
  230. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/arithmetic.isle +0 -152
  231. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/bitops.isle +0 -198
  232. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/cprop.isle +0 -237
  233. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/extends.isle +0 -34
  234. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/icmp.isle +0 -199
  235. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/selects.isle +0 -76
  236. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts/shifts.isle +0 -310
  237. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/opts.rs +0 -172
  238. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/prelude.isle +0 -649
  239. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/prelude_lower.isle +0 -1061
  240. data/ext/cargo-vendor/cranelift-codegen-0.103.0/src/prelude_opt.isle +0 -58
  241. data/ext/cargo-vendor/cranelift-codegen-meta-0.103.0/.cargo-checksum.json +0 -1
  242. data/ext/cargo-vendor/cranelift-codegen-meta-0.103.0/Cargo.toml +0 -35
  243. data/ext/cargo-vendor/cranelift-codegen-shared-0.103.0/.cargo-checksum.json +0 -1
  244. data/ext/cargo-vendor/cranelift-codegen-shared-0.103.0/Cargo.toml +0 -22
  245. data/ext/cargo-vendor/cranelift-control-0.103.0/.cargo-checksum.json +0 -1
  246. data/ext/cargo-vendor/cranelift-control-0.103.0/Cargo.toml +0 -30
  247. data/ext/cargo-vendor/cranelift-entity-0.103.0/.cargo-checksum.json +0 -1
  248. data/ext/cargo-vendor/cranelift-entity-0.103.0/Cargo.toml +0 -50
  249. data/ext/cargo-vendor/cranelift-entity-0.103.0/src/primary.rs +0 -516
  250. data/ext/cargo-vendor/cranelift-frontend-0.103.0/.cargo-checksum.json +0 -1
  251. data/ext/cargo-vendor/cranelift-frontend-0.103.0/Cargo.toml +0 -68
  252. data/ext/cargo-vendor/cranelift-isle-0.103.0/.cargo-checksum.json +0 -1
  253. data/ext/cargo-vendor/cranelift-isle-0.103.0/Cargo.toml +0 -46
  254. data/ext/cargo-vendor/cranelift-native-0.103.0/.cargo-checksum.json +0 -1
  255. data/ext/cargo-vendor/cranelift-native-0.103.0/Cargo.toml +0 -43
  256. data/ext/cargo-vendor/cranelift-wasm-0.103.0/.cargo-checksum.json +0 -1
  257. data/ext/cargo-vendor/cranelift-wasm-0.103.0/Cargo.toml +0 -106
  258. data/ext/cargo-vendor/cranelift-wasm-0.103.0/src/code_translator.rs +0 -3646
  259. data/ext/cargo-vendor/wasi-cap-std-sync-16.0.0/.cargo-checksum.json +0 -1
  260. data/ext/cargo-vendor/wasi-cap-std-sync-16.0.0/Cargo.toml +0 -102
  261. data/ext/cargo-vendor/wasi-common-16.0.0/.cargo-checksum.json +0 -1
  262. data/ext/cargo-vendor/wasi-common-16.0.0/Cargo.toml +0 -131
  263. data/ext/cargo-vendor/wasi-common-16.0.0/src/error.rs +0 -26
  264. data/ext/cargo-vendor/wasi-common-16.0.0/src/snapshots/preview_1/error.rs +0 -265
  265. data/ext/cargo-vendor/wasmtime-16.0.0/.cargo-checksum.json +0 -1
  266. data/ext/cargo-vendor/wasmtime-16.0.0/Cargo.toml +0 -211
  267. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/component.rs +0 -505
  268. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/instance.rs +0 -797
  269. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/linker.rs +0 -523
  270. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/matching.rs +0 -215
  271. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/mod.rs +0 -349
  272. data/ext/cargo-vendor/wasmtime-16.0.0/src/component/resources.rs +0 -725
  273. data/ext/cargo-vendor/wasmtime-16.0.0/src/config.rs +0 -2422
  274. data/ext/cargo-vendor/wasmtime-16.0.0/src/func/typed.rs +0 -638
  275. data/ext/cargo-vendor/wasmtime-16.0.0/src/lib.rs +0 -520
  276. data/ext/cargo-vendor/wasmtime-16.0.0/src/store.rs +0 -2388
  277. data/ext/cargo-vendor/wasmtime-asm-macros-16.0.0/.cargo-checksum.json +0 -1
  278. data/ext/cargo-vendor/wasmtime-asm-macros-16.0.0/Cargo.toml +0 -22
  279. data/ext/cargo-vendor/wasmtime-cache-16.0.0/.cargo-checksum.json +0 -1
  280. data/ext/cargo-vendor/wasmtime-cache-16.0.0/Cargo.toml +0 -81
  281. data/ext/cargo-vendor/wasmtime-component-macro-16.0.0/.cargo-checksum.json +0 -1
  282. data/ext/cargo-vendor/wasmtime-component-macro-16.0.0/Cargo.toml +0 -67
  283. data/ext/cargo-vendor/wasmtime-component-macro-16.0.0/src/bindgen.rs +0 -371
  284. data/ext/cargo-vendor/wasmtime-component-macro-16.0.0/tests/codegen/multiversion/root.wit +0 -7
  285. data/ext/cargo-vendor/wasmtime-component-util-16.0.0/.cargo-checksum.json +0 -1
  286. data/ext/cargo-vendor/wasmtime-component-util-16.0.0/Cargo.toml +0 -25
  287. data/ext/cargo-vendor/wasmtime-cranelift-16.0.0/.cargo-checksum.json +0 -1
  288. data/ext/cargo-vendor/wasmtime-cranelift-16.0.0/Cargo.toml +0 -112
  289. data/ext/cargo-vendor/wasmtime-cranelift-shared-16.0.0/.cargo-checksum.json +0 -1
  290. data/ext/cargo-vendor/wasmtime-cranelift-shared-16.0.0/Cargo.toml +0 -71
  291. data/ext/cargo-vendor/wasmtime-environ-16.0.0/.cargo-checksum.json +0 -1
  292. data/ext/cargo-vendor/wasmtime-environ-16.0.0/Cargo.lock +0 -660
  293. data/ext/cargo-vendor/wasmtime-environ-16.0.0/Cargo.toml +0 -125
  294. data/ext/cargo-vendor/wasmtime-environ-16.0.0/examples/factc.rs +0 -205
  295. data/ext/cargo-vendor/wasmtime-fiber-16.0.0/.cargo-checksum.json +0 -1
  296. data/ext/cargo-vendor/wasmtime-fiber-16.0.0/Cargo.toml +0 -63
  297. data/ext/cargo-vendor/wasmtime-jit-16.0.0/.cargo-checksum.json +0 -1
  298. data/ext/cargo-vendor/wasmtime-jit-16.0.0/Cargo.toml +0 -125
  299. data/ext/cargo-vendor/wasmtime-jit-debug-16.0.0/.cargo-checksum.json +0 -1
  300. data/ext/cargo-vendor/wasmtime-jit-debug-16.0.0/Cargo.toml +0 -67
  301. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-16.0.0/.cargo-checksum.json +0 -1
  302. data/ext/cargo-vendor/wasmtime-jit-icache-coherence-16.0.0/Cargo.toml +0 -46
  303. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/.cargo-checksum.json +0 -1
  304. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/Cargo.toml +0 -139
  305. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/instance/allocator/pooling/memory_pool.rs +0 -1005
  306. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/instance/allocator/pooling.rs +0 -698
  307. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/memory.rs +0 -968
  308. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/parking_spot.rs +0 -520
  309. data/ext/cargo-vendor/wasmtime-runtime-16.0.0/src/sys/windows/mmap.rs +0 -211
  310. data/ext/cargo-vendor/wasmtime-types-16.0.0/.cargo-checksum.json +0 -1
  311. data/ext/cargo-vendor/wasmtime-types-16.0.0/Cargo.toml +0 -36
  312. data/ext/cargo-vendor/wasmtime-versioned-export-macros-16.0.0/.cargo-checksum.json +0 -1
  313. data/ext/cargo-vendor/wasmtime-versioned-export-macros-16.0.0/Cargo.toml +0 -32
  314. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/.cargo-checksum.json +0 -1
  315. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/Cargo.toml +0 -261
  316. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/ctx.rs +0 -325
  317. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/filesystem.rs +0 -326
  318. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/clocks.rs +0 -103
  319. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/filesystem.rs +0 -1069
  320. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/instance_network.rs +0 -15
  321. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/network.rs +0 -570
  322. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/tcp.rs +0 -632
  323. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/host/udp.rs +0 -550
  324. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/mod.rs +0 -328
  325. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/network.rs +0 -57
  326. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/poll.rs +0 -175
  327. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/preview1.rs +0 -2348
  328. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/stream.rs +0 -182
  329. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/table.rs +0 -337
  330. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/tcp.rs +0 -338
  331. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/src/preview2/udp.rs +0 -118
  332. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/api.rs +0 -218
  333. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/async_.rs +0 -360
  334. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/main.rs +0 -113
  335. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/preview1.rs +0 -239
  336. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/tests/all/sync.rs +0 -299
  337. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/command-extended.wit +0 -6
  338. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/cli/command.wit +0 -7
  339. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/cli/imports.wit +0 -20
  340. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/cli/stdio.wit +0 -17
  341. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/cli/terminal.wit +0 -47
  342. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/clocks/monotonic-clock.wit +0 -45
  343. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/clocks/wall-clock.wit +0 -42
  344. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/clocks/world.wit +0 -6
  345. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/filesystem/preopens.wit +0 -8
  346. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/filesystem/types.wit +0 -634
  347. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/filesystem/world.wit +0 -6
  348. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/http/proxy.wit +0 -32
  349. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/http/types.wit +0 -570
  350. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/io/error.wit +0 -34
  351. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/io/poll.wit +0 -41
  352. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/io/streams.wit +0 -251
  353. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/io/world.wit +0 -6
  354. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/random/insecure-seed.wit +0 -25
  355. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/random/insecure.wit +0 -22
  356. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/random/random.wit +0 -26
  357. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/random/world.wit +0 -7
  358. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/ip-name-lookup.wit +0 -51
  359. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/network.wit +0 -147
  360. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/tcp-create-socket.wit +0 -26
  361. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/tcp.wit +0 -321
  362. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/udp-create-socket.wit +0 -26
  363. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/udp.wit +0 -277
  364. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/deps/sockets/world.wit +0 -11
  365. data/ext/cargo-vendor/wasmtime-wasi-16.0.0/wit/test.wit +0 -22
  366. data/ext/cargo-vendor/wasmtime-winch-16.0.0/.cargo-checksum.json +0 -1
  367. data/ext/cargo-vendor/wasmtime-winch-16.0.0/Cargo.toml +0 -77
  368. data/ext/cargo-vendor/wasmtime-wit-bindgen-16.0.0/.cargo-checksum.json +0 -1
  369. data/ext/cargo-vendor/wasmtime-wit-bindgen-16.0.0/Cargo.toml +0 -41
  370. data/ext/cargo-vendor/wasmtime-wit-bindgen-16.0.0/src/lib.rs +0 -2095
  371. data/ext/cargo-vendor/wasmtime-wmemcheck-16.0.0/.cargo-checksum.json +0 -1
  372. data/ext/cargo-vendor/wasmtime-wmemcheck-16.0.0/Cargo.toml +0 -29
  373. data/ext/cargo-vendor/wiggle-16.0.0/.cargo-checksum.json +0 -1
  374. data/ext/cargo-vendor/wiggle-16.0.0/Cargo.toml +0 -115
  375. data/ext/cargo-vendor/wiggle-generate-16.0.0/.cargo-checksum.json +0 -1
  376. data/ext/cargo-vendor/wiggle-generate-16.0.0/Cargo.toml +0 -65
  377. data/ext/cargo-vendor/wiggle-macro-16.0.0/.cargo-checksum.json +0 -1
  378. data/ext/cargo-vendor/wiggle-macro-16.0.0/Cargo.toml +0 -55
  379. data/ext/cargo-vendor/winch-codegen-0.14.0/.cargo-checksum.json +0 -1
  380. data/ext/cargo-vendor/winch-codegen-0.14.0/Cargo.toml +0 -76
  381. data/ext/cargo-vendor/winch-codegen-0.14.0/src/codegen/context.rs +0 -545
  382. data/ext/cargo-vendor/winch-codegen-0.14.0/src/codegen/env.rs +0 -251
  383. data/ext/cargo-vendor/winch-codegen-0.14.0/src/isa/aarch64/masm.rs +0 -444
  384. data/ext/cargo-vendor/winch-codegen-0.14.0/src/isa/x64/asm.rs +0 -1117
  385. data/ext/cargo-vendor/winch-codegen-0.14.0/src/isa/x64/masm.rs +0 -994
  386. data/ext/cargo-vendor/winch-codegen-0.14.0/src/masm.rs +0 -679
  387. data/ext/cargo-vendor/winch-codegen-0.14.0/src/stack.rs +0 -436
  388. data/ext/cargo-vendor/winch-codegen-0.14.0/src/visitor.rs +0 -1383
  389. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.1}/LICENSE +0 -0
  390. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.1}/README.md +0 -0
  391. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.1}/src/lib.rs +0 -0
  392. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.1}/src/map.rs +0 -0
  393. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.1}/src/node.rs +0 -0
  394. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.1}/src/path.rs +0 -0
  395. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.1}/src/pool.rs +0 -0
  396. /data/ext/cargo-vendor/{cranelift-bforest-0.103.0 → cranelift-bforest-0.104.1}/src/set.rs +0 -0
  397. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/LICENSE +0 -0
  398. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/README.md +0 -0
  399. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/benches/x64-evex-encoding.rs +0 -0
  400. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/alias_analysis.rs +0 -0
  401. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/binemit/mod.rs +0 -0
  402. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/binemit/stack_map.rs +0 -0
  403. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/bitset.rs +0 -0
  404. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/cfg_printer.rs +0 -0
  405. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/constant_hash.rs +0 -0
  406. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/context.rs +0 -0
  407. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ctxhash.rs +0 -0
  408. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/cursor.rs +0 -0
  409. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/data_value.rs +0 -0
  410. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/dbg.rs +0 -0
  411. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/dce.rs +0 -0
  412. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/dominator_tree.rs +0 -0
  413. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/egraph/domtree.rs +0 -0
  414. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/flowgraph.rs +0 -0
  415. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/fx.rs +0 -0
  416. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/incremental_cache.rs +0 -0
  417. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/inst_predicates.rs +0 -0
  418. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/atomic_rmw_op.rs +0 -0
  419. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/builder.rs +0 -0
  420. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/condcodes.rs +0 -0
  421. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/constant.rs +0 -0
  422. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/dfg.rs +0 -0
  423. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/dynamic_type.rs +0 -0
  424. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/entities.rs +0 -0
  425. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/extfunc.rs +0 -0
  426. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/extname.rs +0 -0
  427. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/function.rs +0 -0
  428. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/globalvalue.rs +0 -0
  429. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/immediates.rs +0 -0
  430. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/instructions.rs +0 -0
  431. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/jumptable.rs +0 -0
  432. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/known_symbol.rs +0 -0
  433. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/layout.rs +0 -0
  434. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/libcall.rs +0 -0
  435. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/memflags.rs +0 -0
  436. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/memtype.rs +0 -0
  437. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/mod.rs +0 -0
  438. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/pcc.rs +0 -0
  439. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/progpoint.rs +0 -0
  440. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/sourceloc.rs +0 -0
  441. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/stackslot.rs +0 -0
  442. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/table.rs +0 -0
  443. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/trapcode.rs +0 -0
  444. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/ir/types.rs +0 -0
  445. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/aarch64/abi.rs +0 -0
  446. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/aarch64/inst/args.rs +0 -0
  447. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/aarch64/inst/emit.rs +0 -0
  448. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/aarch64/inst/emit_tests.rs +0 -0
  449. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/aarch64/inst/imms.rs +0 -0
  450. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/aarch64/inst/mod.rs +0 -0
  451. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/aarch64/inst/regs.rs +0 -0
  452. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/aarch64/inst/unwind/systemv.rs +0 -0
  453. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/aarch64/inst/unwind.rs +0 -0
  454. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/aarch64/inst_neon.isle +0 -0
  455. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/aarch64/lower/isle/generated_code.rs +0 -0
  456. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/aarch64/lower.isle +0 -0
  457. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/aarch64/lower.rs +0 -0
  458. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/aarch64/lower_dynamic_neon.isle +0 -0
  459. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/aarch64/mod.rs +0 -0
  460. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/aarch64/pcc.rs +0 -0
  461. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/aarch64/settings.rs +0 -0
  462. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/call_conv.rs +0 -0
  463. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/mod.rs +0 -0
  464. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/abi.rs +0 -0
  465. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/inst/args.rs +0 -0
  466. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/inst/emit.rs +0 -0
  467. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/inst/emit_tests.rs +0 -0
  468. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/inst/encode.rs +0 -0
  469. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/inst/imms.rs +0 -0
  470. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/inst/mod.rs +0 -0
  471. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/inst/regs.rs +0 -0
  472. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/inst/unwind/systemv.rs +0 -0
  473. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/inst/unwind.rs +0 -0
  474. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/inst/vector.rs +0 -0
  475. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/inst.isle +0 -0
  476. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/inst_vector.isle +0 -0
  477. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/lower/isle/generated_code.rs +0 -0
  478. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/lower/isle.rs +0 -0
  479. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/lower.isle +0 -0
  480. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/lower.rs +0 -0
  481. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/mod.rs +0 -0
  482. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/riscv64/settings.rs +0 -0
  483. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/s390x/abi.rs +0 -0
  484. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/s390x/inst/args.rs +0 -0
  485. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/s390x/inst/emit.rs +0 -0
  486. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/s390x/inst/emit_tests.rs +0 -0
  487. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/s390x/inst/imms.rs +0 -0
  488. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/s390x/inst/mod.rs +0 -0
  489. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/s390x/inst/regs.rs +0 -0
  490. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/s390x/inst/unwind/systemv.rs +0 -0
  491. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/s390x/inst/unwind.rs +0 -0
  492. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/s390x/inst.isle +0 -0
  493. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/s390x/lower/isle/generated_code.rs +0 -0
  494. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/s390x/lower/isle.rs +0 -0
  495. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/s390x/lower.isle +0 -0
  496. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/s390x/lower.rs +0 -0
  497. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/s390x/mod.rs +0 -0
  498. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/s390x/settings.rs +0 -0
  499. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/unwind/systemv.rs +0 -0
  500. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/unwind/winx64.rs +0 -0
  501. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/unwind.rs +0 -0
  502. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/encoding/evex.rs +0 -0
  503. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/encoding/mod.rs +0 -0
  504. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/encoding/rex.rs +0 -0
  505. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/encoding/vex.rs +0 -0
  506. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/inst/args.rs +0 -0
  507. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/inst/emit.rs +0 -0
  508. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/inst/emit_state.rs +0 -0
  509. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/inst/emit_tests.rs +0 -0
  510. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/inst/mod.rs +0 -0
  511. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/inst/regs.rs +0 -0
  512. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/inst/unwind/systemv.rs +0 -0
  513. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/inst/unwind/winx64.rs +0 -0
  514. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/inst/unwind.rs +0 -0
  515. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/inst.isle +0 -0
  516. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/lower/isle/generated_code.rs +0 -0
  517. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/lower/isle.rs +0 -0
  518. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/lower.isle +0 -0
  519. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/lower.rs +0 -0
  520. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/mod.rs +0 -0
  521. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/pcc.rs +0 -0
  522. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/isa/x64/settings.rs +0 -0
  523. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/iterators.rs +0 -0
  524. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/legalizer/globalvalue.rs +0 -0
  525. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/legalizer/mod.rs +0 -0
  526. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/legalizer/table.rs +0 -0
  527. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/lib.rs +0 -0
  528. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/loop_analysis.rs +0 -0
  529. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/machinst/abi.rs +0 -0
  530. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/machinst/blockorder.rs +0 -0
  531. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/machinst/buffer.rs +0 -0
  532. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/machinst/compile.rs +0 -0
  533. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/machinst/helpers.rs +0 -0
  534. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/machinst/inst_common.rs +0 -0
  535. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/machinst/lower.rs +0 -0
  536. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/machinst/reg.rs +0 -0
  537. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/machinst/valueregs.rs +0 -0
  538. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/machinst/vcode.rs +0 -0
  539. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/nan_canonicalization.rs +0 -0
  540. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/opts/generated_code.rs +0 -0
  541. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/opts/remat.isle +0 -0
  542. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/opts/vector.isle +0 -0
  543. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/print_errors.rs +0 -0
  544. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/remove_constant_phis.rs +0 -0
  545. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/result.rs +0 -0
  546. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/scoped_hash_map.rs +0 -0
  547. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/settings.rs +0 -0
  548. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/souper_harvest.rs +0 -0
  549. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/timing.rs +0 -0
  550. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/unionfind.rs +0 -0
  551. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/unreachable_code.rs +0 -0
  552. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/value_label.rs +0 -0
  553. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/verifier/mod.rs +0 -0
  554. /data/ext/cargo-vendor/{cranelift-codegen-0.103.0 → cranelift-codegen-0.104.1}/src/write.rs +0 -0
  555. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/LICENSE +0 -0
  556. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/README.md +0 -0
  557. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/cdsl/formats.rs +0 -0
  558. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/cdsl/instructions.rs +0 -0
  559. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/cdsl/isa.rs +0 -0
  560. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/cdsl/mod.rs +0 -0
  561. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/cdsl/operands.rs +0 -0
  562. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/cdsl/settings.rs +0 -0
  563. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/cdsl/types.rs +0 -0
  564. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/cdsl/typevar.rs +0 -0
  565. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/constant_hash.rs +0 -0
  566. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/error.rs +0 -0
  567. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/gen_inst.rs +0 -0
  568. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/gen_settings.rs +0 -0
  569. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/gen_types.rs +0 -0
  570. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/isa/arm64.rs +0 -0
  571. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/isa/mod.rs +0 -0
  572. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/isa/riscv64.rs +0 -0
  573. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/isa/s390x.rs +0 -0
  574. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/isa/x86.rs +0 -0
  575. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/lib.rs +0 -0
  576. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/shared/entities.rs +0 -0
  577. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/shared/formats.rs +0 -0
  578. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/shared/immediates.rs +0 -0
  579. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/shared/instructions.rs +0 -0
  580. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/shared/mod.rs +0 -0
  581. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/shared/settings.rs +0 -0
  582. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/shared/types.rs +0 -0
  583. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/srcgen.rs +0 -0
  584. /data/ext/cargo-vendor/{cranelift-codegen-meta-0.103.0 → cranelift-codegen-meta-0.104.1}/src/unique_table.rs +0 -0
  585. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.103.0 → cranelift-codegen-shared-0.104.1}/LICENSE +0 -0
  586. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.103.0 → cranelift-codegen-shared-0.104.1}/README.md +0 -0
  587. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.103.0 → cranelift-codegen-shared-0.104.1}/src/constant_hash.rs +0 -0
  588. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.103.0 → cranelift-codegen-shared-0.104.1}/src/constants.rs +0 -0
  589. /data/ext/cargo-vendor/{cranelift-codegen-shared-0.103.0 → cranelift-codegen-shared-0.104.1}/src/lib.rs +0 -0
  590. /data/ext/cargo-vendor/{cranelift-control-0.103.0 → cranelift-control-0.104.1}/LICENSE +0 -0
  591. /data/ext/cargo-vendor/{cranelift-control-0.103.0 → cranelift-control-0.104.1}/README.md +0 -0
  592. /data/ext/cargo-vendor/{cranelift-control-0.103.0 → cranelift-control-0.104.1}/src/chaos.rs +0 -0
  593. /data/ext/cargo-vendor/{cranelift-control-0.103.0 → cranelift-control-0.104.1}/src/lib.rs +0 -0
  594. /data/ext/cargo-vendor/{cranelift-control-0.103.0 → cranelift-control-0.104.1}/src/zero_sized.rs +0 -0
  595. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.1}/LICENSE +0 -0
  596. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.1}/README.md +0 -0
  597. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.1}/src/boxed_slice.rs +0 -0
  598. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.1}/src/iter.rs +0 -0
  599. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.1}/src/keys.rs +0 -0
  600. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.1}/src/lib.rs +0 -0
  601. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.1}/src/list.rs +0 -0
  602. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.1}/src/map.rs +0 -0
  603. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.1}/src/packed_option.rs +0 -0
  604. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.1}/src/set.rs +0 -0
  605. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.1}/src/sparse.rs +0 -0
  606. /data/ext/cargo-vendor/{cranelift-entity-0.103.0 → cranelift-entity-0.104.1}/src/unsigned.rs +0 -0
  607. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.1}/LICENSE +0 -0
  608. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.1}/README.md +0 -0
  609. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.1}/src/frontend.rs +0 -0
  610. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.1}/src/lib.rs +0 -0
  611. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.1}/src/ssa.rs +0 -0
  612. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.1}/src/switch.rs +0 -0
  613. /data/ext/cargo-vendor/{cranelift-frontend-0.103.0 → cranelift-frontend-0.104.1}/src/variable.rs +0 -0
  614. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/README.md +0 -0
  615. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/build.rs +0 -0
  616. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/fail/bad_converters.isle +0 -0
  617. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/fail/bound_var_type_mismatch.isle +0 -0
  618. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/fail/converter_extractor_constructor.isle +0 -0
  619. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/fail/error1.isle +0 -0
  620. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/fail/extra_parens.isle +0 -0
  621. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/fail/impure_expression.isle +0 -0
  622. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/fail/impure_rhs.isle +0 -0
  623. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/fail/multi_internal_etor.isle +0 -0
  624. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/fail/multi_prio.isle +0 -0
  625. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/link/borrows.isle +0 -0
  626. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/link/borrows_main.rs +0 -0
  627. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/link/iflets.isle +0 -0
  628. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/link/iflets_main.rs +0 -0
  629. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/link/multi_constructor.isle +0 -0
  630. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/link/multi_constructor_main.rs +0 -0
  631. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/link/multi_extractor.isle +0 -0
  632. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/link/multi_extractor_main.rs +0 -0
  633. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/link/test.isle +0 -0
  634. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/link/test_main.rs +0 -0
  635. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/pass/bound_var.isle +0 -0
  636. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/pass/construct_and_extract.isle +0 -0
  637. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/pass/conversions.isle +0 -0
  638. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/pass/conversions_extern.isle +0 -0
  639. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/pass/let.isle +0 -0
  640. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/pass/nodebug.isle +0 -0
  641. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/pass/prio_trie_bug.isle +0 -0
  642. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/pass/test2.isle +0 -0
  643. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/pass/test3.isle +0 -0
  644. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/pass/test4.isle +0 -0
  645. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/pass/tutorial.isle +0 -0
  646. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/run/iconst.isle +0 -0
  647. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/run/iconst_main.rs +0 -0
  648. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/run/let_shadowing.isle +0 -0
  649. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/isle_examples/run/let_shadowing_main.rs +0 -0
  650. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/src/ast.rs +0 -0
  651. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/src/codegen.rs +0 -0
  652. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/src/compile.rs +0 -0
  653. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/src/error.rs +0 -0
  654. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/src/lexer.rs +0 -0
  655. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/src/lib.rs +0 -0
  656. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/src/log.rs +0 -0
  657. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/src/overlap.rs +0 -0
  658. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/src/parser.rs +0 -0
  659. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/src/sema.rs +0 -0
  660. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/src/serialize.rs +0 -0
  661. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/src/trie_again.rs +0 -0
  662. /data/ext/cargo-vendor/{cranelift-isle-0.103.0 → cranelift-isle-0.104.1}/tests/run_tests.rs +0 -0
  663. /data/ext/cargo-vendor/{cranelift-native-0.103.0 → cranelift-native-0.104.1}/LICENSE +0 -0
  664. /data/ext/cargo-vendor/{cranelift-native-0.103.0 → cranelift-native-0.104.1}/README.md +0 -0
  665. /data/ext/cargo-vendor/{cranelift-native-0.103.0 → cranelift-native-0.104.1}/src/lib.rs +0 -0
  666. /data/ext/cargo-vendor/{cranelift-native-0.103.0 → cranelift-native-0.104.1}/src/riscv.rs +0 -0
  667. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/LICENSE +0 -0
  668. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/README.md +0 -0
  669. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/src/code_translator/bounds_checks.rs +0 -0
  670. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/src/environ/dummy.rs +0 -0
  671. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/src/environ/mod.rs +0 -0
  672. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/src/environ/spec.rs +0 -0
  673. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/src/func_translator.rs +0 -0
  674. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/src/heap.rs +0 -0
  675. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/src/lib.rs +0 -0
  676. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/src/module_translator.rs +0 -0
  677. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/src/sections_translator.rs +0 -0
  678. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/src/state.rs +0 -0
  679. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/src/translation_utils.rs +0 -0
  680. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/tests/wasm_testsuite.rs +0 -0
  681. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/arith.wat +0 -0
  682. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/br_table.wat +0 -0
  683. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/call-simd.wat +0 -0
  684. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/call.wat +0 -0
  685. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/embenchen_fannkuch.wat +0 -0
  686. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/embenchen_fasta.wat +0 -0
  687. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/embenchen_ifs.wat +0 -0
  688. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/embenchen_primes.wat +0 -0
  689. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/fac-multi-value.wat +0 -0
  690. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/fibonacci.wat +0 -0
  691. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/globals.wat +0 -0
  692. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/icall-simd.wat +0 -0
  693. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/icall.wat +0 -0
  694. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/if-reachability-translation-0.wat +0 -0
  695. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/if-reachability-translation-1.wat +0 -0
  696. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/if-reachability-translation-2.wat +0 -0
  697. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/if-reachability-translation-3.wat +0 -0
  698. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/if-reachability-translation-4.wat +0 -0
  699. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/if-reachability-translation-5.wat +0 -0
  700. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/if-reachability-translation-6.wat +0 -0
  701. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/if-unreachable-else-params-2.wat +0 -0
  702. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/if-unreachable-else-params.wat +0 -0
  703. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/issue-1306-name-section-with-u32-max-function-index.wasm +0 -0
  704. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/memory.wat +0 -0
  705. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/multi-0.wat +0 -0
  706. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/multi-1.wat +0 -0
  707. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/multi-10.wat +0 -0
  708. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/multi-11.wat +0 -0
  709. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/multi-12.wat +0 -0
  710. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/multi-13.wat +0 -0
  711. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/multi-14.wat +0 -0
  712. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/multi-15.wat +0 -0
  713. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/multi-16.wat +0 -0
  714. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/multi-17.wat +0 -0
  715. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/multi-2.wat +0 -0
  716. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/multi-3.wat +0 -0
  717. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/multi-4.wat +0 -0
  718. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/multi-5.wat +0 -0
  719. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/multi-6.wat +0 -0
  720. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/multi-7.wat +0 -0
  721. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/multi-8.wat +0 -0
  722. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/multi-9.wat +0 -0
  723. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/nullref.wat +0 -0
  724. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/passive-data.wat +0 -0
  725. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/pr2303.wat +0 -0
  726. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/pr2559.wat +0 -0
  727. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/ref-func-0.wat +0 -0
  728. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/rust_fannkuch.wat +0 -0
  729. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/select.wat +0 -0
  730. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/simd-store.wat +0 -0
  731. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/simd.wat +0 -0
  732. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/table-copy.wat +0 -0
  733. /data/ext/cargo-vendor/{cranelift-wasm-0.103.0 → cranelift-wasm-0.104.1}/wasmtests/unreachable_code.wat +0 -0
  734. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.1}/LICENSE +0 -0
  735. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.1}/README.md +0 -0
  736. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.1}/src/clocks.rs +0 -0
  737. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.1}/src/dir.rs +0 -0
  738. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.1}/src/file.rs +0 -0
  739. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.1}/src/lib.rs +0 -0
  740. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.1}/src/net.rs +0 -0
  741. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.1}/src/sched/unix.rs +0 -0
  742. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.1}/src/sched/windows.rs +0 -0
  743. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.1}/src/sched.rs +0 -0
  744. /data/ext/cargo-vendor/{wasi-cap-std-sync-16.0.0 → wasi-cap-std-sync-17.0.1}/src/stdio.rs +0 -0
  745. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/LICENSE +0 -0
  746. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/README.md +0 -0
  747. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/README.md +0 -0
  748. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/docs/README.md +0 -0
  749. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/README.md +0 -0
  750. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/ephemeral/docs.md +0 -0
  751. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/ephemeral/witx/typenames.witx +0 -0
  752. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_args.witx +0 -0
  753. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_clock.witx +0 -0
  754. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_environ.witx +0 -0
  755. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_fd.witx +0 -0
  756. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_path.witx +0 -0
  757. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_poll.witx +0 -0
  758. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_proc.witx +0 -0
  759. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_random.witx +0 -0
  760. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_sched.witx +0 -0
  761. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/ephemeral/witx/wasi_ephemeral_sock.witx +0 -0
  762. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/old/snapshot_0/docs.md +0 -0
  763. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/old/snapshot_0/witx/typenames.witx +0 -0
  764. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/old/snapshot_0/witx/wasi_unstable.witx +0 -0
  765. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/snapshot/docs.html +0 -0
  766. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/snapshot/docs.md +0 -0
  767. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/snapshot/witx/typenames.witx +0 -0
  768. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/phases/snapshot/witx/wasi_snapshot_preview1.witx +0 -0
  769. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/proposal-template/README.md +0 -0
  770. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/proposals/README.md +0 -0
  771. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/snapshots/README.md +0 -0
  772. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/WASI/standard/README.md +0 -0
  773. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/build.rs +0 -0
  774. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/src/clocks.rs +0 -0
  775. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/src/ctx.rs +0 -0
  776. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/src/dir.rs +0 -0
  777. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/src/file.rs +0 -0
  778. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/src/lib.rs +0 -0
  779. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/src/pipe.rs +0 -0
  780. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/src/random.rs +0 -0
  781. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/src/sched/subscription.rs +0 -0
  782. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/src/sched.rs +0 -0
  783. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/src/snapshots/mod.rs +0 -0
  784. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/src/snapshots/preview_0.rs +0 -0
  785. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/src/snapshots/preview_1.rs +0 -0
  786. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/src/string_array.rs +0 -0
  787. /data/ext/cargo-vendor/{wasi-common-16.0.0 → wasi-common-17.0.1}/src/table.rs +0 -0
  788. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/LICENSE +0 -0
  789. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/README.md +0 -0
  790. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/code.rs +0 -0
  791. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/compiler.rs +0 -0
  792. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/component/func/host.rs +0 -0
  793. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/component/func/options.rs +0 -0
  794. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/component/func/typed.rs +0 -0
  795. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/component/func.rs +0 -0
  796. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/component/storage.rs +0 -0
  797. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/component/store.rs +0 -0
  798. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/component/types.rs +0 -0
  799. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/component/values.rs +0 -0
  800. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/coredump.rs +0 -0
  801. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/engine/serialization.rs +0 -0
  802. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/engine.rs +0 -0
  803. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/externals/global.rs +0 -0
  804. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/externals/table.rs +0 -0
  805. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/externals.rs +0 -0
  806. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/func.rs +0 -0
  807. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/instance.rs +0 -0
  808. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/limits.rs +0 -0
  809. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/linker.rs +0 -0
  810. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/memory.rs +0 -0
  811. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/module/registry.rs +0 -0
  812. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/module.rs +0 -0
  813. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/profiling.rs +0 -0
  814. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/ref.rs +0 -0
  815. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/resources.rs +0 -0
  816. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/signatures.rs +0 -0
  817. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/stack.rs +0 -0
  818. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/store/context.rs +0 -0
  819. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/store/data.rs +0 -0
  820. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/store/func_refs.rs +0 -0
  821. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/trampoline/func.rs +0 -0
  822. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/trampoline/global.rs +0 -0
  823. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/trampoline/memory.rs +0 -0
  824. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/trampoline/table.rs +0 -0
  825. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/trampoline.rs +0 -0
  826. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/trap.rs +0 -0
  827. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/types/matching.rs +0 -0
  828. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/types.rs +0 -0
  829. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/unix.rs +0 -0
  830. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/v128.rs +0 -0
  831. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/values.rs +0 -0
  832. /data/ext/cargo-vendor/{wasmtime-16.0.0 → wasmtime-17.0.1}/src/windows.rs +0 -0
  833. /data/ext/cargo-vendor/{wasmtime-asm-macros-16.0.0 → wasmtime-asm-macros-17.0.1}/src/lib.rs +0 -0
  834. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.1}/LICENSE +0 -0
  835. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.1}/build.rs +0 -0
  836. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.1}/src/config/tests.rs +0 -0
  837. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.1}/src/config.rs +0 -0
  838. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.1}/src/lib.rs +0 -0
  839. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.1}/src/tests.rs +0 -0
  840. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.1}/src/worker/tests/system_time_stub.rs +0 -0
  841. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.1}/src/worker/tests.rs +0 -0
  842. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.1}/src/worker.rs +0 -0
  843. /data/ext/cargo-vendor/{wasmtime-cache-16.0.0 → wasmtime-cache-17.0.1}/tests/cache_write_default_config.rs +0 -0
  844. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/src/component.rs +0 -0
  845. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/src/lib.rs +0 -0
  846. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/char.wit +0 -0
  847. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/conventions.wit +0 -0
  848. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/direct-import.wit +0 -0
  849. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/empty.wit +0 -0
  850. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/flags.wit +0 -0
  851. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/floats.wit +0 -0
  852. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/function-new.wit +0 -0
  853. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/integers.wit +0 -0
  854. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/lists.wit +0 -0
  855. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/many-arguments.wit +0 -0
  856. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/multi-return.wit +0 -0
  857. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/multiversion/deps/v1/root.wit +0 -0
  858. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/multiversion/deps/v2/root.wit +0 -0
  859. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/records.wit +0 -0
  860. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/rename.wit +0 -0
  861. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/resources-export.wit +0 -0
  862. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/resources-import.wit +0 -0
  863. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/share-types.wit +0 -0
  864. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/simple-functions.wit +0 -0
  865. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/simple-lists.wit +0 -0
  866. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/simple-wasi.wit +0 -0
  867. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/small-anonymous.wit +0 -0
  868. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/smoke-default.wit +0 -0
  869. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/smoke-export.wit +0 -0
  870. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/smoke.wit +0 -0
  871. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/strings.wit +0 -0
  872. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/use-paths.wit +0 -0
  873. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/variants.wit +0 -0
  874. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen/worlds-with-types.wit +0 -0
  875. /data/ext/cargo-vendor/{wasmtime-component-macro-16.0.0 → wasmtime-component-macro-17.0.1}/tests/codegen.rs +0 -0
  876. /data/ext/cargo-vendor/{wasmtime-component-util-16.0.0 → wasmtime-component-util-17.0.1}/src/lib.rs +0 -0
  877. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/LICENSE +0 -0
  878. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/SECURITY.md +0 -0
  879. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/src/builder.rs +0 -0
  880. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/src/compiler/component.rs +0 -0
  881. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/src/compiler.rs +0 -0
  882. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/src/debug/gc.rs +0 -0
  883. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/src/debug/transform/address_transform.rs +0 -0
  884. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/src/debug/transform/attr.rs +0 -0
  885. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/src/debug/transform/expression.rs +0 -0
  886. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/src/debug/transform/line_program.rs +0 -0
  887. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/src/debug/transform/mod.rs +0 -0
  888. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/src/debug/transform/range_info_builder.rs +0 -0
  889. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/src/debug/transform/refs.rs +0 -0
  890. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/src/debug/transform/simulate.rs +0 -0
  891. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/src/debug/transform/unit.rs +0 -0
  892. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/src/debug/transform/utils.rs +0 -0
  893. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/src/debug/write_debuginfo.rs +0 -0
  894. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/src/debug.rs +0 -0
  895. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/src/func_environ.rs +0 -0
  896. /data/ext/cargo-vendor/{wasmtime-cranelift-16.0.0 → wasmtime-cranelift-17.0.1}/src/lib.rs +0 -0
  897. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-16.0.0 → wasmtime-cranelift-shared-17.0.1}/src/compiled_function.rs +0 -0
  898. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-16.0.0 → wasmtime-cranelift-shared-17.0.1}/src/isa_builder.rs +0 -0
  899. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-16.0.0 → wasmtime-cranelift-shared-17.0.1}/src/lib.rs +0 -0
  900. /data/ext/cargo-vendor/{wasmtime-cranelift-shared-16.0.0 → wasmtime-cranelift-shared-17.0.1}/src/obj.rs +0 -0
  901. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/LICENSE +0 -0
  902. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/address_map.rs +0 -0
  903. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/builtin.rs +0 -0
  904. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/compilation.rs +0 -0
  905. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/component/compiler.rs +0 -0
  906. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/component/dfg.rs +0 -0
  907. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/component/info.rs +0 -0
  908. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/component/translate/adapt.rs +0 -0
  909. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/component/translate/inline.rs +0 -0
  910. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/component/translate.rs +0 -0
  911. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/component/types/resources.rs +0 -0
  912. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/component/types.rs +0 -0
  913. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/component/vmcomponent_offsets.rs +0 -0
  914. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/component.rs +0 -0
  915. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/fact/core_types.rs +0 -0
  916. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/fact/signature.rs +0 -0
  917. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/fact/trampoline.rs +0 -0
  918. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/fact/transcode.rs +0 -0
  919. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/fact/traps.rs +0 -0
  920. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/fact.rs +0 -0
  921. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/lib.rs +0 -0
  922. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/module.rs +0 -0
  923. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/module_environ.rs +0 -0
  924. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/module_types.rs +0 -0
  925. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/obj.rs +0 -0
  926. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/ref_bits.rs +0 -0
  927. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/scopevec.rs +0 -0
  928. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/stack_map.rs +0 -0
  929. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/trap_encoding.rs +0 -0
  930. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/tunables.rs +0 -0
  931. /data/ext/cargo-vendor/{wasmtime-environ-16.0.0 → wasmtime-environ-17.0.1}/src/vmoffsets.rs +0 -0
  932. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.1}/LICENSE +0 -0
  933. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.1}/build.rs +0 -0
  934. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.1}/src/lib.rs +0 -0
  935. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.1}/src/unix/aarch64.rs +0 -0
  936. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.1}/src/unix/arm.rs +0 -0
  937. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.1}/src/unix/riscv64.rs +0 -0
  938. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.1}/src/unix/s390x.S +0 -0
  939. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.1}/src/unix/x86.rs +0 -0
  940. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.1}/src/unix/x86_64.rs +0 -0
  941. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.1}/src/unix.rs +0 -0
  942. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.1}/src/windows.c +0 -0
  943. /data/ext/cargo-vendor/{wasmtime-fiber-16.0.0 → wasmtime-fiber-17.0.1}/src/windows.rs +0 -0
  944. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.1}/LICENSE +0 -0
  945. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.1}/src/code_memory.rs +0 -0
  946. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.1}/src/debug.rs +0 -0
  947. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.1}/src/demangling.rs +0 -0
  948. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.1}/src/instantiate.rs +0 -0
  949. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.1}/src/lib.rs +0 -0
  950. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.1}/src/profiling/jitdump.rs +0 -0
  951. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.1}/src/profiling/perfmap.rs +0 -0
  952. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.1}/src/profiling/vtune.rs +0 -0
  953. /data/ext/cargo-vendor/{wasmtime-jit-16.0.0 → wasmtime-jit-17.0.1}/src/profiling.rs +0 -0
  954. /data/ext/cargo-vendor/{wasmtime-jit-debug-16.0.0 → wasmtime-jit-debug-17.0.1}/README.md +0 -0
  955. /data/ext/cargo-vendor/{wasmtime-jit-debug-16.0.0 → wasmtime-jit-debug-17.0.1}/src/gdb_jit_int.rs +0 -0
  956. /data/ext/cargo-vendor/{wasmtime-jit-debug-16.0.0 → wasmtime-jit-debug-17.0.1}/src/lib.rs +0 -0
  957. /data/ext/cargo-vendor/{wasmtime-jit-debug-16.0.0 → wasmtime-jit-debug-17.0.1}/src/perf_jitdump.rs +0 -0
  958. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-16.0.0 → wasmtime-jit-icache-coherence-17.0.1}/src/lib.rs +0 -0
  959. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-16.0.0 → wasmtime-jit-icache-coherence-17.0.1}/src/libc.rs +0 -0
  960. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-16.0.0 → wasmtime-jit-icache-coherence-17.0.1}/src/miri.rs +0 -0
  961. /data/ext/cargo-vendor/{wasmtime-jit-icache-coherence-16.0.0 → wasmtime-jit-icache-coherence-17.0.1}/src/win.rs +0 -0
  962. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/LICENSE +0 -0
  963. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/build.rs +0 -0
  964. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/proptest-regressions/instance/allocator/pooling/memory_pool.txt +0 -0
  965. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/arch/aarch64.rs +0 -0
  966. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/arch/mod.rs +0 -0
  967. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/arch/riscv64.rs +0 -0
  968. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/arch/s390x.S +0 -0
  969. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/arch/s390x.rs +0 -0
  970. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/arch/x86_64.rs +0 -0
  971. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/component/libcalls.rs +0 -0
  972. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/component/resources.rs +0 -0
  973. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/component.rs +0 -0
  974. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/cow.rs +0 -0
  975. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/debug_builtins.rs +0 -0
  976. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/export.rs +0 -0
  977. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/externref.rs +0 -0
  978. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/helpers.c +0 -0
  979. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/imports.rs +0 -0
  980. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/instance/allocator/on_demand.rs +0 -0
  981. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/instance/allocator/pooling/index_allocator.rs +0 -0
  982. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/instance/allocator/pooling/stack_pool.rs +0 -0
  983. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/instance/allocator/pooling/table_pool.rs +0 -0
  984. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/instance/allocator.rs +0 -0
  985. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/instance.rs +0 -0
  986. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/lib.rs +0 -0
  987. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/libcalls.rs +0 -0
  988. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/mmap.rs +0 -0
  989. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/mmap_vec.rs +0 -0
  990. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/module_id.rs +0 -0
  991. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/mpk/disabled.rs +0 -0
  992. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/mpk/enabled.rs +0 -0
  993. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/mpk/mod.rs +0 -0
  994. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/mpk/pkru.rs +0 -0
  995. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/mpk/sys.rs +0 -0
  996. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/send_sync_ptr.rs +0 -0
  997. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/store_box.rs +0 -0
  998. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/sys/miri/mmap.rs +0 -0
  999. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/sys/miri/mod.rs +0 -0
  1000. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/sys/miri/traphandlers.rs +0 -0
  1001. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/sys/miri/unwind.rs +0 -0
  1002. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/sys/miri/vm.rs +0 -0
  1003. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/sys/mod.rs +0 -0
  1004. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/sys/unix/machports.rs +0 -0
  1005. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/sys/unix/macos_traphandlers.rs +0 -0
  1006. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/sys/unix/mmap.rs +0 -0
  1007. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/sys/unix/mod.rs +0 -0
  1008. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/sys/unix/signals.rs +0 -0
  1009. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/sys/unix/unwind.rs +0 -0
  1010. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/sys/unix/vm.rs +0 -0
  1011. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/sys/windows/mod.rs +0 -0
  1012. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/sys/windows/traphandlers.rs +0 -0
  1013. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/sys/windows/unwind.rs +0 -0
  1014. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/sys/windows/vm.rs +0 -0
  1015. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/table.rs +0 -0
  1016. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/traphandlers/backtrace.rs +0 -0
  1017. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/traphandlers/coredump.rs +0 -0
  1018. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/traphandlers.rs +0 -0
  1019. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/vmcontext/vm_host_func_context.rs +0 -0
  1020. /data/ext/cargo-vendor/{wasmtime-runtime-16.0.0 → wasmtime-runtime-17.0.1}/src/vmcontext.rs +0 -0
  1021. /data/ext/cargo-vendor/{wasmtime-types-16.0.0 → wasmtime-types-17.0.1}/LICENSE +0 -0
  1022. /data/ext/cargo-vendor/{wasmtime-types-16.0.0 → wasmtime-types-17.0.1}/src/error.rs +0 -0
  1023. /data/ext/cargo-vendor/{wasmtime-types-16.0.0 → wasmtime-types-17.0.1}/src/lib.rs +0 -0
  1024. /data/ext/cargo-vendor/{wasmtime-versioned-export-macros-16.0.0 → wasmtime-versioned-export-macros-17.0.1}/src/lib.rs +0 -0
  1025. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/LICENSE +0 -0
  1026. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/README.md +0 -0
  1027. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/build.rs +0 -0
  1028. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/lib.rs +0 -0
  1029. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/clocks/host.rs +0 -0
  1030. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/clocks.rs +0 -0
  1031. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/command.rs +0 -0
  1032. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/error.rs +0 -0
  1033. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/host/env.rs +0 -0
  1034. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/host/exit.rs +0 -0
  1035. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/host/filesystem/sync.rs +0 -0
  1036. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/host/io.rs +0 -0
  1037. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/host/mod.rs +0 -0
  1038. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/host/random.rs +0 -0
  1039. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/host/tcp_create_socket.rs +0 -0
  1040. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/host/udp_create_socket.rs +0 -0
  1041. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/ip_name_lookup.rs +0 -0
  1042. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/pipe.rs +0 -0
  1043. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/preview0.rs +0 -0
  1044. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/random.rs +0 -0
  1045. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/stdio/worker_thread_stdin.rs +0 -0
  1046. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/stdio.rs +0 -0
  1047. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/src/preview2/write_stream.rs +0 -0
  1048. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/tests/process_stdin.rs +0 -0
  1049. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/wit/deps/cli/environment.wit +0 -0
  1050. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/wit/deps/cli/exit.wit +0 -0
  1051. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/wit/deps/cli/run.wit +0 -0
  1052. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/wit/deps/http/handler.wit +0 -0
  1053. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/wit/deps/sockets/instance-network.wit +0 -0
  1054. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/witx/preview0/typenames.witx +0 -0
  1055. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/witx/preview0/wasi_unstable.witx +0 -0
  1056. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/witx/preview1/typenames.witx +0 -0
  1057. /data/ext/cargo-vendor/{wasmtime-wasi-16.0.0 → wasmtime-wasi-17.0.1}/witx/preview1/wasi_snapshot_preview1.witx +0 -0
  1058. /data/ext/cargo-vendor/{wasmtime-winch-16.0.0 → wasmtime-winch-17.0.1}/LICENSE +0 -0
  1059. /data/ext/cargo-vendor/{wasmtime-winch-16.0.0 → wasmtime-winch-17.0.1}/src/builder.rs +0 -0
  1060. /data/ext/cargo-vendor/{wasmtime-winch-16.0.0 → wasmtime-winch-17.0.1}/src/compiler.rs +0 -0
  1061. /data/ext/cargo-vendor/{wasmtime-winch-16.0.0 → wasmtime-winch-17.0.1}/src/lib.rs +0 -0
  1062. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-16.0.0 → wasmtime-wit-bindgen-17.0.1}/src/rust.rs +0 -0
  1063. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-16.0.0 → wasmtime-wit-bindgen-17.0.1}/src/source.rs +0 -0
  1064. /data/ext/cargo-vendor/{wasmtime-wit-bindgen-16.0.0 → wasmtime-wit-bindgen-17.0.1}/src/types.rs +0 -0
  1065. /data/ext/cargo-vendor/{wasmtime-wmemcheck-16.0.0 → wasmtime-wmemcheck-17.0.1}/src/lib.rs +0 -0
  1066. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.1}/LICENSE +0 -0
  1067. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.1}/README.md +0 -0
  1068. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.1}/src/borrow.rs +0 -0
  1069. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.1}/src/error.rs +0 -0
  1070. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.1}/src/guest_type.rs +0 -0
  1071. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.1}/src/lib.rs +0 -0
  1072. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.1}/src/region.rs +0 -0
  1073. /data/ext/cargo-vendor/{wiggle-16.0.0 → wiggle-17.0.1}/src/wasmtime.rs +0 -0
  1074. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.1}/LICENSE +0 -0
  1075. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.1}/README.md +0 -0
  1076. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.1}/src/codegen_settings.rs +0 -0
  1077. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.1}/src/config.rs +0 -0
  1078. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.1}/src/funcs.rs +0 -0
  1079. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.1}/src/lib.rs +0 -0
  1080. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.1}/src/lifetimes.rs +0 -0
  1081. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.1}/src/module_trait.rs +0 -0
  1082. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.1}/src/names.rs +0 -0
  1083. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.1}/src/types/error.rs +0 -0
  1084. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.1}/src/types/flags.rs +0 -0
  1085. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.1}/src/types/handle.rs +0 -0
  1086. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.1}/src/types/mod.rs +0 -0
  1087. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.1}/src/types/record.rs +0 -0
  1088. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.1}/src/types/variant.rs +0 -0
  1089. /data/ext/cargo-vendor/{wiggle-generate-16.0.0 → wiggle-generate-17.0.1}/src/wasmtime.rs +0 -0
  1090. /data/ext/cargo-vendor/{wiggle-macro-16.0.0 → wiggle-macro-17.0.1}/LICENSE +0 -0
  1091. /data/ext/cargo-vendor/{wiggle-macro-16.0.0 → wiggle-macro-17.0.1}/src/lib.rs +0 -0
  1092. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/LICENSE +0 -0
  1093. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/build.rs +0 -0
  1094. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/abi/local.rs +0 -0
  1095. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/abi/mod.rs +0 -0
  1096. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/codegen/builtin.rs +0 -0
  1097. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/codegen/call.rs +0 -0
  1098. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/codegen/control.rs +0 -0
  1099. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/codegen/mod.rs +0 -0
  1100. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/frame/mod.rs +0 -0
  1101. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/isa/aarch64/abi.rs +0 -0
  1102. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/isa/aarch64/address.rs +0 -0
  1103. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/isa/aarch64/asm.rs +0 -0
  1104. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/isa/aarch64/mod.rs +0 -0
  1105. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/isa/aarch64/regs.rs +0 -0
  1106. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/isa/mod.rs +0 -0
  1107. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/isa/reg.rs +0 -0
  1108. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/isa/x64/abi.rs +0 -0
  1109. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/isa/x64/address.rs +0 -0
  1110. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/isa/x64/mod.rs +0 -0
  1111. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/isa/x64/regs.rs +0 -0
  1112. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/lib.rs +0 -0
  1113. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/regalloc.rs +0 -0
  1114. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/regset.rs +0 -0
  1115. /data/ext/cargo-vendor/{winch-codegen-0.14.0 → winch-codegen-0.15.1}/src/trampoline.rs +0 -0
@@ -1,2388 +0,0 @@
1
- //! Wasmtime's "store" type
2
- //!
3
- //! This module, and its submodules, contain the `Store` type and various types
4
- //! used to interact with it. At first glance this is a pretty confusing module
5
- //! where you need to know the difference between:
6
- //!
7
- //! * `Store<T>`
8
- //! * `StoreContext<T>`
9
- //! * `StoreContextMut<T>`
10
- //! * `AsContext`
11
- //! * `AsContextMut`
12
- //! * `StoreInner<T>`
13
- //! * `StoreOpaque`
14
- //! * `StoreData`
15
- //!
16
- //! There's... quite a lot going on here, and it's easy to be confused. This
17
- //! comment is ideally going to serve the purpose of clarifying what all these
18
- //! types are for and why they're motivated.
19
- //!
20
- //! First it's important to know what's "internal" and what's "external". Almost
21
- //! everything above is defined as `pub`, but only some of the items are
22
- //! reexported to the outside world to be usable from this crate. Otherwise all
23
- //! items are `pub` within this `store` module, and the `store` module is
24
- //! private to the `wasmtime` crate. Notably `Store<T>`, `StoreContext<T>`,
25
- //! `StoreContextMut<T>`, `AsContext`, and `AsContextMut` are all public
26
- //! interfaces to the `wasmtime` crate. You can think of these as:
27
- //!
28
- //! * `Store<T>` - an owned reference to a store, the "root of everything"
29
- //! * `StoreContext<T>` - basically `&StoreInner<T>`
30
- //! * `StoreContextMut<T>` - more-or-less `&mut StoreInner<T>` with caveats.
31
- //! Explained later.
32
- //! * `AsContext` - similar to `AsRef`, but produces `StoreContext<T>`
33
- //! * `AsContextMut` - similar to `AsMut`, but produces `StoreContextMut<T>`
34
- //!
35
- //! Next comes the internal structure of the `Store<T>` itself. This looks like:
36
- //!
37
- //! * `Store<T>` - this type is just a pointer large. It's primarily just
38
- //! intended to be consumed by the outside world. Note that the "just a
39
- //! pointer large" is a load-bearing implementation detail in Wasmtime. This
40
- //! enables it to store a pointer to its own trait object which doesn't need
41
- //! to change over time.
42
- //!
43
- //! * `StoreInner<T>` - the first layer of the contents of a `Store<T>`, what's
44
- //! stored inside the `Box`. This is the general Rust pattern when one struct
45
- //! is a layer over another. The surprising part, though, is that this is
46
- //! further subdivided. This structure only contains things which actually
47
- //! need `T` itself. The downside of this structure is that it's always
48
- //! generic and means that code is monomorphized into consumer crates. We
49
- //! strive to have things be as monomorphic as possible in `wasmtime` so this
50
- //! type is not heavily used.
51
- //!
52
- //! * `StoreOpaque` - this is the primary contents of the `StoreInner<T>` type.
53
- //! Stored inline in the outer type the "opaque" here means that it's a
54
- //! "store" but it doesn't have access to the `T`. This is the primary
55
- //! "internal" reference that Wasmtime uses since `T` is rarely needed by the
56
- //! internals of Wasmtime.
57
- //!
58
- //! * `StoreData` - this is a final helper struct stored within `StoreOpaque`.
59
- //! All references of Wasm items into a `Store` are actually indices into a
60
- //! table in this structure, and the `StoreData` being separate makes it a bit
61
- //! easier to manage/define/work with. There's no real fundamental reason this
62
- //! is split out, although sometimes it's useful to have separate borrows into
63
- //! these tables than the `StoreOpaque`.
64
- //!
65
- //! A major caveat with these representations is that the internal `&mut
66
- //! StoreInner<T>` is never handed out publicly to consumers of this crate, only
67
- //! through a wrapper of `StoreContextMut<'_, T>`. The reason for this is that
68
- //! we want to provide mutable, but not destructive, access to the contents of a
69
- //! `Store`. For example if a `StoreInner<T>` were replaced with some other
70
- //! `StoreInner<T>` then that would drop live instances, possibly those
71
- //! currently executing beneath the current stack frame. This would not be a
72
- //! safe operation.
73
- //!
74
- //! This means, though, that the `wasmtime` crate, which liberally uses `&mut
75
- //! StoreOpaque` internally, has to be careful to never actually destroy the
76
- //! contents of `StoreOpaque`. This is an invariant that we, as the authors of
77
- //! `wasmtime`, must uphold for the public interface to be safe.
78
-
79
- use crate::instance::InstanceData;
80
- use crate::linker::Definition;
81
- use crate::module::{BareModuleInfo, RegisteredModuleId};
82
- use crate::trampoline::VMHostGlobalContext;
83
- use crate::{module::ModuleRegistry, Engine, Module, Trap, Val, ValRaw};
84
- use crate::{Global, Instance, Memory};
85
- use anyhow::{anyhow, bail, Result};
86
- use std::cell::UnsafeCell;
87
- use std::fmt;
88
- use std::future::Future;
89
- use std::marker;
90
- use std::mem::{self, ManuallyDrop};
91
- use std::num::NonZeroU64;
92
- use std::ops::{Deref, DerefMut};
93
- use std::pin::Pin;
94
- use std::ptr;
95
- use std::sync::atomic::AtomicU64;
96
- use std::sync::Arc;
97
- use std::task::{Context, Poll};
98
- use wasmtime_runtime::{
99
- mpk::ProtectionKey, ExportGlobal, InstanceAllocationRequest, InstanceAllocator, InstanceHandle,
100
- ModuleInfo, OnDemandInstanceAllocator, SignalHandler, StoreBox, StorePtr, VMContext,
101
- VMExternRef, VMExternRefActivationsTable, VMFuncRef, VMRuntimeLimits, WasmFault,
102
- };
103
-
104
- mod context;
105
- pub use self::context::*;
106
- mod data;
107
- pub use self::data::*;
108
- mod func_refs;
109
- use func_refs::FuncRefs;
110
-
111
- /// A [`Store`] is a collection of WebAssembly instances and host-defined state.
112
- ///
113
- /// All WebAssembly instances and items will be attached to and refer to a
114
- /// [`Store`]. For example instances, functions, globals, and tables are all
115
- /// attached to a [`Store`]. Instances are created by instantiating a
116
- /// [`Module`](crate::Module) within a [`Store`].
117
- ///
118
- /// A [`Store`] is intended to be a short-lived object in a program. No form
119
- /// of GC is implemented at this time so once an instance is created within a
120
- /// [`Store`] it will not be deallocated until the [`Store`] itself is dropped.
121
- /// This makes [`Store`] unsuitable for creating an unbounded number of
122
- /// instances in it because [`Store`] will never release this memory. It's
123
- /// recommended to have a [`Store`] correspond roughly to the lifetime of a "main
124
- /// instance" that an embedding is interested in executing.
125
- ///
126
- /// ## Type parameter `T`
127
- ///
128
- /// Each [`Store`] has a type parameter `T` associated with it. This `T`
129
- /// represents state defined by the host. This state will be accessible through
130
- /// the [`Caller`](crate::Caller) type that host-defined functions get access
131
- /// to. This `T` is suitable for storing `Store`-specific information which
132
- /// imported functions may want access to.
133
- ///
134
- /// The data `T` can be accessed through methods like [`Store::data`] and
135
- /// [`Store::data_mut`].
136
- ///
137
- /// ## Stores, contexts, oh my
138
- ///
139
- /// Most methods in Wasmtime take something of the form
140
- /// [`AsContext`](crate::AsContext) or [`AsContextMut`](crate::AsContextMut) as
141
- /// the first argument. These two traits allow ergonomically passing in the
142
- /// context you currently have to any method. The primary two sources of
143
- /// contexts are:
144
- ///
145
- /// * `Store<T>`
146
- /// * `Caller<'_, T>`
147
- ///
148
- /// corresponding to what you create and what you have access to in a host
149
- /// function. You can also explicitly acquire a [`StoreContext`] or
150
- /// [`StoreContextMut`] and pass that around as well.
151
- ///
152
- /// Note that all methods on [`Store`] are mirrored onto [`StoreContext`],
153
- /// [`StoreContextMut`], and [`Caller`](crate::Caller). This way no matter what
154
- /// form of context you have you can call various methods, create objects, etc.
155
- ///
156
- /// ## Stores and `Default`
157
- ///
158
- /// You can create a store with default configuration settings using
159
- /// `Store::default()`. This will create a brand new [`Engine`] with default
160
- /// configuration (see [`Config`](crate::Config) for more information).
161
- pub struct Store<T> {
162
- // for comments about `ManuallyDrop`, see `Store::into_data`
163
- inner: ManuallyDrop<Box<StoreInner<T>>>,
164
- }
165
-
166
- #[derive(Copy, Clone, Debug)]
167
- /// Passed to the argument of [`Store::call_hook`] to indicate a state transition in
168
- /// the WebAssembly VM.
169
- pub enum CallHook {
170
- /// Indicates the VM is calling a WebAssembly function, from the host.
171
- CallingWasm,
172
- /// Indicates the VM is returning from a WebAssembly function, to the host.
173
- ReturningFromWasm,
174
- /// Indicates the VM is calling a host function, from WebAssembly.
175
- CallingHost,
176
- /// Indicates the VM is returning from a host function, to WebAssembly.
177
- ReturningFromHost,
178
- }
179
-
180
- impl CallHook {
181
- /// Indicates the VM is entering host code (exiting WebAssembly code)
182
- pub fn entering_host(&self) -> bool {
183
- match self {
184
- CallHook::ReturningFromWasm | CallHook::CallingHost => true,
185
- _ => false,
186
- }
187
- }
188
- /// Indicates the VM is exiting host code (entering WebAssembly code)
189
- pub fn exiting_host(&self) -> bool {
190
- match self {
191
- CallHook::ReturningFromHost | CallHook::CallingWasm => true,
192
- _ => false,
193
- }
194
- }
195
- }
196
-
197
- /// Internal contents of a `Store<T>` that live on the heap.
198
- ///
199
- /// The members of this struct are those that need to be generic over `T`, the
200
- /// store's internal type storage. Otherwise all things that don't rely on `T`
201
- /// should go into `StoreOpaque`.
202
- pub struct StoreInner<T> {
203
- /// Generic metadata about the store that doesn't need access to `T`.
204
- inner: StoreOpaque,
205
-
206
- limiter: Option<ResourceLimiterInner<T>>,
207
- call_hook: Option<CallHookInner<T>>,
208
- epoch_deadline_behavior:
209
- Option<Box<dyn FnMut(StoreContextMut<T>) -> Result<UpdateDeadline> + Send + Sync>>,
210
- // for comments about `ManuallyDrop`, see `Store::into_data`
211
- data: ManuallyDrop<T>,
212
- }
213
-
214
- enum ResourceLimiterInner<T> {
215
- Sync(Box<dyn FnMut(&mut T) -> &mut (dyn crate::ResourceLimiter) + Send + Sync>),
216
- #[cfg(feature = "async")]
217
- Async(Box<dyn FnMut(&mut T) -> &mut (dyn crate::ResourceLimiterAsync) + Send + Sync>),
218
- }
219
-
220
- /// An object that can take callbacks when the runtime enters or exits hostcalls.
221
- #[cfg(feature = "async")]
222
- #[async_trait::async_trait]
223
- pub trait CallHookHandler<T>: Send {
224
- /// A callback to run when wasmtime is about to enter a host call, or when about to
225
- /// exit the hostcall.
226
- async fn handle_call_event(&self, t: &mut T, ch: CallHook) -> Result<()>;
227
- }
228
-
229
- enum CallHookInner<T> {
230
- Sync(Box<dyn FnMut(&mut T, CallHook) -> Result<()> + Send + Sync>),
231
- #[cfg(feature = "async")]
232
- Async(Box<dyn CallHookHandler<T> + Send + Sync>),
233
- }
234
-
235
- /// What to do after returning from a callback when the engine epoch reaches
236
- /// the deadline for a Store during execution of a function using that store.
237
- pub enum UpdateDeadline {
238
- /// Extend the deadline by the specified number of ticks.
239
- Continue(u64),
240
- /// Extend the deadline by the specified number of ticks after yielding to
241
- /// the async executor loop. This can only be used with an async [`Store`]
242
- /// configured via [`Config::async_support`](crate::Config::async_support).
243
- #[cfg(feature = "async")]
244
- Yield(u64),
245
- }
246
-
247
- // Forward methods on `StoreOpaque` to also being on `StoreInner<T>`
248
- impl<T> Deref for StoreInner<T> {
249
- type Target = StoreOpaque;
250
- fn deref(&self) -> &Self::Target {
251
- &self.inner
252
- }
253
- }
254
-
255
- impl<T> DerefMut for StoreInner<T> {
256
- fn deref_mut(&mut self) -> &mut Self::Target {
257
- &mut self.inner
258
- }
259
- }
260
-
261
- /// Monomorphic storage for a `Store<T>`.
262
- ///
263
- /// This structure contains the bulk of the metadata about a `Store`. This is
264
- /// used internally in Wasmtime when dependence on the `T` of `Store<T>` isn't
265
- /// necessary, allowing code to be monomorphic and compiled into the `wasmtime`
266
- /// crate itself.
267
- pub struct StoreOpaque {
268
- // This `StoreOpaque` structure has references to itself. These aren't
269
- // immediately evident, however, so we need to tell the compiler that it
270
- // contains self-references. This notably suppresses `noalias` annotations
271
- // when this shows up in compiled code because types of this structure do
272
- // indeed alias itself. An example of this is `default_callee` holds a
273
- // `*mut dyn Store` to the address of this `StoreOpaque` itself, indeed
274
- // aliasing!
275
- //
276
- // It's somewhat unclear to me at this time if this is 100% sufficient to
277
- // get all the right codegen in all the right places. For example does
278
- // `Store` need to internally contain a `Pin<Box<StoreInner<T>>>`? Do the
279
- // contexts need to contain `Pin<&mut StoreInner<T>>`? I'm not familiar
280
- // enough with `Pin` to understand if it's appropriate here (we do, for
281
- // example want to allow movement in and out of `data: T`, just not movement
282
- // of most of the other members). It's also not clear if using `Pin` in a
283
- // few places buys us much other than a bunch of `unsafe` that we already
284
- // sort of hand-wave away.
285
- //
286
- // In any case this seems like a good mid-ground for now where we're at
287
- // least telling the compiler something about all the aliasing happening
288
- // within a `Store`.
289
- _marker: marker::PhantomPinned,
290
-
291
- engine: Engine,
292
- runtime_limits: VMRuntimeLimits,
293
- instances: Vec<StoreInstance>,
294
- #[cfg(feature = "component-model")]
295
- num_component_instances: usize,
296
- signal_handler: Option<Box<SignalHandler<'static>>>,
297
- externref_activations_table: VMExternRefActivationsTable,
298
- modules: ModuleRegistry,
299
- func_refs: FuncRefs,
300
- host_globals: Vec<StoreBox<VMHostGlobalContext>>,
301
-
302
- // Numbers of resources instantiated in this store, and their limits
303
- instance_count: usize,
304
- instance_limit: usize,
305
- memory_count: usize,
306
- memory_limit: usize,
307
- table_count: usize,
308
- table_limit: usize,
309
- #[cfg(feature = "async")]
310
- async_state: AsyncState,
311
- // If fuel_yield_interval is enabled, then we store the remaining fuel (that isn't in
312
- // runtime_limits) here. The total amount of fuel is the runtime limits and reserve added
313
- // together. Then when we run out of gas, we inject the yield amount from the reserve
314
- // until the reserve is empty.
315
- fuel_reserve: u64,
316
- fuel_yield_interval: Option<NonZeroU64>,
317
- /// Indexed data within this `Store`, used to store information about
318
- /// globals, functions, memories, etc.
319
- ///
320
- /// Note that this is `ManuallyDrop` because it needs to be dropped before
321
- /// `rooted_host_funcs` below. This structure contains pointers which are
322
- /// otherwise kept alive by the `Arc` references in `rooted_host_funcs`.
323
- store_data: ManuallyDrop<StoreData>,
324
- default_caller: InstanceHandle,
325
-
326
- /// Used to optimzed wasm->host calls when the host function is defined with
327
- /// `Func::new` to avoid allocating a new vector each time a function is
328
- /// called.
329
- hostcall_val_storage: Vec<Val>,
330
- /// Same as `hostcall_val_storage`, but for the direction of the host
331
- /// calling wasm.
332
- wasm_val_raw_storage: Vec<ValRaw>,
333
-
334
- /// A list of lists of definitions which have been used to instantiate
335
- /// within this `Store`.
336
- ///
337
- /// Note that not all instantiations end up pushing to this list. At the
338
- /// time of this writing only the `InstancePre<T>` type will push to this
339
- /// list. Pushes to this list are typically accompanied with
340
- /// `HostFunc::to_func_store_rooted` to clone an `Arc` here once which
341
- /// preserves a strong reference to the `Arc` for each `HostFunc` stored
342
- /// within the list of `Definition`s.
343
- ///
344
- /// Note that this is `ManuallyDrop` as it must be dropped after
345
- /// `store_data` above, where the function pointers are stored.
346
- rooted_host_funcs: ManuallyDrop<Vec<Arc<[Definition]>>>,
347
-
348
- /// Keep track of what protection key is being used during allocation so
349
- /// that the right memory pages can be enabled when entering WebAssembly
350
- /// guest code.
351
- pkey: Option<ProtectionKey>,
352
-
353
- /// Runtime state for components used in the handling of resources, borrow,
354
- /// and calls. These also interact with the `ResourceAny` type and its
355
- /// internal representation.
356
- #[cfg(feature = "component-model")]
357
- component_host_table: wasmtime_runtime::component::ResourceTable,
358
- #[cfg(feature = "component-model")]
359
- component_calls: wasmtime_runtime::component::CallContexts,
360
- }
361
-
362
- #[cfg(feature = "async")]
363
- struct AsyncState {
364
- current_suspend: UnsafeCell<*const wasmtime_fiber::Suspend<Result<()>, (), Result<()>>>,
365
- current_poll_cx: UnsafeCell<*mut Context<'static>>,
366
- }
367
-
368
- // Lots of pesky unsafe cells and pointers in this structure. This means we need
369
- // to declare explicitly that we use this in a threadsafe fashion.
370
- #[cfg(feature = "async")]
371
- unsafe impl Send for AsyncState {}
372
- #[cfg(feature = "async")]
373
- unsafe impl Sync for AsyncState {}
374
-
375
- /// An RAII type to automatically mark a region of code as unsafe for GC.
376
- pub(crate) struct AutoAssertNoGc<T>
377
- where
378
- T: std::ops::DerefMut<Target = StoreOpaque>,
379
- {
380
- #[cfg(debug_assertions)]
381
- prev_okay: bool,
382
- store: T,
383
- }
384
-
385
- impl<T> AutoAssertNoGc<T>
386
- where
387
- T: std::ops::DerefMut<Target = StoreOpaque>,
388
- {
389
- pub fn new(mut store: T) -> Self {
390
- let _ = &mut store;
391
- #[cfg(debug_assertions)]
392
- {
393
- let prev_okay = store.externref_activations_table.set_gc_okay(false);
394
- return AutoAssertNoGc { store, prev_okay };
395
- }
396
- #[cfg(not(debug_assertions))]
397
- {
398
- return AutoAssertNoGc { store };
399
- }
400
- }
401
- }
402
-
403
- impl<T> std::ops::Deref for AutoAssertNoGc<T>
404
- where
405
- T: std::ops::DerefMut<Target = StoreOpaque>,
406
- {
407
- type Target = T;
408
-
409
- fn deref(&self) -> &Self::Target {
410
- &self.store
411
- }
412
- }
413
-
414
- impl<T> std::ops::DerefMut for AutoAssertNoGc<T>
415
- where
416
- T: std::ops::DerefMut<Target = StoreOpaque>,
417
- {
418
- fn deref_mut(&mut self) -> &mut Self::Target {
419
- &mut self.store
420
- }
421
- }
422
-
423
- impl<T> Drop for AutoAssertNoGc<T>
424
- where
425
- T: std::ops::DerefMut<Target = StoreOpaque>,
426
- {
427
- fn drop(&mut self) {
428
- #[cfg(debug_assertions)]
429
- {
430
- self.store
431
- .externref_activations_table
432
- .set_gc_okay(self.prev_okay);
433
- }
434
- }
435
- }
436
-
437
- /// Used to associate instances with the store.
438
- ///
439
- /// This is needed to track if the instance was allocated explicitly with the on-demand
440
- /// instance allocator.
441
- struct StoreInstance {
442
- handle: InstanceHandle,
443
- kind: StoreInstanceKind,
444
- }
445
-
446
- enum StoreInstanceKind {
447
- /// An actual, non-dummy instance.
448
- Real {
449
- /// The id of this instance's module inside our owning store's
450
- /// `ModuleRegistry`.
451
- module_id: RegisteredModuleId,
452
- },
453
-
454
- /// This is a dummy instance that is just an implementation detail for
455
- /// something else. For example, host-created memories internally create a
456
- /// dummy instance.
457
- ///
458
- /// Regardless of the configured instance allocator for the engine, dummy
459
- /// instances always use the on-demand allocator to deallocate the instance.
460
- Dummy,
461
- }
462
-
463
- impl<T> Store<T> {
464
- /// Creates a new [`Store`] to be associated with the given [`Engine`] and
465
- /// `data` provided.
466
- ///
467
- /// The created [`Store`] will place no additional limits on the size of
468
- /// linear memories or tables at runtime. Linear memories and tables will
469
- /// be allowed to grow to any upper limit specified in their definitions.
470
- /// The store will limit the number of instances, linear memories, and
471
- /// tables created to 10,000. This can be overridden with the
472
- /// [`Store::limiter`] configuration method.
473
- pub fn new(engine: &Engine, data: T) -> Self {
474
- let pkey = engine.allocator().next_available_pkey();
475
- let mut inner = Box::new(StoreInner {
476
- inner: StoreOpaque {
477
- _marker: marker::PhantomPinned,
478
- engine: engine.clone(),
479
- runtime_limits: Default::default(),
480
- instances: Vec::new(),
481
- #[cfg(feature = "component-model")]
482
- num_component_instances: 0,
483
- signal_handler: None,
484
- externref_activations_table: VMExternRefActivationsTable::new(),
485
- modules: ModuleRegistry::default(),
486
- func_refs: FuncRefs::default(),
487
- host_globals: Vec::new(),
488
- instance_count: 0,
489
- instance_limit: crate::DEFAULT_INSTANCE_LIMIT,
490
- memory_count: 0,
491
- memory_limit: crate::DEFAULT_MEMORY_LIMIT,
492
- table_count: 0,
493
- table_limit: crate::DEFAULT_TABLE_LIMIT,
494
- #[cfg(feature = "async")]
495
- async_state: AsyncState {
496
- current_suspend: UnsafeCell::new(ptr::null()),
497
- current_poll_cx: UnsafeCell::new(ptr::null_mut()),
498
- },
499
- fuel_reserve: 0,
500
- fuel_yield_interval: None,
501
- store_data: ManuallyDrop::new(StoreData::new()),
502
- default_caller: InstanceHandle::null(),
503
- hostcall_val_storage: Vec::new(),
504
- wasm_val_raw_storage: Vec::new(),
505
- rooted_host_funcs: ManuallyDrop::new(Vec::new()),
506
- pkey,
507
- #[cfg(feature = "component-model")]
508
- component_host_table: Default::default(),
509
- #[cfg(feature = "component-model")]
510
- component_calls: Default::default(),
511
- },
512
- limiter: None,
513
- call_hook: None,
514
- epoch_deadline_behavior: None,
515
- data: ManuallyDrop::new(data),
516
- });
517
-
518
- // Wasmtime uses the callee argument to host functions to learn about
519
- // the original pointer to the `Store` itself, allowing it to
520
- // reconstruct a `StoreContextMut<T>`. When we initially call a `Func`,
521
- // however, there's no "callee" to provide. To fix this we allocate a
522
- // single "default callee" for the entire `Store`. This is then used as
523
- // part of `Func::call` to guarantee that the `callee: *mut VMContext`
524
- // is never null.
525
- inner.default_caller = {
526
- let module = Arc::new(wasmtime_environ::Module::default());
527
- let shim = BareModuleInfo::empty(module).into_traitobj();
528
- let allocator = OnDemandInstanceAllocator::default();
529
- allocator
530
- .validate_module(shim.module(), shim.offsets())
531
- .unwrap();
532
- let mut instance = unsafe {
533
- allocator
534
- .allocate_module(InstanceAllocationRequest {
535
- host_state: Box::new(()),
536
- imports: Default::default(),
537
- store: StorePtr::empty(),
538
- runtime_info: &shim,
539
- wmemcheck: engine.config().wmemcheck,
540
- pkey: None,
541
- })
542
- .expect("failed to allocate default callee")
543
- };
544
-
545
- // Note the erasure of the lifetime here into `'static`, so in
546
- // general usage of this trait object must be strictly bounded to
547
- // the `Store` itself, and is a variant that we have to maintain
548
- // throughout Wasmtime.
549
- unsafe {
550
- let traitobj = std::mem::transmute::<
551
- *mut (dyn wasmtime_runtime::Store + '_),
552
- *mut (dyn wasmtime_runtime::Store + 'static),
553
- >(&mut *inner);
554
- instance.set_store(traitobj);
555
- }
556
- instance
557
- };
558
-
559
- Self {
560
- inner: ManuallyDrop::new(inner),
561
- }
562
- }
563
-
564
- /// Access the underlying data owned by this `Store`.
565
- #[inline]
566
- pub fn data(&self) -> &T {
567
- self.inner.data()
568
- }
569
-
570
- /// Access the underlying data owned by this `Store`.
571
- #[inline]
572
- pub fn data_mut(&mut self) -> &mut T {
573
- self.inner.data_mut()
574
- }
575
-
576
- /// Consumes this [`Store`], destroying it, and returns the underlying data.
577
- pub fn into_data(mut self) -> T {
578
- // This is an unsafe operation because we want to avoid having a runtime
579
- // check or boolean for whether the data is actually contained within a
580
- // `Store`. The data itself is stored as `ManuallyDrop` since we're
581
- // manually managing the memory here, and there's also a `ManuallyDrop`
582
- // around the `Box<StoreInner<T>>`. The way this works though is a bit
583
- // tricky, so here's how things get dropped appropriately:
584
- //
585
- // * When a `Store<T>` is normally dropped, the custom destructor for
586
- // `Store<T>` will drop `T`, then the `self.inner` field. The
587
- // rustc-glue destructor runs for `Box<StoreInner<T>>` which drops
588
- // `StoreInner<T>`. This cleans up all internal fields and doesn't
589
- // touch `T` because it's wrapped in `ManuallyDrop`.
590
- //
591
- // * When calling this method we skip the top-level destructor for
592
- // `Store<T>` with `mem::forget`. This skips both the destructor for
593
- // `T` and the destructor for `StoreInner<T>`. We do, however, run the
594
- // destructor for `Box<StoreInner<T>>` which, like above, will skip
595
- // the destructor for `T` since it's `ManuallyDrop`.
596
- //
597
- // In both cases all the other fields of `StoreInner<T>` should all get
598
- // dropped, and the manual management of destructors is basically
599
- // between this method and `Drop for Store<T>`. Note that this also
600
- // means that `Drop for StoreInner<T>` cannot access `self.data`, so
601
- // there is a comment indicating this as well.
602
- unsafe {
603
- let mut inner = ManuallyDrop::take(&mut self.inner);
604
- std::mem::forget(self);
605
- ManuallyDrop::take(&mut inner.data)
606
- }
607
- }
608
-
609
- /// Configures the [`ResourceLimiter`] used to limit resource creation
610
- /// within this [`Store`].
611
- ///
612
- /// Whenever resources such as linear memory, tables, or instances are
613
- /// allocated the `limiter` specified here is invoked with the store's data
614
- /// `T` and the returned [`ResourceLimiter`] is used to limit the operation
615
- /// being allocated. The returned [`ResourceLimiter`] is intended to live
616
- /// within the `T` itself, for example by storing a
617
- /// [`StoreLimits`](crate::StoreLimits).
618
- ///
619
- /// Note that this limiter is only used to limit the creation/growth of
620
- /// resources in the future, this does not retroactively attempt to apply
621
- /// limits to the [`Store`].
622
- ///
623
- /// # Examples
624
- ///
625
- /// ```
626
- /// use wasmtime::*;
627
- ///
628
- /// struct MyApplicationState {
629
- /// my_state: u32,
630
- /// limits: StoreLimits,
631
- /// }
632
- ///
633
- /// let engine = Engine::default();
634
- /// let my_state = MyApplicationState {
635
- /// my_state: 42,
636
- /// limits: StoreLimitsBuilder::new()
637
- /// .memory_size(1 << 20 /* 1 MB */)
638
- /// .instances(2)
639
- /// .build(),
640
- /// };
641
- /// let mut store = Store::new(&engine, my_state);
642
- /// store.limiter(|state| &mut state.limits);
643
- ///
644
- /// // Creation of smaller memories is allowed
645
- /// Memory::new(&mut store, MemoryType::new(1, None)).unwrap();
646
- ///
647
- /// // Creation of a larger memory, however, will exceed the 1MB limit we've
648
- /// // configured
649
- /// assert!(Memory::new(&mut store, MemoryType::new(1000, None)).is_err());
650
- ///
651
- /// // The number of instances in this store is limited to 2, so the third
652
- /// // instance here should fail.
653
- /// let module = Module::new(&engine, "(module)").unwrap();
654
- /// assert!(Instance::new(&mut store, &module, &[]).is_ok());
655
- /// assert!(Instance::new(&mut store, &module, &[]).is_ok());
656
- /// assert!(Instance::new(&mut store, &module, &[]).is_err());
657
- /// ```
658
- ///
659
- /// [`ResourceLimiter`]: crate::ResourceLimiter
660
- pub fn limiter(
661
- &mut self,
662
- mut limiter: impl FnMut(&mut T) -> &mut (dyn crate::ResourceLimiter) + Send + Sync + 'static,
663
- ) {
664
- // Apply the limits on instances, tables, and memory given by the limiter:
665
- let inner = &mut self.inner;
666
- let (instance_limit, table_limit, memory_limit) = {
667
- let l = limiter(&mut inner.data);
668
- (l.instances(), l.tables(), l.memories())
669
- };
670
- let innermost = &mut inner.inner;
671
- innermost.instance_limit = instance_limit;
672
- innermost.table_limit = table_limit;
673
- innermost.memory_limit = memory_limit;
674
-
675
- // Save the limiter accessor function:
676
- inner.limiter = Some(ResourceLimiterInner::Sync(Box::new(limiter)));
677
- }
678
-
679
- /// Configures the [`ResourceLimiterAsync`](crate::ResourceLimiterAsync)
680
- /// used to limit resource creation within this [`Store`].
681
- ///
682
- /// This method is an asynchronous variant of the [`Store::limiter`] method
683
- /// where the embedder can block the wasm request for more resources with
684
- /// host `async` execution of futures.
685
- ///
686
- /// By using a [`ResourceLimiterAsync`](`crate::ResourceLimiterAsync`)
687
- /// with a [`Store`], you can no longer use
688
- /// [`Memory::new`](`crate::Memory::new`),
689
- /// [`Memory::grow`](`crate::Memory::grow`),
690
- /// [`Table::new`](`crate::Table::new`), and
691
- /// [`Table::grow`](`crate::Table::grow`). Instead, you must use their
692
- /// `async` variants: [`Memory::new_async`](`crate::Memory::new_async`),
693
- /// [`Memory::grow_async`](`crate::Memory::grow_async`),
694
- /// [`Table::new_async`](`crate::Table::new_async`), and
695
- /// [`Table::grow_async`](`crate::Table::grow_async`).
696
- ///
697
- /// Note that this limiter is only used to limit the creation/growth of
698
- /// resources in the future, this does not retroactively attempt to apply
699
- /// limits to the [`Store`]. Additionally this must be used with an async
700
- /// [`Store`] configured via
701
- /// [`Config::async_support`](crate::Config::async_support).
702
- #[cfg(feature = "async")]
703
- #[cfg_attr(nightlydoc, doc(cfg(feature = "async")))]
704
- pub fn limiter_async(
705
- &mut self,
706
- mut limiter: impl FnMut(&mut T) -> &mut (dyn crate::ResourceLimiterAsync)
707
- + Send
708
- + Sync
709
- + 'static,
710
- ) {
711
- debug_assert!(self.inner.async_support());
712
- // Apply the limits on instances, tables, and memory given by the limiter:
713
- let inner = &mut self.inner;
714
- let (instance_limit, table_limit, memory_limit) = {
715
- let l = limiter(&mut inner.data);
716
- (l.instances(), l.tables(), l.memories())
717
- };
718
- let innermost = &mut inner.inner;
719
- innermost.instance_limit = instance_limit;
720
- innermost.table_limit = table_limit;
721
- innermost.memory_limit = memory_limit;
722
-
723
- // Save the limiter accessor function:
724
- inner.limiter = Some(ResourceLimiterInner::Async(Box::new(limiter)));
725
- }
726
-
727
- #[cfg_attr(nightlydoc, doc(cfg(feature = "async")))]
728
- /// Configures an async function that runs on calls and returns between
729
- /// WebAssembly and host code. For the non-async equivalent of this method,
730
- /// see [`Store::call_hook`].
731
- ///
732
- /// The function is passed a [`CallHook`] argument, which indicates which
733
- /// state transition the VM is making.
734
- ///
735
- /// This function's future may return a [`Trap`]. If a trap is returned
736
- /// when an import was called, it is immediately raised as-if the host
737
- /// import had returned the trap. If a trap is returned after wasm returns
738
- /// to the host then the wasm function's result is ignored and this trap is
739
- /// returned instead.
740
- ///
741
- /// After this function returns a trap, it may be called for subsequent
742
- /// returns to host or wasm code as the trap propagates to the root call.
743
- #[cfg(feature = "async")]
744
- pub fn call_hook_async(&mut self, hook: impl CallHookHandler<T> + Send + Sync + 'static) {
745
- self.inner.call_hook = Some(CallHookInner::Async(Box::new(hook)));
746
- }
747
-
748
- /// Configure a function that runs on calls and returns between WebAssembly
749
- /// and host code.
750
- ///
751
- /// The function is passed a [`CallHook`] argument, which indicates which
752
- /// state transition the VM is making.
753
- ///
754
- /// This function may return a [`Trap`]. If a trap is returned when an
755
- /// import was called, it is immediately raised as-if the host import had
756
- /// returned the trap. If a trap is returned after wasm returns to the host
757
- /// then the wasm function's result is ignored and this trap is returned
758
- /// instead.
759
- ///
760
- /// After this function returns a trap, it may be called for subsequent returns
761
- /// to host or wasm code as the trap propagates to the root call.
762
- pub fn call_hook(
763
- &mut self,
764
- hook: impl FnMut(&mut T, CallHook) -> Result<()> + Send + Sync + 'static,
765
- ) {
766
- self.inner.call_hook = Some(CallHookInner::Sync(Box::new(hook)));
767
- }
768
-
769
- /// Returns the [`Engine`] that this store is associated with.
770
- pub fn engine(&self) -> &Engine {
771
- self.inner.engine()
772
- }
773
-
774
- /// Perform garbage collection of `ExternRef`s.
775
- ///
776
- /// Note that it is not required to actively call this function. GC will
777
- /// automatically happen when internal buffers fill up. This is provided if
778
- /// fine-grained control over the GC is desired.
779
- pub fn gc(&mut self) {
780
- self.inner.gc()
781
- }
782
-
783
- /// Returns the amount fuel in this [`Store`].
784
- ///
785
- /// If fuel consumption is not enabled via
786
- /// [`Config::consume_fuel`](crate::Config::consume_fuel) then this
787
- /// function will return `None`. Also note that fuel, if enabled, must be
788
- /// originally configured via [`Store::set_fuel`].
789
- pub fn get_fuel(&self) -> Result<u64> {
790
- self.inner.get_fuel()
791
- }
792
-
793
- /// Set the fuel to this [`Store`] for wasm to consume while executing.
794
- ///
795
- /// For this method to work fuel consumption must be enabled via
796
- /// [`Config::consume_fuel`](crate::Config::consume_fuel). By default a
797
- /// [`Store`] starts with 0 fuel for wasm to execute with (meaning it will
798
- /// immediately trap). This function must be called for the store to have
799
- /// some fuel to allow WebAssembly to execute.
800
- ///
801
- /// Most WebAssembly instructions consume 1 unit of fuel. Some
802
- /// instructions, such as `nop`, `drop`, `block`, and `loop`, consume 0
803
- /// units, as any execution cost associated with them involves other
804
- /// instructions which do consume fuel.
805
- ///
806
- /// Note that when fuel is entirely consumed it will cause wasm to trap.
807
- ///
808
- /// # Errors
809
- ///
810
- /// This function will return an error if fuel consumption is not enabled via
811
- /// [`Config::consume_fuel`](crate::Config::consume_fuel).
812
- pub fn set_fuel(&mut self, fuel: u64) -> Result<()> {
813
- self.inner.set_fuel(fuel)
814
- }
815
-
816
- /// Configures a [`Store`] to yield execution of async WebAssembly code
817
- /// periodically.
818
- ///
819
- /// When a [`Store`] is configured to consume fuel with
820
- /// [`Config::consume_fuel`](crate::Config::consume_fuel) this method will
821
- /// configure WebAssembly to be suspended and control will be yielded back to the
822
- /// caller every `interval` units of fuel consumed. This is only suitable with use of
823
- /// a store associated with an [async config](crate::Config::async_support) because
824
- /// only then are futures used and yields are possible.
825
- ///
826
- /// The purpose of this behavior is to ensure that futures which represent
827
- /// execution of WebAssembly do not execute too long inside their
828
- /// `Future::poll` method. This allows for some form of cooperative
829
- /// multitasking where WebAssembly will voluntarily yield control
830
- /// periodically (based on fuel consumption) back to the running thread.
831
- ///
832
- /// Note that futures returned by this crate will automatically flag
833
- /// themselves to get re-polled if a yield happens. This means that
834
- /// WebAssembly will continue to execute, just after giving the host an
835
- /// opportunity to do something else.
836
- ///
837
- /// The `interval` parameter indicates how much fuel should be
838
- /// consumed between yields of an async future. When fuel runs out wasm will trap.
839
- ///
840
- /// # Error
841
- ///
842
- /// This method will error if it is not called on a store associated with an [async
843
- /// config](crate::Config::async_support).
844
- pub fn fuel_async_yield_interval(&mut self, interval: Option<u64>) -> Result<()> {
845
- self.inner.fuel_async_yield_interval(interval)
846
- }
847
-
848
- /// Sets the epoch deadline to a certain number of ticks in the future.
849
- ///
850
- /// When the Wasm guest code is compiled with epoch-interruption
851
- /// instrumentation
852
- /// ([`Config::epoch_interruption()`](crate::Config::epoch_interruption)),
853
- /// and when the `Engine`'s epoch is incremented
854
- /// ([`Engine::increment_epoch()`](crate::Engine::increment_epoch))
855
- /// past a deadline, execution can be configured to either trap or
856
- /// yield and then continue.
857
- ///
858
- /// This deadline is always set relative to the current epoch:
859
- /// `delta_beyond_current` ticks in the future. The deadline can
860
- /// be set explicitly via this method, or refilled automatically
861
- /// on a yield if configured via
862
- /// [`epoch_deadline_async_yield_and_update()`](Store::epoch_deadline_async_yield_and_update). After
863
- /// this method is invoked, the deadline is reached when
864
- /// [`Engine::increment_epoch()`] has been invoked at least
865
- /// `ticks_beyond_current` times.
866
- ///
867
- /// By default a store will trap immediately with an epoch deadline of 0
868
- /// (which has always "elapsed"). This method is required to be configured
869
- /// for stores with epochs enabled to some future epoch deadline.
870
- ///
871
- /// See documentation on
872
- /// [`Config::epoch_interruption()`](crate::Config::epoch_interruption)
873
- /// for an introduction to epoch-based interruption.
874
- pub fn set_epoch_deadline(&mut self, ticks_beyond_current: u64) {
875
- self.inner.set_epoch_deadline(ticks_beyond_current);
876
- }
877
-
878
- /// Configures epoch-deadline expiration to trap.
879
- ///
880
- /// When epoch-interruption-instrumented code is executed on this
881
- /// store and the epoch deadline is reached before completion,
882
- /// with the store configured in this way, execution will
883
- /// terminate with a trap as soon as an epoch check in the
884
- /// instrumented code is reached.
885
- ///
886
- /// This behavior is the default if the store is not otherwise
887
- /// configured via
888
- /// [`epoch_deadline_trap()`](Store::epoch_deadline_trap),
889
- /// [`epoch_deadline_callback()`](Store::epoch_deadline_callback) or
890
- /// [`epoch_deadline_async_yield_and_update()`](Store::epoch_deadline_async_yield_and_update).
891
- ///
892
- /// This setting is intended to allow for coarse-grained
893
- /// interruption, but not a deterministic deadline of a fixed,
894
- /// finite interval. For deterministic interruption, see the
895
- /// "fuel" mechanism instead.
896
- ///
897
- /// Note that when this is used it's required to call
898
- /// [`Store::set_epoch_deadline`] or otherwise wasm will always immediately
899
- /// trap.
900
- ///
901
- /// See documentation on
902
- /// [`Config::epoch_interruption()`](crate::Config::epoch_interruption)
903
- /// for an introduction to epoch-based interruption.
904
- pub fn epoch_deadline_trap(&mut self) {
905
- self.inner.epoch_deadline_trap();
906
- }
907
-
908
- /// Configures epoch-deadline expiration to invoke a custom callback
909
- /// function.
910
- ///
911
- /// When epoch-interruption-instrumented code is executed on this
912
- /// store and the epoch deadline is reached before completion, the
913
- /// provided callback function is invoked.
914
- ///
915
- /// This callback should either return an [`UpdateDeadline`], or
916
- /// return an error, which will terminate execution with a trap.
917
- ///
918
- /// The [`UpdateDeadline`] is a positive number of ticks to
919
- /// add to the epoch deadline, as well as indicating what
920
- /// to do after the callback returns. If the [`Store`] is
921
- /// configured with async support, then the callback may return
922
- /// [`UpdateDeadline::Yield`] to yield to the async executor before
923
- /// updating the epoch deadline. Alternatively, the callback may
924
- /// return [`UpdateDeadline::Continue`] to update the epoch deadline
925
- /// immediately.
926
- ///
927
- /// This setting is intended to allow for coarse-grained
928
- /// interruption, but not a deterministic deadline of a fixed,
929
- /// finite interval. For deterministic interruption, see the
930
- /// "fuel" mechanism instead.
931
- ///
932
- /// See documentation on
933
- /// [`Config::epoch_interruption()`](crate::Config::epoch_interruption)
934
- /// for an introduction to epoch-based interruption.
935
- pub fn epoch_deadline_callback(
936
- &mut self,
937
- callback: impl FnMut(StoreContextMut<T>) -> Result<UpdateDeadline> + Send + Sync + 'static,
938
- ) {
939
- self.inner.epoch_deadline_callback(Box::new(callback));
940
- }
941
-
942
- #[cfg_attr(nightlydoc, doc(cfg(feature = "async")))]
943
- /// Configures epoch-deadline expiration to yield to the async
944
- /// caller and the update the deadline.
945
- ///
946
- /// When epoch-interruption-instrumented code is executed on this
947
- /// store and the epoch deadline is reached before completion,
948
- /// with the store configured in this way, execution will yield
949
- /// (the future will return `Pending` but re-awake itself for
950
- /// later execution) and, upon resuming, the store will be
951
- /// configured with an epoch deadline equal to the current epoch
952
- /// plus `delta` ticks.
953
- ///
954
- /// This setting is intended to allow for cooperative timeslicing
955
- /// of multiple CPU-bound Wasm guests in different stores, all
956
- /// executing under the control of an async executor. To drive
957
- /// this, stores should be configured to "yield and update"
958
- /// automatically with this function, and some external driver (a
959
- /// thread that wakes up periodically, or a timer
960
- /// signal/interrupt) should call
961
- /// [`Engine::increment_epoch()`](crate::Engine::increment_epoch).
962
- ///
963
- /// See documentation on
964
- /// [`Config::epoch_interruption()`](crate::Config::epoch_interruption)
965
- /// for an introduction to epoch-based interruption.
966
- #[cfg(feature = "async")]
967
- pub fn epoch_deadline_async_yield_and_update(&mut self, delta: u64) {
968
- self.inner.epoch_deadline_async_yield_and_update(delta);
969
- }
970
- }
971
-
972
- impl<'a, T> StoreContext<'a, T> {
973
- pub(crate) fn async_support(&self) -> bool {
974
- self.0.async_support()
975
- }
976
-
977
- /// Returns the underlying [`Engine`] this store is connected to.
978
- pub fn engine(&self) -> &Engine {
979
- self.0.engine()
980
- }
981
-
982
- /// Access the underlying data owned by this `Store`.
983
- ///
984
- /// Same as [`Store::data`].
985
- pub fn data(&self) -> &'a T {
986
- self.0.data()
987
- }
988
-
989
- /// Returns the remaining fuel in this store.
990
- ///
991
- /// For more information see [`Store::get_fuel`].
992
- pub fn get_fuel(&self) -> Result<u64> {
993
- self.0.get_fuel()
994
- }
995
- }
996
-
997
- impl<'a, T> StoreContextMut<'a, T> {
998
- /// Access the underlying data owned by this `Store`.
999
- ///
1000
- /// Same as [`Store::data`].
1001
- pub fn data(&self) -> &T {
1002
- self.0.data()
1003
- }
1004
-
1005
- /// Access the underlying data owned by this `Store`.
1006
- ///
1007
- /// Same as [`Store::data_mut`].
1008
- pub fn data_mut(&mut self) -> &mut T {
1009
- self.0.data_mut()
1010
- }
1011
-
1012
- /// Returns the underlying [`Engine`] this store is connected to.
1013
- pub fn engine(&self) -> &Engine {
1014
- self.0.engine()
1015
- }
1016
-
1017
- /// Perform garbage collection of `ExternRef`s.
1018
- ///
1019
- /// Same as [`Store::gc`].
1020
- pub fn gc(&mut self) {
1021
- self.0.gc()
1022
- }
1023
-
1024
- /// Returns remaining fuel in this store.
1025
- ///
1026
- /// For more information see [`Store::get_fuel`]
1027
- pub fn get_fuel(&self) -> Result<u64> {
1028
- self.0.get_fuel()
1029
- }
1030
-
1031
- /// Set the amount of fuel in this store.
1032
- ///
1033
- /// For more information see [`Store::set_fuel`]
1034
- pub fn set_fuel(&mut self, fuel: u64) -> Result<()> {
1035
- self.0.set_fuel(fuel)
1036
- }
1037
-
1038
- /// Configures this `Store` to periodically yield while executing futures.
1039
- ///
1040
- /// For more information see [`Store::fuel_async_yield_interval`]
1041
- pub fn fuel_async_yield_interval(&mut self, interval: Option<u64>) -> Result<()> {
1042
- self.0.fuel_async_yield_interval(interval)
1043
- }
1044
-
1045
- /// Sets the epoch deadline to a certain number of ticks in the future.
1046
- ///
1047
- /// For more information see [`Store::set_epoch_deadline`].
1048
- pub fn set_epoch_deadline(&mut self, ticks_beyond_current: u64) {
1049
- self.0.set_epoch_deadline(ticks_beyond_current);
1050
- }
1051
-
1052
- /// Configures epoch-deadline expiration to trap.
1053
- ///
1054
- /// For more information see [`Store::epoch_deadline_trap`].
1055
- pub fn epoch_deadline_trap(&mut self) {
1056
- self.0.epoch_deadline_trap();
1057
- }
1058
-
1059
- #[cfg_attr(nightlydoc, doc(cfg(feature = "async")))]
1060
- /// Configures epoch-deadline expiration to yield to the async
1061
- /// caller and the update the deadline.
1062
- ///
1063
- /// For more information see
1064
- /// [`Store::epoch_deadline_async_yield_and_update`].
1065
- #[cfg(feature = "async")]
1066
- pub fn epoch_deadline_async_yield_and_update(&mut self, delta: u64) {
1067
- self.0.epoch_deadline_async_yield_and_update(delta);
1068
- }
1069
- }
1070
-
1071
- impl<T> StoreInner<T> {
1072
- #[inline]
1073
- fn data(&self) -> &T {
1074
- &self.data
1075
- }
1076
-
1077
- #[inline]
1078
- fn data_mut(&mut self) -> &mut T {
1079
- &mut self.data
1080
- }
1081
-
1082
- pub fn call_hook(&mut self, s: CallHook) -> Result<()> {
1083
- if let Some(pkey) = &self.inner.pkey {
1084
- let allocator = self.engine().allocator();
1085
- match s {
1086
- CallHook::CallingWasm | CallHook::ReturningFromHost => {
1087
- allocator.restrict_to_pkey(*pkey)
1088
- }
1089
- CallHook::ReturningFromWasm | CallHook::CallingHost => allocator.allow_all_pkeys(),
1090
- }
1091
- }
1092
-
1093
- match &mut self.call_hook {
1094
- Some(CallHookInner::Sync(hook)) => hook(&mut self.data, s),
1095
-
1096
- #[cfg(feature = "async")]
1097
- Some(CallHookInner::Async(handler)) => unsafe {
1098
- Ok(self
1099
- .inner
1100
- .async_cx()
1101
- .ok_or_else(|| anyhow!("couldn't grab async_cx for call hook"))?
1102
- .block_on(handler.handle_call_event(&mut self.data, s).as_mut())??)
1103
- },
1104
-
1105
- None => Ok(()),
1106
- }
1107
- }
1108
- }
1109
-
1110
- fn get_fuel(injected_fuel: i64, fuel_reserve: u64) -> u64 {
1111
- fuel_reserve.saturating_add_signed(-injected_fuel)
1112
- }
1113
-
1114
- // Add remaining fuel from the reserve into the active fuel if there is any left.
1115
- fn refuel(
1116
- injected_fuel: &mut i64,
1117
- fuel_reserve: &mut u64,
1118
- yield_interval: Option<NonZeroU64>,
1119
- ) -> bool {
1120
- let fuel = get_fuel(*injected_fuel, *fuel_reserve);
1121
- if fuel > 0 {
1122
- set_fuel(injected_fuel, fuel_reserve, yield_interval, fuel);
1123
- true
1124
- } else {
1125
- false
1126
- }
1127
- }
1128
-
1129
- fn set_fuel(
1130
- injected_fuel: &mut i64,
1131
- fuel_reserve: &mut u64,
1132
- yield_interval: Option<NonZeroU64>,
1133
- new_fuel_amount: u64,
1134
- ) {
1135
- let interval = yield_interval.unwrap_or(NonZeroU64::MAX).get();
1136
- // If we're yielding periodically we only store the "active" amount of fuel into consumed_ptr
1137
- // for the VM to use.
1138
- let injected = std::cmp::min(interval, new_fuel_amount);
1139
- // Fuel in the VM is stored as an i64, so we have to cap the amount of fuel we inject into the
1140
- // VM at once to be i64 range.
1141
- let injected = std::cmp::min(injected, i64::MAX as u64);
1142
- // Add whatever is left over after injection to the reserve for later use.
1143
- *fuel_reserve = new_fuel_amount - injected;
1144
- // Within the VM we increment to count fuel, so inject a negative amount. The VM will halt when
1145
- // this counter is positive.
1146
- *injected_fuel = -(injected as i64);
1147
- }
1148
-
1149
- #[doc(hidden)]
1150
- impl StoreOpaque {
1151
- pub fn id(&self) -> StoreId {
1152
- self.store_data.id()
1153
- }
1154
-
1155
- pub fn bump_resource_counts(&mut self, module: &Module) -> Result<()> {
1156
- fn bump(slot: &mut usize, max: usize, amt: usize, desc: &str) -> Result<()> {
1157
- let new = slot.saturating_add(amt);
1158
- if new > max {
1159
- bail!(
1160
- "resource limit exceeded: {} count too high at {}",
1161
- desc,
1162
- new
1163
- );
1164
- }
1165
- *slot = new;
1166
- Ok(())
1167
- }
1168
-
1169
- let module = module.env_module();
1170
- let memories = module.memory_plans.len() - module.num_imported_memories;
1171
- let tables = module.table_plans.len() - module.num_imported_tables;
1172
-
1173
- bump(&mut self.instance_count, self.instance_limit, 1, "instance")?;
1174
- bump(
1175
- &mut self.memory_count,
1176
- self.memory_limit,
1177
- memories,
1178
- "memory",
1179
- )?;
1180
- bump(&mut self.table_count, self.table_limit, tables, "table")?;
1181
-
1182
- Ok(())
1183
- }
1184
-
1185
- #[inline]
1186
- pub fn async_support(&self) -> bool {
1187
- cfg!(feature = "async") && self.engine().config().async_support
1188
- }
1189
-
1190
- #[inline]
1191
- pub fn engine(&self) -> &Engine {
1192
- &self.engine
1193
- }
1194
-
1195
- #[inline]
1196
- pub fn store_data(&self) -> &StoreData {
1197
- &self.store_data
1198
- }
1199
-
1200
- #[inline]
1201
- pub fn store_data_mut(&mut self) -> &mut StoreData {
1202
- &mut self.store_data
1203
- }
1204
-
1205
- #[inline]
1206
- pub(crate) fn modules(&self) -> &ModuleRegistry {
1207
- &self.modules
1208
- }
1209
-
1210
- #[inline]
1211
- pub(crate) fn modules_mut(&mut self) -> &mut ModuleRegistry {
1212
- &mut self.modules
1213
- }
1214
-
1215
- pub(crate) fn func_refs(&mut self) -> &mut FuncRefs {
1216
- &mut self.func_refs
1217
- }
1218
-
1219
- pub(crate) fn fill_func_refs(&mut self) {
1220
- self.func_refs.fill(&mut self.modules);
1221
- }
1222
-
1223
- pub(crate) fn push_instance_pre_func_refs(&mut self, func_refs: Arc<[VMFuncRef]>) {
1224
- self.func_refs.push_instance_pre_func_refs(func_refs);
1225
- }
1226
-
1227
- pub(crate) fn host_globals(&mut self) -> &mut Vec<StoreBox<VMHostGlobalContext>> {
1228
- &mut self.host_globals
1229
- }
1230
-
1231
- pub fn module_for_instance(&self, instance: InstanceId) -> Option<&'_ Module> {
1232
- match self.instances[instance.0].kind {
1233
- StoreInstanceKind::Dummy => None,
1234
- StoreInstanceKind::Real { module_id } => {
1235
- let module = self
1236
- .modules()
1237
- .lookup_module_by_id(module_id)
1238
- .expect("should always have a registered module for real instances");
1239
- Some(module)
1240
- }
1241
- }
1242
- }
1243
-
1244
- pub unsafe fn add_instance(
1245
- &mut self,
1246
- handle: InstanceHandle,
1247
- module_id: RegisteredModuleId,
1248
- ) -> InstanceId {
1249
- self.instances.push(StoreInstance {
1250
- handle: handle.clone(),
1251
- kind: StoreInstanceKind::Real { module_id },
1252
- });
1253
- InstanceId(self.instances.len() - 1)
1254
- }
1255
-
1256
- /// Add a dummy instance that to the store.
1257
- ///
1258
- /// These are instances that are just implementation details of something
1259
- /// else (e.g. host-created memories that are not actually defined in any
1260
- /// Wasm module) and therefore shouldn't show up in things like core dumps.
1261
- pub unsafe fn add_dummy_instance(&mut self, handle: InstanceHandle) -> InstanceId {
1262
- self.instances.push(StoreInstance {
1263
- handle: handle.clone(),
1264
- kind: StoreInstanceKind::Dummy,
1265
- });
1266
- InstanceId(self.instances.len() - 1)
1267
- }
1268
-
1269
- pub fn instance(&self, id: InstanceId) -> &InstanceHandle {
1270
- &self.instances[id.0].handle
1271
- }
1272
-
1273
- pub fn instance_mut(&mut self, id: InstanceId) -> &mut InstanceHandle {
1274
- &mut self.instances[id.0].handle
1275
- }
1276
-
1277
- /// Get all instances (ignoring dummy instances) within this store.
1278
- pub fn all_instances<'a>(&'a mut self) -> impl ExactSizeIterator<Item = Instance> + 'a {
1279
- let instances = self
1280
- .instances
1281
- .iter()
1282
- .enumerate()
1283
- .filter_map(|(idx, inst)| {
1284
- let id = InstanceId::from_index(idx);
1285
- if let StoreInstanceKind::Dummy = inst.kind {
1286
- None
1287
- } else {
1288
- Some(InstanceData::from_id(id))
1289
- }
1290
- })
1291
- .collect::<Vec<_>>();
1292
- instances
1293
- .into_iter()
1294
- .map(|i| Instance::from_wasmtime(i, self))
1295
- }
1296
-
1297
- /// Get all memories (host- or Wasm-defined) within this store.
1298
- pub fn all_memories<'a>(&'a mut self) -> impl Iterator<Item = Memory> + 'a {
1299
- // NB: Host-created memories have dummy instances. Therefore, we can get
1300
- // all memories in the store by iterating over all instances (including
1301
- // dummy instances) and getting each of their defined memories.
1302
- let mems = self
1303
- .instances
1304
- .iter_mut()
1305
- .flat_map(|instance| instance.handle.defined_memories())
1306
- .collect::<Vec<_>>();
1307
- mems.into_iter()
1308
- .map(|memory| unsafe { Memory::from_wasmtime_memory(memory, self) })
1309
- }
1310
-
1311
- /// Iterate over all globals (host- or Wasm-defined) within this store.
1312
- pub fn all_globals<'a>(&'a mut self) -> impl Iterator<Item = Global> + 'a {
1313
- unsafe {
1314
- // First gather all the host-created globals.
1315
- let mut globals = self
1316
- .host_globals()
1317
- .iter()
1318
- .map(|global| ExportGlobal {
1319
- definition: &mut (*global.get()).global as *mut _,
1320
- global: (*global.get()).ty.to_wasm_type(),
1321
- })
1322
- .collect::<Vec<_>>();
1323
-
1324
- // Then iterate over all instances and yield each of their defined
1325
- // globals.
1326
- globals.extend(
1327
- self.instances.iter_mut().flat_map(|instance| {
1328
- instance.handle.defined_globals().map(|(_i, global)| global)
1329
- }),
1330
- );
1331
-
1332
- globals
1333
- .into_iter()
1334
- .map(|g| Global::from_wasmtime_global(g, self))
1335
- }
1336
- }
1337
-
1338
- #[cfg_attr(not(target_os = "linux"), allow(dead_code))] // not used on all platforms
1339
- pub fn set_signal_handler(&mut self, handler: Option<Box<SignalHandler<'static>>>) {
1340
- self.signal_handler = handler;
1341
- }
1342
-
1343
- #[inline]
1344
- pub fn runtime_limits(&self) -> &VMRuntimeLimits {
1345
- &self.runtime_limits
1346
- }
1347
-
1348
- #[inline]
1349
- pub fn externref_activations_table(&mut self) -> &mut VMExternRefActivationsTable {
1350
- &mut self.externref_activations_table
1351
- }
1352
-
1353
- pub fn gc(&mut self) {
1354
- // For this crate's API, we ensure that `set_stack_canary` invariants
1355
- // are upheld for all host-->Wasm calls.
1356
- unsafe {
1357
- wasmtime_runtime::gc(
1358
- self.runtime_limits(),
1359
- &self.modules,
1360
- &mut self.externref_activations_table,
1361
- )
1362
- }
1363
- }
1364
-
1365
- /// Yields the async context, assuming that we are executing on a fiber and
1366
- /// that fiber is not in the process of dying. This function will return
1367
- /// None in the latter case (the fiber is dying), and panic if
1368
- /// `async_support()` is false.
1369
- #[cfg(feature = "async")]
1370
- #[inline]
1371
- pub fn async_cx(&self) -> Option<AsyncCx> {
1372
- debug_assert!(self.async_support());
1373
-
1374
- let poll_cx_box_ptr = self.async_state.current_poll_cx.get();
1375
- if poll_cx_box_ptr.is_null() {
1376
- return None;
1377
- }
1378
-
1379
- let poll_cx_inner_ptr = unsafe { *poll_cx_box_ptr };
1380
- if poll_cx_inner_ptr.is_null() {
1381
- return None;
1382
- }
1383
-
1384
- Some(AsyncCx {
1385
- current_suspend: self.async_state.current_suspend.get(),
1386
- current_poll_cx: poll_cx_box_ptr,
1387
- })
1388
- }
1389
-
1390
- pub fn get_fuel(&self) -> Result<u64> {
1391
- anyhow::ensure!(
1392
- self.engine().config().tunables.consume_fuel,
1393
- "fuel is not configured in this store"
1394
- );
1395
- let injected_fuel = unsafe { *self.runtime_limits.fuel_consumed.get() };
1396
- Ok(get_fuel(injected_fuel, self.fuel_reserve))
1397
- }
1398
-
1399
- fn refuel(&mut self) -> bool {
1400
- let injected_fuel = unsafe { &mut *self.runtime_limits.fuel_consumed.get() };
1401
- refuel(
1402
- injected_fuel,
1403
- &mut self.fuel_reserve,
1404
- self.fuel_yield_interval,
1405
- )
1406
- }
1407
-
1408
- pub fn set_fuel(&mut self, fuel: u64) -> Result<()> {
1409
- anyhow::ensure!(
1410
- self.engine().config().tunables.consume_fuel,
1411
- "fuel is not configured in this store"
1412
- );
1413
- let injected_fuel = unsafe { &mut *self.runtime_limits.fuel_consumed.get() };
1414
- set_fuel(
1415
- injected_fuel,
1416
- &mut self.fuel_reserve,
1417
- self.fuel_yield_interval,
1418
- fuel,
1419
- );
1420
- Ok(())
1421
- }
1422
-
1423
- pub fn fuel_async_yield_interval(&mut self, interval: Option<u64>) -> Result<()> {
1424
- anyhow::ensure!(
1425
- self.engine().config().tunables.consume_fuel,
1426
- "fuel is not configured in this store"
1427
- );
1428
- anyhow::ensure!(
1429
- self.engine().config().async_support,
1430
- "async support is not configured in this store"
1431
- );
1432
- anyhow::ensure!(
1433
- interval != Some(0),
1434
- "fuel_async_yield_interval must not be 0"
1435
- );
1436
- self.fuel_yield_interval = interval.and_then(|i| NonZeroU64::new(i));
1437
- // Reset the fuel active + reserve states by resetting the amount.
1438
- self.set_fuel(self.get_fuel()?)
1439
- }
1440
-
1441
- /// Yields execution to the caller on out-of-gas or epoch interruption.
1442
- ///
1443
- /// This only works on async futures and stores, and assumes that we're
1444
- /// executing on a fiber. This will yield execution back to the caller once.
1445
- #[cfg(feature = "async")]
1446
- fn async_yield_impl(&mut self) -> Result<()> {
1447
- // Small future that yields once and then returns ()
1448
- #[derive(Default)]
1449
- struct Yield {
1450
- yielded: bool,
1451
- }
1452
-
1453
- impl Future for Yield {
1454
- type Output = ();
1455
-
1456
- fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<()> {
1457
- if self.yielded {
1458
- Poll::Ready(())
1459
- } else {
1460
- // Flag ourselves as yielded to return next time, and also
1461
- // flag the waker that we're already ready to get
1462
- // re-enqueued for another poll.
1463
- self.yielded = true;
1464
- cx.waker().wake_by_ref();
1465
- Poll::Pending
1466
- }
1467
- }
1468
- }
1469
-
1470
- let mut future = Yield::default();
1471
-
1472
- // When control returns, we have a `Result<()>` passed
1473
- // in from the host fiber. If this finished successfully then
1474
- // we were resumed normally via a `poll`, so keep going. If
1475
- // the future was dropped while we were yielded, then we need
1476
- // to clean up this fiber. Do so by raising a trap which will
1477
- // abort all wasm and get caught on the other side to clean
1478
- // things up.
1479
- unsafe {
1480
- self.async_cx()
1481
- .expect("attempted to pull async context during shutdown")
1482
- .block_on(Pin::new_unchecked(&mut future))
1483
- }
1484
- }
1485
-
1486
- #[inline]
1487
- pub fn signal_handler(&self) -> Option<*const SignalHandler<'static>> {
1488
- let handler = self.signal_handler.as_ref()?;
1489
- Some(&**handler as *const _)
1490
- }
1491
-
1492
- #[inline]
1493
- pub fn vmruntime_limits(&self) -> *mut VMRuntimeLimits {
1494
- &self.runtime_limits as *const VMRuntimeLimits as *mut VMRuntimeLimits
1495
- }
1496
-
1497
- pub unsafe fn insert_vmexternref_without_gc(&mut self, r: VMExternRef) {
1498
- self.externref_activations_table.insert_without_gc(r);
1499
- }
1500
-
1501
- #[inline]
1502
- pub fn default_caller(&self) -> *mut VMContext {
1503
- self.default_caller.vmctx()
1504
- }
1505
-
1506
- pub fn traitobj(&self) -> *mut dyn wasmtime_runtime::Store {
1507
- self.default_caller.store()
1508
- }
1509
-
1510
- /// Takes the cached `Vec<Val>` stored internally across hostcalls to get
1511
- /// used as part of calling the host in a `Func::new` method invocation.
1512
- #[inline]
1513
- pub fn take_hostcall_val_storage(&mut self) -> Vec<Val> {
1514
- mem::take(&mut self.hostcall_val_storage)
1515
- }
1516
-
1517
- /// Restores the vector previously taken by `take_hostcall_val_storage`
1518
- /// above back into the store, allowing it to be used in the future for the
1519
- /// next wasm->host call.
1520
- #[inline]
1521
- pub fn save_hostcall_val_storage(&mut self, storage: Vec<Val>) {
1522
- if storage.capacity() > self.hostcall_val_storage.capacity() {
1523
- self.hostcall_val_storage = storage;
1524
- }
1525
- }
1526
-
1527
- /// Same as `take_hostcall_val_storage`, but for the direction of the host
1528
- /// calling wasm.
1529
- #[inline]
1530
- pub fn take_wasm_val_raw_storage(&mut self) -> Vec<ValRaw> {
1531
- mem::take(&mut self.wasm_val_raw_storage)
1532
- }
1533
-
1534
- /// Same as `save_hostcall_val_storage`, but for the direction of the host
1535
- /// calling wasm.
1536
- #[inline]
1537
- pub fn save_wasm_val_raw_storage(&mut self, storage: Vec<ValRaw>) {
1538
- if storage.capacity() > self.wasm_val_raw_storage.capacity() {
1539
- self.wasm_val_raw_storage = storage;
1540
- }
1541
- }
1542
-
1543
- pub(crate) fn push_rooted_funcs(&mut self, funcs: Arc<[Definition]>) {
1544
- self.rooted_host_funcs.push(funcs);
1545
- }
1546
-
1547
- /// Translates a WebAssembly fault at the native `pc` and native `addr` to a
1548
- /// WebAssembly-relative fault.
1549
- ///
1550
- /// This function may abort the process if `addr` is not found to actually
1551
- /// reside in any linear memory. In such a situation it means that the
1552
- /// segfault was erroneously caught by Wasmtime and is possibly indicative
1553
- /// of a code generator bug.
1554
- ///
1555
- /// This function returns `None` for dynamically-bounds-checked-memories
1556
- /// with spectre mitigations enabled since the hardware fault address is
1557
- /// always zero in these situations which means that the trapping context
1558
- /// doesn't have enough information to report the fault address.
1559
- pub(crate) fn wasm_fault(&self, pc: usize, addr: usize) -> Option<WasmFault> {
1560
- // Explicitly bounds-checked memories with spectre-guards enabled will
1561
- // cause out-of-bounds accesses to get routed to address 0, so allow
1562
- // wasm instructions to fault on the null address.
1563
- if addr == 0 {
1564
- return None;
1565
- }
1566
-
1567
- // Search all known instances in this store for this address. Note that
1568
- // this is probably not the speediest way to do this. Traps, however,
1569
- // are generally not expected to be super fast and additionally stores
1570
- // probably don't have all that many instances or memories.
1571
- //
1572
- // If this loop becomes hot in the future, however, it should be
1573
- // possible to precompute maps about linear memories in a store and have
1574
- // a quicker lookup.
1575
- let mut fault = None;
1576
- for instance in self.instances.iter() {
1577
- if let Some(f) = instance.handle.wasm_fault(addr) {
1578
- assert!(fault.is_none());
1579
- fault = Some(f);
1580
- }
1581
- }
1582
- if fault.is_some() {
1583
- return fault;
1584
- }
1585
-
1586
- eprintln!(
1587
- "\
1588
- Wasmtime caught a segfault for a wasm program because the faulting instruction
1589
- is allowed to segfault due to how linear memories are implemented. The address
1590
- that was accessed, however, is not known to any linear memory in use within this
1591
- Store. This may be indicative of a critical bug in Wasmtime's code generation
1592
- because all addresses which are known to be reachable from wasm won't reach this
1593
- message.
1594
-
1595
- pc: 0x{pc:x}
1596
- address: 0x{addr:x}
1597
-
1598
- This is a possible security issue because WebAssembly has accessed something it
1599
- shouldn't have been able to. Other accesses may have succeeded and this one just
1600
- happened to be caught. The process will now be aborted to prevent this damage
1601
- from going any further and to alert what's going on. If this is a security
1602
- issue please reach out to the Wasmtime team via its security policy
1603
- at https://bytecodealliance.org/security.
1604
- "
1605
- );
1606
- std::process::abort();
1607
- }
1608
-
1609
- /// Retrieve the store's protection key.
1610
- #[inline]
1611
- pub(crate) fn get_pkey(&self) -> Option<ProtectionKey> {
1612
- self.pkey.clone()
1613
- }
1614
-
1615
- #[inline]
1616
- #[cfg(feature = "component-model")]
1617
- pub(crate) fn component_calls_and_host_table(
1618
- &mut self,
1619
- ) -> (
1620
- &mut wasmtime_runtime::component::CallContexts,
1621
- &mut wasmtime_runtime::component::ResourceTable,
1622
- ) {
1623
- (&mut self.component_calls, &mut self.component_host_table)
1624
- }
1625
-
1626
- #[cfg(feature = "component-model")]
1627
- pub(crate) fn push_component_instance(&mut self, instance: crate::component::Instance) {
1628
- // We don't actually need the instance itself right now, but it seems
1629
- // like something we will almost certainly eventually want to keep
1630
- // around, so force callers to provide it.
1631
- let _ = instance;
1632
-
1633
- self.num_component_instances += 1;
1634
- }
1635
- }
1636
-
1637
- impl<T> StoreContextMut<'_, T> {
1638
- /// Executes a synchronous computation `func` asynchronously on a new fiber.
1639
- ///
1640
- /// This function will convert the synchronous `func` into an asynchronous
1641
- /// future. This is done by running `func` in a fiber on a separate native
1642
- /// stack which can be suspended and resumed from.
1643
- ///
1644
- /// Most of the nitty-gritty here is how we juggle the various contexts
1645
- /// necessary to suspend the fiber later on and poll sub-futures. It's hoped
1646
- /// that the various comments are illuminating as to what's going on here.
1647
- #[cfg(feature = "async")]
1648
- pub(crate) async fn on_fiber<R>(
1649
- &mut self,
1650
- func: impl FnOnce(&mut StoreContextMut<'_, T>) -> R + Send,
1651
- ) -> Result<R>
1652
- where
1653
- T: Send,
1654
- {
1655
- let config = self.engine().config();
1656
- debug_assert!(self.0.async_support());
1657
- debug_assert!(config.async_stack_size > 0);
1658
-
1659
- let mut slot = None;
1660
- let future = {
1661
- let current_poll_cx = self.0.async_state.current_poll_cx.get();
1662
- let current_suspend = self.0.async_state.current_suspend.get();
1663
- let stack = self.engine().allocator().allocate_fiber_stack()?;
1664
-
1665
- let engine = self.engine().clone();
1666
- let slot = &mut slot;
1667
- let fiber = wasmtime_fiber::Fiber::new(stack, move |keep_going, suspend| {
1668
- // First check and see if we were interrupted/dropped, and only
1669
- // continue if we haven't been.
1670
- keep_going?;
1671
-
1672
- // Configure our store's suspension context for the rest of the
1673
- // execution of this fiber. Note that a raw pointer is stored here
1674
- // which is only valid for the duration of this closure.
1675
- // Consequently we at least replace it with the previous value when
1676
- // we're done. This reset is also required for correctness because
1677
- // otherwise our value will overwrite another active fiber's value.
1678
- // There should be a test that segfaults in `async_functions.rs` if
1679
- // this `Replace` is removed.
1680
- unsafe {
1681
- let _reset = Reset(current_suspend, *current_suspend);
1682
- *current_suspend = suspend;
1683
-
1684
- *slot = Some(func(self));
1685
- Ok(())
1686
- }
1687
- })?;
1688
-
1689
- // Once we have the fiber representing our synchronous computation, we
1690
- // wrap that in a custom future implementation which does the
1691
- // translation from the future protocol to our fiber API.
1692
- FiberFuture {
1693
- fiber,
1694
- current_poll_cx,
1695
- engine,
1696
- state: Some(wasmtime_runtime::AsyncWasmCallState::new()),
1697
- }
1698
- };
1699
- future.await?;
1700
-
1701
- return Ok(slot.unwrap());
1702
-
1703
- struct FiberFuture<'a> {
1704
- fiber: wasmtime_fiber::Fiber<'a, Result<()>, (), Result<()>>,
1705
- current_poll_cx: *mut *mut Context<'static>,
1706
- engine: Engine,
1707
- // See comments in `FiberFuture::resume` for this
1708
- state: Option<wasmtime_runtime::AsyncWasmCallState>,
1709
- }
1710
-
1711
- // This is surely the most dangerous `unsafe impl Send` in the entire
1712
- // crate. There are two members in `FiberFuture` which cause it to not
1713
- // be `Send`. One is `current_poll_cx` and is entirely uninteresting.
1714
- // This is just used to manage `Context` pointers across `await` points
1715
- // in the future, and requires raw pointers to get it to happen easily.
1716
- // Nothing too weird about the `Send`-ness, values aren't actually
1717
- // crossing threads.
1718
- //
1719
- // The really interesting piece is `fiber`. Now the "fiber" here is
1720
- // actual honest-to-god Rust code which we're moving around. What we're
1721
- // doing is the equivalent of moving our thread's stack to another OS
1722
- // thread. Turns out we, in general, have no idea what's on the stack
1723
- // and would generally have no way to verify that this is actually safe
1724
- // to do!
1725
- //
1726
- // Thankfully, though, Wasmtime has the power. Without being glib it's
1727
- // actually worth examining what's on the stack. It's unfortunately not
1728
- // super-local to this function itself. Our closure to `Fiber::new` runs
1729
- // `func`, which is given to us from the outside. Thankfully, though, we
1730
- // have tight control over this. Usage of `on_fiber` is typically done
1731
- // *just* before entering WebAssembly itself, so we'll have a few stack
1732
- // frames of Rust code (all in Wasmtime itself) before we enter wasm.
1733
- //
1734
- // Once we've entered wasm, well then we have a whole bunch of wasm
1735
- // frames on the stack. We've got this nifty thing called Cranelift,
1736
- // though, which allows us to also have complete control over everything
1737
- // on the stack!
1738
- //
1739
- // Finally, when wasm switches back to the fiber's starting pointer
1740
- // (this future we're returning) then it means wasm has reentered Rust.
1741
- // Suspension can only happen via the `block_on` function of an
1742
- // `AsyncCx`. This, conveniently, also happens entirely in Wasmtime
1743
- // controlled code!
1744
- //
1745
- // There's an extremely important point that should be called out here.
1746
- // User-provided futures **are not on the stack** during suspension
1747
- // points. This is extremely crucial because we in general cannot reason
1748
- // about Send/Sync for stack-local variables since rustc doesn't analyze
1749
- // them at all. With our construction, though, we are guaranteed that
1750
- // Wasmtime owns all stack frames between the stack of a fiber and when
1751
- // the fiber suspends (and it could move across threads). At this time
1752
- // the only user-provided piece of data on the stack is the future
1753
- // itself given to us. Lo-and-behold as you might notice the future is
1754
- // required to be `Send`!
1755
- //
1756
- // What this all boils down to is that we, as the authors of Wasmtime,
1757
- // need to be extremely careful that on the async fiber stack we only
1758
- // store Send things. For example we can't start using `Rc` willy nilly
1759
- // by accident and leave a copy in TLS somewhere. (similarly we have to
1760
- // be ready for TLS to change while we're executing wasm code between
1761
- // suspension points).
1762
- //
1763
- // While somewhat onerous it shouldn't be too too hard (the TLS bit is
1764
- // the hardest bit so far). This does mean, though, that no user should
1765
- // ever have to worry about the `Send`-ness of Wasmtime. If rustc says
1766
- // it's ok, then it's ok.
1767
- //
1768
- // With all that in mind we unsafely assert here that wasmtime is
1769
- // correct. We declare the fiber as only containing Send data on its
1770
- // stack, despite not knowing for sure at compile time that this is
1771
- // correct. That's what `unsafe` in Rust is all about, though, right?
1772
- unsafe impl Send for FiberFuture<'_> {}
1773
-
1774
- impl FiberFuture<'_> {
1775
- /// This is a helper function to call `resume` on the underlying
1776
- /// fiber while correctly managing Wasmtime's thread-local data.
1777
- ///
1778
- /// Wasmtime's implementation of traps leverages thread-local data
1779
- /// to get access to metadata during a signal. This thread-local
1780
- /// data is a linked list of "activations" where the nodes of the
1781
- /// linked list are stored on the stack. It would be invalid as a
1782
- /// result to suspend a computation with the head of the linked list
1783
- /// on this stack then move the stack to another thread and resume
1784
- /// it. That means that a different thread would point to our stack
1785
- /// and our thread doesn't point to our stack at all!
1786
- ///
1787
- /// Basically management of TLS is required here one way or another.
1788
- /// The strategy currently settled on is to manage the list of
1789
- /// activations created by this fiber as a unit. When a fiber
1790
- /// resumes the linked list is prepended to the current thread's
1791
- /// list. When the fiber is suspended then the fiber's list of
1792
- /// activations are all removed en-masse and saved within the fiber.
1793
- fn resume(&mut self, val: Result<()>) -> Result<Result<()>, ()> {
1794
- unsafe {
1795
- let prev = self.state.take().unwrap().push();
1796
- let restore = Restore {
1797
- fiber: self,
1798
- state: Some(prev),
1799
- };
1800
- return restore.fiber.fiber.resume(val);
1801
- }
1802
-
1803
- struct Restore<'a, 'b> {
1804
- fiber: &'a mut FiberFuture<'b>,
1805
- state: Option<wasmtime_runtime::PreviousAsyncWasmCallState>,
1806
- }
1807
-
1808
- impl Drop for Restore<'_, '_> {
1809
- fn drop(&mut self) {
1810
- unsafe {
1811
- self.fiber.state = Some(self.state.take().unwrap().restore());
1812
- }
1813
- }
1814
- }
1815
- }
1816
- }
1817
-
1818
- impl Future for FiberFuture<'_> {
1819
- type Output = Result<()>;
1820
-
1821
- fn poll(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll<Self::Output> {
1822
- // We need to carry over this `cx` into our fiber's runtime
1823
- // for when it tries to poll sub-futures that are created. Doing
1824
- // this must be done unsafely, however, since `cx` is only alive
1825
- // for this one singular function call. Here we do a `transmute`
1826
- // to extend the lifetime of `Context` so it can be stored in
1827
- // our `Store`, and then we replace the current polling context
1828
- // with this one.
1829
- //
1830
- // Note that the replace is done for weird situations where
1831
- // futures might be switching contexts and there's multiple
1832
- // wasmtime futures in a chain of futures.
1833
- //
1834
- // On exit from this function, though, we reset the polling
1835
- // context back to what it was to signify that `Store` no longer
1836
- // has access to this pointer.
1837
- unsafe {
1838
- let _reset = Reset(self.current_poll_cx, *self.current_poll_cx);
1839
- *self.current_poll_cx =
1840
- std::mem::transmute::<&mut Context<'_>, *mut Context<'static>>(cx);
1841
-
1842
- // After that's set up we resume execution of the fiber, which
1843
- // may also start the fiber for the first time. This either
1844
- // returns `Ok` saying the fiber finished (yay!) or it
1845
- // returns `Err` with the payload passed to `suspend`, which
1846
- // in our case is `()`.
1847
- match self.resume(Ok(())) {
1848
- Ok(result) => Poll::Ready(result),
1849
-
1850
- // If `Err` is returned that means the fiber polled a
1851
- // future but it said "Pending", so we propagate that
1852
- // here.
1853
- //
1854
- // An additional safety check is performed when leaving
1855
- // this function to help bolster the guarantees of
1856
- // `unsafe impl Send` above. Notably this future may get
1857
- // re-polled on a different thread. Wasmtime's
1858
- // thread-local state points to the stack, however,
1859
- // meaning that it would be incorrect to leave a pointer
1860
- // in TLS when this function returns. This function
1861
- // performs a runtime assert to verify that this is the
1862
- // case, notably that the one TLS pointer Wasmtime uses
1863
- // is not pointing anywhere within the stack. If it is
1864
- // then that's a bug indicating that TLS management in
1865
- // Wasmtime is incorrect.
1866
- Err(()) => {
1867
- if let Some(range) = self.fiber.stack().range() {
1868
- wasmtime_runtime::AsyncWasmCallState::assert_current_state_not_in_range(range);
1869
- }
1870
- Poll::Pending
1871
- }
1872
- }
1873
- }
1874
- }
1875
- }
1876
-
1877
- // Dropping futures is pretty special in that it means the future has
1878
- // been requested to be cancelled. Here we run the risk of dropping an
1879
- // in-progress fiber, and if we were to do nothing then the fiber would
1880
- // leak all its owned stack resources.
1881
- //
1882
- // To handle this we implement `Drop` here and, if the fiber isn't done,
1883
- // resume execution of the fiber saying "hey please stop you're
1884
- // interrupted". Our `Trap` created here (which has the stack trace
1885
- // of whomever dropped us) will then get propagated in whatever called
1886
- // `block_on`, and the idea is that the trap propagates all the way back
1887
- // up to the original fiber start, finishing execution.
1888
- //
1889
- // We don't actually care about the fiber's return value here (no one's
1890
- // around to look at it), we just assert the fiber finished to
1891
- // completion.
1892
- impl Drop for FiberFuture<'_> {
1893
- fn drop(&mut self) {
1894
- if !self.fiber.done() {
1895
- let result = self.resume(Err(anyhow!("future dropped")));
1896
- // This resumption with an error should always complete the
1897
- // fiber. While it's technically possible for host code to catch
1898
- // the trap and re-resume, we'd ideally like to signal that to
1899
- // callers that they shouldn't be doing that.
1900
- debug_assert!(result.is_ok());
1901
- }
1902
-
1903
- self.state.take().unwrap().assert_null();
1904
-
1905
- unsafe {
1906
- self.engine
1907
- .allocator()
1908
- .deallocate_fiber_stack(self.fiber.stack());
1909
- }
1910
- }
1911
- }
1912
- }
1913
- }
1914
-
1915
- #[cfg(feature = "async")]
1916
- pub struct AsyncCx {
1917
- current_suspend: *mut *const wasmtime_fiber::Suspend<Result<()>, (), Result<()>>,
1918
- current_poll_cx: *mut *mut Context<'static>,
1919
- }
1920
-
1921
- #[cfg(feature = "async")]
1922
- impl AsyncCx {
1923
- /// Blocks on the asynchronous computation represented by `future` and
1924
- /// produces the result here, in-line.
1925
- ///
1926
- /// This function is designed to only work when it's currently executing on
1927
- /// a native fiber. This fiber provides the ability for us to handle the
1928
- /// future's `Pending` state as "jump back to whomever called the fiber in
1929
- /// an asynchronous fashion and propagate `Pending`". This tight coupling
1930
- /// with `on_fiber` below is what powers the asynchronicity of calling wasm.
1931
- /// Note that the asynchronous part only applies to host functions, wasm
1932
- /// itself never really does anything asynchronous at this time.
1933
- ///
1934
- /// This function takes a `future` and will (appear to) synchronously wait
1935
- /// on the result. While this function is executing it will fiber switch
1936
- /// to-and-from the original frame calling `on_fiber` which should be a
1937
- /// guarantee due to how async stores are configured.
1938
- ///
1939
- /// The return value here is either the output of the future `T`, or a trap
1940
- /// which represents that the asynchronous computation was cancelled. It is
1941
- /// not recommended to catch the trap and try to keep executing wasm, so
1942
- /// we've tried to liberally document this.
1943
- pub unsafe fn block_on<U>(
1944
- &self,
1945
- mut future: Pin<&mut (dyn Future<Output = U> + Send)>,
1946
- ) -> Result<U> {
1947
- // Take our current `Suspend` context which was configured as soon as
1948
- // our fiber started. Note that we must load it at the front here and
1949
- // save it on our stack frame. While we're polling the future other
1950
- // fibers may be started for recursive computations, and the current
1951
- // suspend context is only preserved at the edges of the fiber, not
1952
- // during the fiber itself.
1953
- //
1954
- // For a little bit of extra safety we also replace the current value
1955
- // with null to try to catch any accidental bugs on our part early.
1956
- // This is all pretty unsafe so we're trying to be careful...
1957
- //
1958
- // Note that there should be a segfaulting test in `async_functions.rs`
1959
- // if this `Reset` is removed.
1960
- let suspend = *self.current_suspend;
1961
- let _reset = Reset(self.current_suspend, suspend);
1962
- *self.current_suspend = ptr::null();
1963
- assert!(!suspend.is_null());
1964
-
1965
- loop {
1966
- let future_result = {
1967
- let poll_cx = *self.current_poll_cx;
1968
- let _reset = Reset(self.current_poll_cx, poll_cx);
1969
- *self.current_poll_cx = ptr::null_mut();
1970
- assert!(!poll_cx.is_null());
1971
- future.as_mut().poll(&mut *poll_cx)
1972
- };
1973
-
1974
- match future_result {
1975
- Poll::Ready(t) => break Ok(t),
1976
- Poll::Pending => {}
1977
- }
1978
-
1979
- (*suspend).suspend(())?;
1980
- }
1981
- }
1982
- }
1983
-
1984
- unsafe impl<T> wasmtime_runtime::Store for StoreInner<T> {
1985
- fn vmruntime_limits(&self) -> *mut VMRuntimeLimits {
1986
- <StoreOpaque>::vmruntime_limits(self)
1987
- }
1988
-
1989
- fn epoch_ptr(&self) -> *const AtomicU64 {
1990
- self.engine.epoch_counter() as *const _
1991
- }
1992
-
1993
- fn externref_activations_table(
1994
- &mut self,
1995
- ) -> (
1996
- &mut VMExternRefActivationsTable,
1997
- &dyn wasmtime_runtime::ModuleInfoLookup,
1998
- ) {
1999
- let inner = &mut self.inner;
2000
- (&mut inner.externref_activations_table, &inner.modules)
2001
- }
2002
-
2003
- fn memory_growing(
2004
- &mut self,
2005
- current: usize,
2006
- desired: usize,
2007
- maximum: Option<usize>,
2008
- ) -> Result<bool, anyhow::Error> {
2009
- match self.limiter {
2010
- Some(ResourceLimiterInner::Sync(ref mut limiter)) => {
2011
- limiter(&mut self.data).memory_growing(current, desired, maximum)
2012
- }
2013
- #[cfg(feature = "async")]
2014
- Some(ResourceLimiterInner::Async(ref mut limiter)) => unsafe {
2015
- self.inner
2016
- .async_cx()
2017
- .expect("ResourceLimiterAsync requires async Store")
2018
- .block_on(
2019
- limiter(&mut self.data)
2020
- .memory_growing(current, desired, maximum)
2021
- .as_mut(),
2022
- )?
2023
- },
2024
- None => Ok(true),
2025
- }
2026
- }
2027
-
2028
- fn memory_grow_failed(&mut self, error: anyhow::Error) -> Result<()> {
2029
- match self.limiter {
2030
- Some(ResourceLimiterInner::Sync(ref mut limiter)) => {
2031
- limiter(&mut self.data).memory_grow_failed(error)
2032
- }
2033
- #[cfg(feature = "async")]
2034
- Some(ResourceLimiterInner::Async(ref mut limiter)) => {
2035
- limiter(&mut self.data).memory_grow_failed(error)
2036
- }
2037
- None => {
2038
- log::debug!("ignoring memory growth failure error: {error:?}");
2039
- Ok(())
2040
- }
2041
- }
2042
- }
2043
-
2044
- fn table_growing(
2045
- &mut self,
2046
- current: u32,
2047
- desired: u32,
2048
- maximum: Option<u32>,
2049
- ) -> Result<bool, anyhow::Error> {
2050
- // Need to borrow async_cx before the mut borrow of the limiter.
2051
- // self.async_cx() panicks when used with a non-async store, so
2052
- // wrap this in an option.
2053
- #[cfg(feature = "async")]
2054
- let async_cx = if self.async_support() {
2055
- Some(self.async_cx().unwrap())
2056
- } else {
2057
- None
2058
- };
2059
-
2060
- match self.limiter {
2061
- Some(ResourceLimiterInner::Sync(ref mut limiter)) => {
2062
- limiter(&mut self.data).table_growing(current, desired, maximum)
2063
- }
2064
- #[cfg(feature = "async")]
2065
- Some(ResourceLimiterInner::Async(ref mut limiter)) => unsafe {
2066
- async_cx
2067
- .expect("ResourceLimiterAsync requires async Store")
2068
- .block_on(
2069
- limiter(&mut self.data)
2070
- .table_growing(current, desired, maximum)
2071
- .as_mut(),
2072
- )?
2073
- },
2074
- None => Ok(true),
2075
- }
2076
- }
2077
-
2078
- fn table_grow_failed(&mut self, error: anyhow::Error) -> Result<()> {
2079
- match self.limiter {
2080
- Some(ResourceLimiterInner::Sync(ref mut limiter)) => {
2081
- limiter(&mut self.data).table_grow_failed(error)
2082
- }
2083
- #[cfg(feature = "async")]
2084
- Some(ResourceLimiterInner::Async(ref mut limiter)) => {
2085
- limiter(&mut self.data).table_grow_failed(error)
2086
- }
2087
- None => {
2088
- log::debug!("ignoring table growth failure: {error:?}");
2089
- Ok(())
2090
- }
2091
- }
2092
- }
2093
-
2094
- fn out_of_gas(&mut self) -> Result<()> {
2095
- if !self.refuel() {
2096
- return Err(Trap::OutOfFuel.into());
2097
- }
2098
- #[cfg(feature = "async")]
2099
- if self.fuel_yield_interval.is_some() {
2100
- self.async_yield_impl()?;
2101
- }
2102
- Ok(())
2103
- }
2104
-
2105
- fn new_epoch(&mut self) -> Result<u64, anyhow::Error> {
2106
- // Temporarily take the configured behavior to avoid mutably borrowing
2107
- // multiple times.
2108
- let mut behavior = self.epoch_deadline_behavior.take();
2109
- let delta_result = match &mut behavior {
2110
- None => Err(Trap::Interrupt.into()),
2111
- Some(callback) => callback((&mut *self).as_context_mut()).and_then(|update| {
2112
- let delta = match update {
2113
- UpdateDeadline::Continue(delta) => delta,
2114
-
2115
- #[cfg(feature = "async")]
2116
- UpdateDeadline::Yield(delta) => {
2117
- assert!(
2118
- self.async_support(),
2119
- "cannot use `UpdateDeadline::Yield` without enabling async support in the config"
2120
- );
2121
- // Do the async yield. May return a trap if future was
2122
- // canceled while we're yielded.
2123
- self.async_yield_impl()?;
2124
- delta
2125
- }
2126
- };
2127
-
2128
- // Set a new deadline and return the new epoch deadline so
2129
- // the Wasm code doesn't have to reload it.
2130
- self.set_epoch_deadline(delta);
2131
- Ok(self.get_epoch_deadline())
2132
- })
2133
- };
2134
-
2135
- // Put back the original behavior which was replaced by `take`.
2136
- self.epoch_deadline_behavior = behavior;
2137
- delta_result
2138
- }
2139
-
2140
- #[cfg(feature = "component-model")]
2141
- fn component_calls(&mut self) -> &mut wasmtime_runtime::component::CallContexts {
2142
- &mut self.component_calls
2143
- }
2144
- }
2145
-
2146
- impl<T> StoreInner<T> {
2147
- pub(crate) fn set_epoch_deadline(&mut self, delta: u64) {
2148
- // Set a new deadline based on the "epoch deadline delta".
2149
- //
2150
- // Safety: this is safe because the epoch deadline in the
2151
- // `VMRuntimeLimits` is accessed only here and by Wasm guest code
2152
- // running in this store, and we have a `&mut self` here.
2153
- //
2154
- // Also, note that when this update is performed while Wasm is
2155
- // on the stack, the Wasm will reload the new value once we
2156
- // return into it.
2157
- let epoch_deadline = unsafe { (*self.vmruntime_limits()).epoch_deadline.get_mut() };
2158
- *epoch_deadline = self.engine().current_epoch() + delta;
2159
- }
2160
-
2161
- fn epoch_deadline_trap(&mut self) {
2162
- self.epoch_deadline_behavior = None;
2163
- }
2164
-
2165
- fn epoch_deadline_callback(
2166
- &mut self,
2167
- callback: Box<dyn FnMut(StoreContextMut<T>) -> Result<UpdateDeadline> + Send + Sync>,
2168
- ) {
2169
- self.epoch_deadline_behavior = Some(callback);
2170
- }
2171
-
2172
- fn epoch_deadline_async_yield_and_update(&mut self, delta: u64) {
2173
- assert!(
2174
- self.async_support(),
2175
- "cannot use `epoch_deadline_async_yield_and_update` without enabling async support in the config"
2176
- );
2177
- #[cfg(feature = "async")]
2178
- {
2179
- self.epoch_deadline_behavior =
2180
- Some(Box::new(move |_store| Ok(UpdateDeadline::Yield(delta))));
2181
- }
2182
- let _ = delta; // suppress warning in non-async build
2183
- }
2184
-
2185
- fn get_epoch_deadline(&self) -> u64 {
2186
- // Safety: this is safe because, as above, it is only invoked
2187
- // from within `new_epoch` which is called from guest Wasm
2188
- // code, which will have an exclusive borrow on the Store.
2189
- let epoch_deadline = unsafe { (*self.vmruntime_limits()).epoch_deadline.get_mut() };
2190
- *epoch_deadline
2191
- }
2192
- }
2193
-
2194
- impl<T: Default> Default for Store<T> {
2195
- fn default() -> Store<T> {
2196
- Store::new(&Engine::default(), T::default())
2197
- }
2198
- }
2199
-
2200
- impl<T: fmt::Debug> fmt::Debug for Store<T> {
2201
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2202
- let inner = &**self.inner as *const StoreInner<T>;
2203
- f.debug_struct("Store")
2204
- .field("inner", &inner)
2205
- .field("data", &self.inner.data)
2206
- .finish()
2207
- }
2208
- }
2209
-
2210
- impl<T> Drop for Store<T> {
2211
- fn drop(&mut self) {
2212
- // for documentation on this `unsafe`, see `into_data`.
2213
- unsafe {
2214
- ManuallyDrop::drop(&mut self.inner.data);
2215
- ManuallyDrop::drop(&mut self.inner);
2216
- }
2217
- }
2218
- }
2219
-
2220
- impl Drop for StoreOpaque {
2221
- fn drop(&mut self) {
2222
- // NB it's important that this destructor does not access `self.data`.
2223
- // That is deallocated by `Drop for Store<T>` above.
2224
-
2225
- unsafe {
2226
- let allocator = self.engine.allocator();
2227
- let ondemand = OnDemandInstanceAllocator::default();
2228
- for instance in self.instances.iter_mut() {
2229
- if let StoreInstanceKind::Dummy = instance.kind {
2230
- ondemand.deallocate_module(&mut instance.handle);
2231
- } else {
2232
- allocator.deallocate_module(&mut instance.handle);
2233
- }
2234
- }
2235
- ondemand.deallocate_module(&mut self.default_caller);
2236
-
2237
- #[cfg(feature = "component-model")]
2238
- {
2239
- for _ in 0..self.num_component_instances {
2240
- allocator.decrement_component_instance_count();
2241
- }
2242
- }
2243
-
2244
- // See documentation for these fields on `StoreOpaque` for why they
2245
- // must be dropped in this order.
2246
- ManuallyDrop::drop(&mut self.store_data);
2247
- ManuallyDrop::drop(&mut self.rooted_host_funcs);
2248
- }
2249
- }
2250
- }
2251
-
2252
- impl wasmtime_runtime::ModuleInfoLookup for ModuleRegistry {
2253
- fn lookup(&self, pc: usize) -> Option<&dyn ModuleInfo> {
2254
- self.lookup_module_info(pc)
2255
- }
2256
- }
2257
-
2258
- struct Reset<T: Copy>(*mut T, T);
2259
-
2260
- impl<T: Copy> Drop for Reset<T> {
2261
- fn drop(&mut self) {
2262
- unsafe {
2263
- *self.0 = self.1;
2264
- }
2265
- }
2266
- }
2267
-
2268
- #[cfg(test)]
2269
- mod tests {
2270
- use super::{get_fuel, refuel, set_fuel};
2271
- use std::num::NonZeroU64;
2272
-
2273
- struct FuelTank {
2274
- pub consumed_fuel: i64,
2275
- pub reserve_fuel: u64,
2276
- pub yield_interval: Option<NonZeroU64>,
2277
- }
2278
-
2279
- impl FuelTank {
2280
- fn new() -> Self {
2281
- FuelTank {
2282
- consumed_fuel: 0,
2283
- reserve_fuel: 0,
2284
- yield_interval: None,
2285
- }
2286
- }
2287
- fn get_fuel(&self) -> u64 {
2288
- get_fuel(self.consumed_fuel, self.reserve_fuel)
2289
- }
2290
- fn refuel(&mut self) -> bool {
2291
- refuel(
2292
- &mut self.consumed_fuel,
2293
- &mut self.reserve_fuel,
2294
- self.yield_interval,
2295
- )
2296
- }
2297
- fn set_fuel(&mut self, fuel: u64) {
2298
- set_fuel(
2299
- &mut self.consumed_fuel,
2300
- &mut self.reserve_fuel,
2301
- self.yield_interval,
2302
- fuel,
2303
- );
2304
- }
2305
- }
2306
-
2307
- #[test]
2308
- fn smoke() {
2309
- let mut tank = FuelTank::new();
2310
- tank.set_fuel(10);
2311
- assert_eq!(tank.consumed_fuel, -10);
2312
- assert_eq!(tank.reserve_fuel, 0);
2313
-
2314
- tank.yield_interval = NonZeroU64::new(10);
2315
- tank.set_fuel(25);
2316
- assert_eq!(tank.consumed_fuel, -10);
2317
- assert_eq!(tank.reserve_fuel, 15);
2318
- }
2319
-
2320
- #[test]
2321
- fn does_not_lose_precision() {
2322
- let mut tank = FuelTank::new();
2323
- tank.set_fuel(u64::MAX);
2324
- assert_eq!(tank.get_fuel(), u64::MAX);
2325
-
2326
- tank.set_fuel(i64::MAX as u64);
2327
- assert_eq!(tank.get_fuel(), i64::MAX as u64);
2328
-
2329
- tank.set_fuel(i64::MAX as u64 + 1);
2330
- assert_eq!(tank.get_fuel(), i64::MAX as u64 + 1);
2331
- }
2332
-
2333
- #[test]
2334
- fn yielding_does_not_lose_precision() {
2335
- let mut tank = FuelTank::new();
2336
-
2337
- tank.yield_interval = NonZeroU64::new(10);
2338
- tank.set_fuel(u64::MAX);
2339
- assert_eq!(tank.get_fuel(), u64::MAX);
2340
- assert_eq!(tank.consumed_fuel, -10);
2341
- assert_eq!(tank.reserve_fuel, u64::MAX - 10);
2342
-
2343
- tank.yield_interval = NonZeroU64::new(u64::MAX);
2344
- tank.set_fuel(u64::MAX);
2345
- assert_eq!(tank.get_fuel(), u64::MAX);
2346
- assert_eq!(tank.consumed_fuel, -i64::MAX);
2347
- assert_eq!(tank.reserve_fuel, u64::MAX - (i64::MAX as u64));
2348
-
2349
- tank.yield_interval = NonZeroU64::new((i64::MAX as u64) + 1);
2350
- tank.set_fuel(u64::MAX);
2351
- assert_eq!(tank.get_fuel(), u64::MAX);
2352
- assert_eq!(tank.consumed_fuel, -i64::MAX);
2353
- assert_eq!(tank.reserve_fuel, u64::MAX - (i64::MAX as u64));
2354
- }
2355
-
2356
- #[test]
2357
- fn refueling() {
2358
- // It's possible to fuel to have consumed over the limit as some instructions can consume
2359
- // multiple units of fuel at once. Refueling should be strict in it's consumption and not
2360
- // add more fuel than there is.
2361
- let mut tank = FuelTank::new();
2362
-
2363
- tank.yield_interval = NonZeroU64::new(10);
2364
- tank.reserve_fuel = 42;
2365
- tank.consumed_fuel = 4;
2366
- assert!(tank.refuel());
2367
- assert_eq!(tank.reserve_fuel, 28);
2368
- assert_eq!(tank.consumed_fuel, -10);
2369
-
2370
- tank.yield_interval = NonZeroU64::new(1);
2371
- tank.reserve_fuel = 8;
2372
- tank.consumed_fuel = 4;
2373
- assert_eq!(tank.get_fuel(), 4);
2374
- assert!(tank.refuel());
2375
- assert_eq!(tank.reserve_fuel, 3);
2376
- assert_eq!(tank.consumed_fuel, -1);
2377
- assert_eq!(tank.get_fuel(), 4);
2378
-
2379
- tank.yield_interval = NonZeroU64::new(10);
2380
- tank.reserve_fuel = 3;
2381
- tank.consumed_fuel = 4;
2382
- assert_eq!(tank.get_fuel(), 0);
2383
- assert!(!tank.refuel());
2384
- assert_eq!(tank.reserve_fuel, 3);
2385
- assert_eq!(tank.consumed_fuel, 4);
2386
- assert_eq!(tank.get_fuel(), 0);
2387
- }
2388
- }