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
@@ -0,0 +1,2389 @@
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`]. When fuel is enabled, it must
784
+ /// be configured via [`Store::set_fuel`].
785
+ ///
786
+ /// # Errors
787
+ ///
788
+ /// This function will return an error if fuel consumption is not enabled
789
+ /// via [`Config::consume_fuel`](crate::Config::consume_fuel).
790
+ pub fn get_fuel(&self) -> Result<u64> {
791
+ self.inner.get_fuel()
792
+ }
793
+
794
+ /// Set the fuel to this [`Store`] for wasm to consume while executing.
795
+ ///
796
+ /// For this method to work fuel consumption must be enabled via
797
+ /// [`Config::consume_fuel`](crate::Config::consume_fuel). By default a
798
+ /// [`Store`] starts with 0 fuel for wasm to execute with (meaning it will
799
+ /// immediately trap). This function must be called for the store to have
800
+ /// some fuel to allow WebAssembly to execute.
801
+ ///
802
+ /// Most WebAssembly instructions consume 1 unit of fuel. Some
803
+ /// instructions, such as `nop`, `drop`, `block`, and `loop`, consume 0
804
+ /// units, as any execution cost associated with them involves other
805
+ /// instructions which do consume fuel.
806
+ ///
807
+ /// Note that when fuel is entirely consumed it will cause wasm to trap.
808
+ ///
809
+ /// # Errors
810
+ ///
811
+ /// This function will return an error if fuel consumption is not enabled via
812
+ /// [`Config::consume_fuel`](crate::Config::consume_fuel).
813
+ pub fn set_fuel(&mut self, fuel: u64) -> Result<()> {
814
+ self.inner.set_fuel(fuel)
815
+ }
816
+
817
+ /// Configures a [`Store`] to yield execution of async WebAssembly code
818
+ /// periodically.
819
+ ///
820
+ /// When a [`Store`] is configured to consume fuel with
821
+ /// [`Config::consume_fuel`](crate::Config::consume_fuel) this method will
822
+ /// configure WebAssembly to be suspended and control will be yielded back to the
823
+ /// caller every `interval` units of fuel consumed. This is only suitable with use of
824
+ /// a store associated with an [async config](crate::Config::async_support) because
825
+ /// only then are futures used and yields are possible.
826
+ ///
827
+ /// The purpose of this behavior is to ensure that futures which represent
828
+ /// execution of WebAssembly do not execute too long inside their
829
+ /// `Future::poll` method. This allows for some form of cooperative
830
+ /// multitasking where WebAssembly will voluntarily yield control
831
+ /// periodically (based on fuel consumption) back to the running thread.
832
+ ///
833
+ /// Note that futures returned by this crate will automatically flag
834
+ /// themselves to get re-polled if a yield happens. This means that
835
+ /// WebAssembly will continue to execute, just after giving the host an
836
+ /// opportunity to do something else.
837
+ ///
838
+ /// The `interval` parameter indicates how much fuel should be
839
+ /// consumed between yields of an async future. When fuel runs out wasm will trap.
840
+ ///
841
+ /// # Error
842
+ ///
843
+ /// This method will error if it is not called on a store associated with an [async
844
+ /// config](crate::Config::async_support).
845
+ pub fn fuel_async_yield_interval(&mut self, interval: Option<u64>) -> Result<()> {
846
+ self.inner.fuel_async_yield_interval(interval)
847
+ }
848
+
849
+ /// Sets the epoch deadline to a certain number of ticks in the future.
850
+ ///
851
+ /// When the Wasm guest code is compiled with epoch-interruption
852
+ /// instrumentation
853
+ /// ([`Config::epoch_interruption()`](crate::Config::epoch_interruption)),
854
+ /// and when the `Engine`'s epoch is incremented
855
+ /// ([`Engine::increment_epoch()`](crate::Engine::increment_epoch))
856
+ /// past a deadline, execution can be configured to either trap or
857
+ /// yield and then continue.
858
+ ///
859
+ /// This deadline is always set relative to the current epoch:
860
+ /// `delta_beyond_current` ticks in the future. The deadline can
861
+ /// be set explicitly via this method, or refilled automatically
862
+ /// on a yield if configured via
863
+ /// [`epoch_deadline_async_yield_and_update()`](Store::epoch_deadline_async_yield_and_update). After
864
+ /// this method is invoked, the deadline is reached when
865
+ /// [`Engine::increment_epoch()`] has been invoked at least
866
+ /// `ticks_beyond_current` times.
867
+ ///
868
+ /// By default a store will trap immediately with an epoch deadline of 0
869
+ /// (which has always "elapsed"). This method is required to be configured
870
+ /// for stores with epochs enabled to some future epoch deadline.
871
+ ///
872
+ /// See documentation on
873
+ /// [`Config::epoch_interruption()`](crate::Config::epoch_interruption)
874
+ /// for an introduction to epoch-based interruption.
875
+ pub fn set_epoch_deadline(&mut self, ticks_beyond_current: u64) {
876
+ self.inner.set_epoch_deadline(ticks_beyond_current);
877
+ }
878
+
879
+ /// Configures epoch-deadline expiration to trap.
880
+ ///
881
+ /// When epoch-interruption-instrumented code is executed on this
882
+ /// store and the epoch deadline is reached before completion,
883
+ /// with the store configured in this way, execution will
884
+ /// terminate with a trap as soon as an epoch check in the
885
+ /// instrumented code is reached.
886
+ ///
887
+ /// This behavior is the default if the store is not otherwise
888
+ /// configured via
889
+ /// [`epoch_deadline_trap()`](Store::epoch_deadline_trap),
890
+ /// [`epoch_deadline_callback()`](Store::epoch_deadline_callback) or
891
+ /// [`epoch_deadline_async_yield_and_update()`](Store::epoch_deadline_async_yield_and_update).
892
+ ///
893
+ /// This setting is intended to allow for coarse-grained
894
+ /// interruption, but not a deterministic deadline of a fixed,
895
+ /// finite interval. For deterministic interruption, see the
896
+ /// "fuel" mechanism instead.
897
+ ///
898
+ /// Note that when this is used it's required to call
899
+ /// [`Store::set_epoch_deadline`] or otherwise wasm will always immediately
900
+ /// trap.
901
+ ///
902
+ /// See documentation on
903
+ /// [`Config::epoch_interruption()`](crate::Config::epoch_interruption)
904
+ /// for an introduction to epoch-based interruption.
905
+ pub fn epoch_deadline_trap(&mut self) {
906
+ self.inner.epoch_deadline_trap();
907
+ }
908
+
909
+ /// Configures epoch-deadline expiration to invoke a custom callback
910
+ /// function.
911
+ ///
912
+ /// When epoch-interruption-instrumented code is executed on this
913
+ /// store and the epoch deadline is reached before completion, the
914
+ /// provided callback function is invoked.
915
+ ///
916
+ /// This callback should either return an [`UpdateDeadline`], or
917
+ /// return an error, which will terminate execution with a trap.
918
+ ///
919
+ /// The [`UpdateDeadline`] is a positive number of ticks to
920
+ /// add to the epoch deadline, as well as indicating what
921
+ /// to do after the callback returns. If the [`Store`] is
922
+ /// configured with async support, then the callback may return
923
+ /// [`UpdateDeadline::Yield`] to yield to the async executor before
924
+ /// updating the epoch deadline. Alternatively, the callback may
925
+ /// return [`UpdateDeadline::Continue`] to update the epoch deadline
926
+ /// immediately.
927
+ ///
928
+ /// This setting is intended to allow for coarse-grained
929
+ /// interruption, but not a deterministic deadline of a fixed,
930
+ /// finite interval. For deterministic interruption, see the
931
+ /// "fuel" mechanism instead.
932
+ ///
933
+ /// See documentation on
934
+ /// [`Config::epoch_interruption()`](crate::Config::epoch_interruption)
935
+ /// for an introduction to epoch-based interruption.
936
+ pub fn epoch_deadline_callback(
937
+ &mut self,
938
+ callback: impl FnMut(StoreContextMut<T>) -> Result<UpdateDeadline> + Send + Sync + 'static,
939
+ ) {
940
+ self.inner.epoch_deadline_callback(Box::new(callback));
941
+ }
942
+
943
+ #[cfg_attr(nightlydoc, doc(cfg(feature = "async")))]
944
+ /// Configures epoch-deadline expiration to yield to the async
945
+ /// caller and the update the deadline.
946
+ ///
947
+ /// When epoch-interruption-instrumented code is executed on this
948
+ /// store and the epoch deadline is reached before completion,
949
+ /// with the store configured in this way, execution will yield
950
+ /// (the future will return `Pending` but re-awake itself for
951
+ /// later execution) and, upon resuming, the store will be
952
+ /// configured with an epoch deadline equal to the current epoch
953
+ /// plus `delta` ticks.
954
+ ///
955
+ /// This setting is intended to allow for cooperative timeslicing
956
+ /// of multiple CPU-bound Wasm guests in different stores, all
957
+ /// executing under the control of an async executor. To drive
958
+ /// this, stores should be configured to "yield and update"
959
+ /// automatically with this function, and some external driver (a
960
+ /// thread that wakes up periodically, or a timer
961
+ /// signal/interrupt) should call
962
+ /// [`Engine::increment_epoch()`](crate::Engine::increment_epoch).
963
+ ///
964
+ /// See documentation on
965
+ /// [`Config::epoch_interruption()`](crate::Config::epoch_interruption)
966
+ /// for an introduction to epoch-based interruption.
967
+ #[cfg(feature = "async")]
968
+ pub fn epoch_deadline_async_yield_and_update(&mut self, delta: u64) {
969
+ self.inner.epoch_deadline_async_yield_and_update(delta);
970
+ }
971
+ }
972
+
973
+ impl<'a, T> StoreContext<'a, T> {
974
+ pub(crate) fn async_support(&self) -> bool {
975
+ self.0.async_support()
976
+ }
977
+
978
+ /// Returns the underlying [`Engine`] this store is connected to.
979
+ pub fn engine(&self) -> &Engine {
980
+ self.0.engine()
981
+ }
982
+
983
+ /// Access the underlying data owned by this `Store`.
984
+ ///
985
+ /// Same as [`Store::data`].
986
+ pub fn data(&self) -> &'a T {
987
+ self.0.data()
988
+ }
989
+
990
+ /// Returns the remaining fuel in this store.
991
+ ///
992
+ /// For more information see [`Store::get_fuel`].
993
+ pub fn get_fuel(&self) -> Result<u64> {
994
+ self.0.get_fuel()
995
+ }
996
+ }
997
+
998
+ impl<'a, T> StoreContextMut<'a, T> {
999
+ /// Access the underlying data owned by this `Store`.
1000
+ ///
1001
+ /// Same as [`Store::data`].
1002
+ pub fn data(&self) -> &T {
1003
+ self.0.data()
1004
+ }
1005
+
1006
+ /// Access the underlying data owned by this `Store`.
1007
+ ///
1008
+ /// Same as [`Store::data_mut`].
1009
+ pub fn data_mut(&mut self) -> &mut T {
1010
+ self.0.data_mut()
1011
+ }
1012
+
1013
+ /// Returns the underlying [`Engine`] this store is connected to.
1014
+ pub fn engine(&self) -> &Engine {
1015
+ self.0.engine()
1016
+ }
1017
+
1018
+ /// Perform garbage collection of `ExternRef`s.
1019
+ ///
1020
+ /// Same as [`Store::gc`].
1021
+ pub fn gc(&mut self) {
1022
+ self.0.gc()
1023
+ }
1024
+
1025
+ /// Returns remaining fuel in this store.
1026
+ ///
1027
+ /// For more information see [`Store::get_fuel`]
1028
+ pub fn get_fuel(&self) -> Result<u64> {
1029
+ self.0.get_fuel()
1030
+ }
1031
+
1032
+ /// Set the amount of fuel in this store.
1033
+ ///
1034
+ /// For more information see [`Store::set_fuel`]
1035
+ pub fn set_fuel(&mut self, fuel: u64) -> Result<()> {
1036
+ self.0.set_fuel(fuel)
1037
+ }
1038
+
1039
+ /// Configures this `Store` to periodically yield while executing futures.
1040
+ ///
1041
+ /// For more information see [`Store::fuel_async_yield_interval`]
1042
+ pub fn fuel_async_yield_interval(&mut self, interval: Option<u64>) -> Result<()> {
1043
+ self.0.fuel_async_yield_interval(interval)
1044
+ }
1045
+
1046
+ /// Sets the epoch deadline to a certain number of ticks in the future.
1047
+ ///
1048
+ /// For more information see [`Store::set_epoch_deadline`].
1049
+ pub fn set_epoch_deadline(&mut self, ticks_beyond_current: u64) {
1050
+ self.0.set_epoch_deadline(ticks_beyond_current);
1051
+ }
1052
+
1053
+ /// Configures epoch-deadline expiration to trap.
1054
+ ///
1055
+ /// For more information see [`Store::epoch_deadline_trap`].
1056
+ pub fn epoch_deadline_trap(&mut self) {
1057
+ self.0.epoch_deadline_trap();
1058
+ }
1059
+
1060
+ #[cfg_attr(nightlydoc, doc(cfg(feature = "async")))]
1061
+ /// Configures epoch-deadline expiration to yield to the async
1062
+ /// caller and the update the deadline.
1063
+ ///
1064
+ /// For more information see
1065
+ /// [`Store::epoch_deadline_async_yield_and_update`].
1066
+ #[cfg(feature = "async")]
1067
+ pub fn epoch_deadline_async_yield_and_update(&mut self, delta: u64) {
1068
+ self.0.epoch_deadline_async_yield_and_update(delta);
1069
+ }
1070
+ }
1071
+
1072
+ impl<T> StoreInner<T> {
1073
+ #[inline]
1074
+ fn data(&self) -> &T {
1075
+ &self.data
1076
+ }
1077
+
1078
+ #[inline]
1079
+ fn data_mut(&mut self) -> &mut T {
1080
+ &mut self.data
1081
+ }
1082
+
1083
+ pub fn call_hook(&mut self, s: CallHook) -> Result<()> {
1084
+ if let Some(pkey) = &self.inner.pkey {
1085
+ let allocator = self.engine().allocator();
1086
+ match s {
1087
+ CallHook::CallingWasm | CallHook::ReturningFromHost => {
1088
+ allocator.restrict_to_pkey(*pkey)
1089
+ }
1090
+ CallHook::ReturningFromWasm | CallHook::CallingHost => allocator.allow_all_pkeys(),
1091
+ }
1092
+ }
1093
+
1094
+ match &mut self.call_hook {
1095
+ Some(CallHookInner::Sync(hook)) => hook(&mut self.data, s),
1096
+
1097
+ #[cfg(feature = "async")]
1098
+ Some(CallHookInner::Async(handler)) => unsafe {
1099
+ Ok(self
1100
+ .inner
1101
+ .async_cx()
1102
+ .ok_or_else(|| anyhow!("couldn't grab async_cx for call hook"))?
1103
+ .block_on(handler.handle_call_event(&mut self.data, s).as_mut())??)
1104
+ },
1105
+
1106
+ None => Ok(()),
1107
+ }
1108
+ }
1109
+ }
1110
+
1111
+ fn get_fuel(injected_fuel: i64, fuel_reserve: u64) -> u64 {
1112
+ fuel_reserve.saturating_add_signed(-injected_fuel)
1113
+ }
1114
+
1115
+ // Add remaining fuel from the reserve into the active fuel if there is any left.
1116
+ fn refuel(
1117
+ injected_fuel: &mut i64,
1118
+ fuel_reserve: &mut u64,
1119
+ yield_interval: Option<NonZeroU64>,
1120
+ ) -> bool {
1121
+ let fuel = get_fuel(*injected_fuel, *fuel_reserve);
1122
+ if fuel > 0 {
1123
+ set_fuel(injected_fuel, fuel_reserve, yield_interval, fuel);
1124
+ true
1125
+ } else {
1126
+ false
1127
+ }
1128
+ }
1129
+
1130
+ fn set_fuel(
1131
+ injected_fuel: &mut i64,
1132
+ fuel_reserve: &mut u64,
1133
+ yield_interval: Option<NonZeroU64>,
1134
+ new_fuel_amount: u64,
1135
+ ) {
1136
+ let interval = yield_interval.unwrap_or(NonZeroU64::MAX).get();
1137
+ // If we're yielding periodically we only store the "active" amount of fuel into consumed_ptr
1138
+ // for the VM to use.
1139
+ let injected = std::cmp::min(interval, new_fuel_amount);
1140
+ // Fuel in the VM is stored as an i64, so we have to cap the amount of fuel we inject into the
1141
+ // VM at once to be i64 range.
1142
+ let injected = std::cmp::min(injected, i64::MAX as u64);
1143
+ // Add whatever is left over after injection to the reserve for later use.
1144
+ *fuel_reserve = new_fuel_amount - injected;
1145
+ // Within the VM we increment to count fuel, so inject a negative amount. The VM will halt when
1146
+ // this counter is positive.
1147
+ *injected_fuel = -(injected as i64);
1148
+ }
1149
+
1150
+ #[doc(hidden)]
1151
+ impl StoreOpaque {
1152
+ pub fn id(&self) -> StoreId {
1153
+ self.store_data.id()
1154
+ }
1155
+
1156
+ pub fn bump_resource_counts(&mut self, module: &Module) -> Result<()> {
1157
+ fn bump(slot: &mut usize, max: usize, amt: usize, desc: &str) -> Result<()> {
1158
+ let new = slot.saturating_add(amt);
1159
+ if new > max {
1160
+ bail!(
1161
+ "resource limit exceeded: {} count too high at {}",
1162
+ desc,
1163
+ new
1164
+ );
1165
+ }
1166
+ *slot = new;
1167
+ Ok(())
1168
+ }
1169
+
1170
+ let module = module.env_module();
1171
+ let memories = module.memory_plans.len() - module.num_imported_memories;
1172
+ let tables = module.table_plans.len() - module.num_imported_tables;
1173
+
1174
+ bump(&mut self.instance_count, self.instance_limit, 1, "instance")?;
1175
+ bump(
1176
+ &mut self.memory_count,
1177
+ self.memory_limit,
1178
+ memories,
1179
+ "memory",
1180
+ )?;
1181
+ bump(&mut self.table_count, self.table_limit, tables, "table")?;
1182
+
1183
+ Ok(())
1184
+ }
1185
+
1186
+ #[inline]
1187
+ pub fn async_support(&self) -> bool {
1188
+ cfg!(feature = "async") && self.engine().config().async_support
1189
+ }
1190
+
1191
+ #[inline]
1192
+ pub fn engine(&self) -> &Engine {
1193
+ &self.engine
1194
+ }
1195
+
1196
+ #[inline]
1197
+ pub fn store_data(&self) -> &StoreData {
1198
+ &self.store_data
1199
+ }
1200
+
1201
+ #[inline]
1202
+ pub fn store_data_mut(&mut self) -> &mut StoreData {
1203
+ &mut self.store_data
1204
+ }
1205
+
1206
+ #[inline]
1207
+ pub(crate) fn modules(&self) -> &ModuleRegistry {
1208
+ &self.modules
1209
+ }
1210
+
1211
+ #[inline]
1212
+ pub(crate) fn modules_mut(&mut self) -> &mut ModuleRegistry {
1213
+ &mut self.modules
1214
+ }
1215
+
1216
+ pub(crate) fn func_refs(&mut self) -> &mut FuncRefs {
1217
+ &mut self.func_refs
1218
+ }
1219
+
1220
+ pub(crate) fn fill_func_refs(&mut self) {
1221
+ self.func_refs.fill(&mut self.modules);
1222
+ }
1223
+
1224
+ pub(crate) fn push_instance_pre_func_refs(&mut self, func_refs: Arc<[VMFuncRef]>) {
1225
+ self.func_refs.push_instance_pre_func_refs(func_refs);
1226
+ }
1227
+
1228
+ pub(crate) fn host_globals(&mut self) -> &mut Vec<StoreBox<VMHostGlobalContext>> {
1229
+ &mut self.host_globals
1230
+ }
1231
+
1232
+ pub fn module_for_instance(&self, instance: InstanceId) -> Option<&'_ Module> {
1233
+ match self.instances[instance.0].kind {
1234
+ StoreInstanceKind::Dummy => None,
1235
+ StoreInstanceKind::Real { module_id } => {
1236
+ let module = self
1237
+ .modules()
1238
+ .lookup_module_by_id(module_id)
1239
+ .expect("should always have a registered module for real instances");
1240
+ Some(module)
1241
+ }
1242
+ }
1243
+ }
1244
+
1245
+ pub unsafe fn add_instance(
1246
+ &mut self,
1247
+ handle: InstanceHandle,
1248
+ module_id: RegisteredModuleId,
1249
+ ) -> InstanceId {
1250
+ self.instances.push(StoreInstance {
1251
+ handle: handle.clone(),
1252
+ kind: StoreInstanceKind::Real { module_id },
1253
+ });
1254
+ InstanceId(self.instances.len() - 1)
1255
+ }
1256
+
1257
+ /// Add a dummy instance that to the store.
1258
+ ///
1259
+ /// These are instances that are just implementation details of something
1260
+ /// else (e.g. host-created memories that are not actually defined in any
1261
+ /// Wasm module) and therefore shouldn't show up in things like core dumps.
1262
+ pub unsafe fn add_dummy_instance(&mut self, handle: InstanceHandle) -> InstanceId {
1263
+ self.instances.push(StoreInstance {
1264
+ handle: handle.clone(),
1265
+ kind: StoreInstanceKind::Dummy,
1266
+ });
1267
+ InstanceId(self.instances.len() - 1)
1268
+ }
1269
+
1270
+ pub fn instance(&self, id: InstanceId) -> &InstanceHandle {
1271
+ &self.instances[id.0].handle
1272
+ }
1273
+
1274
+ pub fn instance_mut(&mut self, id: InstanceId) -> &mut InstanceHandle {
1275
+ &mut self.instances[id.0].handle
1276
+ }
1277
+
1278
+ /// Get all instances (ignoring dummy instances) within this store.
1279
+ pub fn all_instances<'a>(&'a mut self) -> impl ExactSizeIterator<Item = Instance> + 'a {
1280
+ let instances = self
1281
+ .instances
1282
+ .iter()
1283
+ .enumerate()
1284
+ .filter_map(|(idx, inst)| {
1285
+ let id = InstanceId::from_index(idx);
1286
+ if let StoreInstanceKind::Dummy = inst.kind {
1287
+ None
1288
+ } else {
1289
+ Some(InstanceData::from_id(id))
1290
+ }
1291
+ })
1292
+ .collect::<Vec<_>>();
1293
+ instances
1294
+ .into_iter()
1295
+ .map(|i| Instance::from_wasmtime(i, self))
1296
+ }
1297
+
1298
+ /// Get all memories (host- or Wasm-defined) within this store.
1299
+ pub fn all_memories<'a>(&'a mut self) -> impl Iterator<Item = Memory> + 'a {
1300
+ // NB: Host-created memories have dummy instances. Therefore, we can get
1301
+ // all memories in the store by iterating over all instances (including
1302
+ // dummy instances) and getting each of their defined memories.
1303
+ let mems = self
1304
+ .instances
1305
+ .iter_mut()
1306
+ .flat_map(|instance| instance.handle.defined_memories())
1307
+ .collect::<Vec<_>>();
1308
+ mems.into_iter()
1309
+ .map(|memory| unsafe { Memory::from_wasmtime_memory(memory, self) })
1310
+ }
1311
+
1312
+ /// Iterate over all globals (host- or Wasm-defined) within this store.
1313
+ pub fn all_globals<'a>(&'a mut self) -> impl Iterator<Item = Global> + 'a {
1314
+ unsafe {
1315
+ // First gather all the host-created globals.
1316
+ let mut globals = self
1317
+ .host_globals()
1318
+ .iter()
1319
+ .map(|global| ExportGlobal {
1320
+ definition: &mut (*global.get()).global as *mut _,
1321
+ global: (*global.get()).ty.to_wasm_type(),
1322
+ })
1323
+ .collect::<Vec<_>>();
1324
+
1325
+ // Then iterate over all instances and yield each of their defined
1326
+ // globals.
1327
+ globals.extend(
1328
+ self.instances.iter_mut().flat_map(|instance| {
1329
+ instance.handle.defined_globals().map(|(_i, global)| global)
1330
+ }),
1331
+ );
1332
+
1333
+ globals
1334
+ .into_iter()
1335
+ .map(|g| Global::from_wasmtime_global(g, self))
1336
+ }
1337
+ }
1338
+
1339
+ #[cfg_attr(not(target_os = "linux"), allow(dead_code))] // not used on all platforms
1340
+ pub fn set_signal_handler(&mut self, handler: Option<Box<SignalHandler<'static>>>) {
1341
+ self.signal_handler = handler;
1342
+ }
1343
+
1344
+ #[inline]
1345
+ pub fn runtime_limits(&self) -> &VMRuntimeLimits {
1346
+ &self.runtime_limits
1347
+ }
1348
+
1349
+ #[inline]
1350
+ pub fn externref_activations_table(&mut self) -> &mut VMExternRefActivationsTable {
1351
+ &mut self.externref_activations_table
1352
+ }
1353
+
1354
+ pub fn gc(&mut self) {
1355
+ // For this crate's API, we ensure that `set_stack_canary` invariants
1356
+ // are upheld for all host-->Wasm calls.
1357
+ unsafe {
1358
+ wasmtime_runtime::gc(
1359
+ self.runtime_limits(),
1360
+ &self.modules,
1361
+ &mut self.externref_activations_table,
1362
+ )
1363
+ }
1364
+ }
1365
+
1366
+ /// Yields the async context, assuming that we are executing on a fiber and
1367
+ /// that fiber is not in the process of dying. This function will return
1368
+ /// None in the latter case (the fiber is dying), and panic if
1369
+ /// `async_support()` is false.
1370
+ #[cfg(feature = "async")]
1371
+ #[inline]
1372
+ pub fn async_cx(&self) -> Option<AsyncCx> {
1373
+ debug_assert!(self.async_support());
1374
+
1375
+ let poll_cx_box_ptr = self.async_state.current_poll_cx.get();
1376
+ if poll_cx_box_ptr.is_null() {
1377
+ return None;
1378
+ }
1379
+
1380
+ let poll_cx_inner_ptr = unsafe { *poll_cx_box_ptr };
1381
+ if poll_cx_inner_ptr.is_null() {
1382
+ return None;
1383
+ }
1384
+
1385
+ Some(AsyncCx {
1386
+ current_suspend: self.async_state.current_suspend.get(),
1387
+ current_poll_cx: poll_cx_box_ptr,
1388
+ })
1389
+ }
1390
+
1391
+ pub fn get_fuel(&self) -> Result<u64> {
1392
+ anyhow::ensure!(
1393
+ self.engine().config().tunables.consume_fuel,
1394
+ "fuel is not configured in this store"
1395
+ );
1396
+ let injected_fuel = unsafe { *self.runtime_limits.fuel_consumed.get() };
1397
+ Ok(get_fuel(injected_fuel, self.fuel_reserve))
1398
+ }
1399
+
1400
+ fn refuel(&mut self) -> bool {
1401
+ let injected_fuel = unsafe { &mut *self.runtime_limits.fuel_consumed.get() };
1402
+ refuel(
1403
+ injected_fuel,
1404
+ &mut self.fuel_reserve,
1405
+ self.fuel_yield_interval,
1406
+ )
1407
+ }
1408
+
1409
+ pub fn set_fuel(&mut self, fuel: u64) -> Result<()> {
1410
+ anyhow::ensure!(
1411
+ self.engine().config().tunables.consume_fuel,
1412
+ "fuel is not configured in this store"
1413
+ );
1414
+ let injected_fuel = unsafe { &mut *self.runtime_limits.fuel_consumed.get() };
1415
+ set_fuel(
1416
+ injected_fuel,
1417
+ &mut self.fuel_reserve,
1418
+ self.fuel_yield_interval,
1419
+ fuel,
1420
+ );
1421
+ Ok(())
1422
+ }
1423
+
1424
+ pub fn fuel_async_yield_interval(&mut self, interval: Option<u64>) -> Result<()> {
1425
+ anyhow::ensure!(
1426
+ self.engine().config().tunables.consume_fuel,
1427
+ "fuel is not configured in this store"
1428
+ );
1429
+ anyhow::ensure!(
1430
+ self.engine().config().async_support,
1431
+ "async support is not configured in this store"
1432
+ );
1433
+ anyhow::ensure!(
1434
+ interval != Some(0),
1435
+ "fuel_async_yield_interval must not be 0"
1436
+ );
1437
+ self.fuel_yield_interval = interval.and_then(|i| NonZeroU64::new(i));
1438
+ // Reset the fuel active + reserve states by resetting the amount.
1439
+ self.set_fuel(self.get_fuel()?)
1440
+ }
1441
+
1442
+ /// Yields execution to the caller on out-of-gas or epoch interruption.
1443
+ ///
1444
+ /// This only works on async futures and stores, and assumes that we're
1445
+ /// executing on a fiber. This will yield execution back to the caller once.
1446
+ #[cfg(feature = "async")]
1447
+ fn async_yield_impl(&mut self) -> Result<()> {
1448
+ // Small future that yields once and then returns ()
1449
+ #[derive(Default)]
1450
+ struct Yield {
1451
+ yielded: bool,
1452
+ }
1453
+
1454
+ impl Future for Yield {
1455
+ type Output = ();
1456
+
1457
+ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<()> {
1458
+ if self.yielded {
1459
+ Poll::Ready(())
1460
+ } else {
1461
+ // Flag ourselves as yielded to return next time, and also
1462
+ // flag the waker that we're already ready to get
1463
+ // re-enqueued for another poll.
1464
+ self.yielded = true;
1465
+ cx.waker().wake_by_ref();
1466
+ Poll::Pending
1467
+ }
1468
+ }
1469
+ }
1470
+
1471
+ let mut future = Yield::default();
1472
+
1473
+ // When control returns, we have a `Result<()>` passed
1474
+ // in from the host fiber. If this finished successfully then
1475
+ // we were resumed normally via a `poll`, so keep going. If
1476
+ // the future was dropped while we were yielded, then we need
1477
+ // to clean up this fiber. Do so by raising a trap which will
1478
+ // abort all wasm and get caught on the other side to clean
1479
+ // things up.
1480
+ unsafe {
1481
+ self.async_cx()
1482
+ .expect("attempted to pull async context during shutdown")
1483
+ .block_on(Pin::new_unchecked(&mut future))
1484
+ }
1485
+ }
1486
+
1487
+ #[inline]
1488
+ pub fn signal_handler(&self) -> Option<*const SignalHandler<'static>> {
1489
+ let handler = self.signal_handler.as_ref()?;
1490
+ Some(&**handler as *const _)
1491
+ }
1492
+
1493
+ #[inline]
1494
+ pub fn vmruntime_limits(&self) -> *mut VMRuntimeLimits {
1495
+ &self.runtime_limits as *const VMRuntimeLimits as *mut VMRuntimeLimits
1496
+ }
1497
+
1498
+ pub unsafe fn insert_vmexternref_without_gc(&mut self, r: VMExternRef) {
1499
+ self.externref_activations_table.insert_without_gc(r);
1500
+ }
1501
+
1502
+ #[inline]
1503
+ pub fn default_caller(&self) -> *mut VMContext {
1504
+ self.default_caller.vmctx()
1505
+ }
1506
+
1507
+ pub fn traitobj(&self) -> *mut dyn wasmtime_runtime::Store {
1508
+ self.default_caller.store()
1509
+ }
1510
+
1511
+ /// Takes the cached `Vec<Val>` stored internally across hostcalls to get
1512
+ /// used as part of calling the host in a `Func::new` method invocation.
1513
+ #[inline]
1514
+ pub fn take_hostcall_val_storage(&mut self) -> Vec<Val> {
1515
+ mem::take(&mut self.hostcall_val_storage)
1516
+ }
1517
+
1518
+ /// Restores the vector previously taken by `take_hostcall_val_storage`
1519
+ /// above back into the store, allowing it to be used in the future for the
1520
+ /// next wasm->host call.
1521
+ #[inline]
1522
+ pub fn save_hostcall_val_storage(&mut self, storage: Vec<Val>) {
1523
+ if storage.capacity() > self.hostcall_val_storage.capacity() {
1524
+ self.hostcall_val_storage = storage;
1525
+ }
1526
+ }
1527
+
1528
+ /// Same as `take_hostcall_val_storage`, but for the direction of the host
1529
+ /// calling wasm.
1530
+ #[inline]
1531
+ pub fn take_wasm_val_raw_storage(&mut self) -> Vec<ValRaw> {
1532
+ mem::take(&mut self.wasm_val_raw_storage)
1533
+ }
1534
+
1535
+ /// Same as `save_hostcall_val_storage`, but for the direction of the host
1536
+ /// calling wasm.
1537
+ #[inline]
1538
+ pub fn save_wasm_val_raw_storage(&mut self, storage: Vec<ValRaw>) {
1539
+ if storage.capacity() > self.wasm_val_raw_storage.capacity() {
1540
+ self.wasm_val_raw_storage = storage;
1541
+ }
1542
+ }
1543
+
1544
+ pub(crate) fn push_rooted_funcs(&mut self, funcs: Arc<[Definition]>) {
1545
+ self.rooted_host_funcs.push(funcs);
1546
+ }
1547
+
1548
+ /// Translates a WebAssembly fault at the native `pc` and native `addr` to a
1549
+ /// WebAssembly-relative fault.
1550
+ ///
1551
+ /// This function may abort the process if `addr` is not found to actually
1552
+ /// reside in any linear memory. In such a situation it means that the
1553
+ /// segfault was erroneously caught by Wasmtime and is possibly indicative
1554
+ /// of a code generator bug.
1555
+ ///
1556
+ /// This function returns `None` for dynamically-bounds-checked-memories
1557
+ /// with spectre mitigations enabled since the hardware fault address is
1558
+ /// always zero in these situations which means that the trapping context
1559
+ /// doesn't have enough information to report the fault address.
1560
+ pub(crate) fn wasm_fault(&self, pc: usize, addr: usize) -> Option<WasmFault> {
1561
+ // Explicitly bounds-checked memories with spectre-guards enabled will
1562
+ // cause out-of-bounds accesses to get routed to address 0, so allow
1563
+ // wasm instructions to fault on the null address.
1564
+ if addr == 0 {
1565
+ return None;
1566
+ }
1567
+
1568
+ // Search all known instances in this store for this address. Note that
1569
+ // this is probably not the speediest way to do this. Traps, however,
1570
+ // are generally not expected to be super fast and additionally stores
1571
+ // probably don't have all that many instances or memories.
1572
+ //
1573
+ // If this loop becomes hot in the future, however, it should be
1574
+ // possible to precompute maps about linear memories in a store and have
1575
+ // a quicker lookup.
1576
+ let mut fault = None;
1577
+ for instance in self.instances.iter() {
1578
+ if let Some(f) = instance.handle.wasm_fault(addr) {
1579
+ assert!(fault.is_none());
1580
+ fault = Some(f);
1581
+ }
1582
+ }
1583
+ if fault.is_some() {
1584
+ return fault;
1585
+ }
1586
+
1587
+ eprintln!(
1588
+ "\
1589
+ Wasmtime caught a segfault for a wasm program because the faulting instruction
1590
+ is allowed to segfault due to how linear memories are implemented. The address
1591
+ that was accessed, however, is not known to any linear memory in use within this
1592
+ Store. This may be indicative of a critical bug in Wasmtime's code generation
1593
+ because all addresses which are known to be reachable from wasm won't reach this
1594
+ message.
1595
+
1596
+ pc: 0x{pc:x}
1597
+ address: 0x{addr:x}
1598
+
1599
+ This is a possible security issue because WebAssembly has accessed something it
1600
+ shouldn't have been able to. Other accesses may have succeeded and this one just
1601
+ happened to be caught. The process will now be aborted to prevent this damage
1602
+ from going any further and to alert what's going on. If this is a security
1603
+ issue please reach out to the Wasmtime team via its security policy
1604
+ at https://bytecodealliance.org/security.
1605
+ "
1606
+ );
1607
+ std::process::abort();
1608
+ }
1609
+
1610
+ /// Retrieve the store's protection key.
1611
+ #[inline]
1612
+ pub(crate) fn get_pkey(&self) -> Option<ProtectionKey> {
1613
+ self.pkey.clone()
1614
+ }
1615
+
1616
+ #[inline]
1617
+ #[cfg(feature = "component-model")]
1618
+ pub(crate) fn component_calls_and_host_table(
1619
+ &mut self,
1620
+ ) -> (
1621
+ &mut wasmtime_runtime::component::CallContexts,
1622
+ &mut wasmtime_runtime::component::ResourceTable,
1623
+ ) {
1624
+ (&mut self.component_calls, &mut self.component_host_table)
1625
+ }
1626
+
1627
+ #[cfg(feature = "component-model")]
1628
+ pub(crate) fn push_component_instance(&mut self, instance: crate::component::Instance) {
1629
+ // We don't actually need the instance itself right now, but it seems
1630
+ // like something we will almost certainly eventually want to keep
1631
+ // around, so force callers to provide it.
1632
+ let _ = instance;
1633
+
1634
+ self.num_component_instances += 1;
1635
+ }
1636
+ }
1637
+
1638
+ impl<T> StoreContextMut<'_, T> {
1639
+ /// Executes a synchronous computation `func` asynchronously on a new fiber.
1640
+ ///
1641
+ /// This function will convert the synchronous `func` into an asynchronous
1642
+ /// future. This is done by running `func` in a fiber on a separate native
1643
+ /// stack which can be suspended and resumed from.
1644
+ ///
1645
+ /// Most of the nitty-gritty here is how we juggle the various contexts
1646
+ /// necessary to suspend the fiber later on and poll sub-futures. It's hoped
1647
+ /// that the various comments are illuminating as to what's going on here.
1648
+ #[cfg(feature = "async")]
1649
+ pub(crate) async fn on_fiber<R>(
1650
+ &mut self,
1651
+ func: impl FnOnce(&mut StoreContextMut<'_, T>) -> R + Send,
1652
+ ) -> Result<R>
1653
+ where
1654
+ T: Send,
1655
+ {
1656
+ let config = self.engine().config();
1657
+ debug_assert!(self.0.async_support());
1658
+ debug_assert!(config.async_stack_size > 0);
1659
+
1660
+ let mut slot = None;
1661
+ let future = {
1662
+ let current_poll_cx = self.0.async_state.current_poll_cx.get();
1663
+ let current_suspend = self.0.async_state.current_suspend.get();
1664
+ let stack = self.engine().allocator().allocate_fiber_stack()?;
1665
+
1666
+ let engine = self.engine().clone();
1667
+ let slot = &mut slot;
1668
+ let fiber = wasmtime_fiber::Fiber::new(stack, move |keep_going, suspend| {
1669
+ // First check and see if we were interrupted/dropped, and only
1670
+ // continue if we haven't been.
1671
+ keep_going?;
1672
+
1673
+ // Configure our store's suspension context for the rest of the
1674
+ // execution of this fiber. Note that a raw pointer is stored here
1675
+ // which is only valid for the duration of this closure.
1676
+ // Consequently we at least replace it with the previous value when
1677
+ // we're done. This reset is also required for correctness because
1678
+ // otherwise our value will overwrite another active fiber's value.
1679
+ // There should be a test that segfaults in `async_functions.rs` if
1680
+ // this `Replace` is removed.
1681
+ unsafe {
1682
+ let _reset = Reset(current_suspend, *current_suspend);
1683
+ *current_suspend = suspend;
1684
+
1685
+ *slot = Some(func(self));
1686
+ Ok(())
1687
+ }
1688
+ })?;
1689
+
1690
+ // Once we have the fiber representing our synchronous computation, we
1691
+ // wrap that in a custom future implementation which does the
1692
+ // translation from the future protocol to our fiber API.
1693
+ FiberFuture {
1694
+ fiber,
1695
+ current_poll_cx,
1696
+ engine,
1697
+ state: Some(wasmtime_runtime::AsyncWasmCallState::new()),
1698
+ }
1699
+ };
1700
+ future.await?;
1701
+
1702
+ return Ok(slot.unwrap());
1703
+
1704
+ struct FiberFuture<'a> {
1705
+ fiber: wasmtime_fiber::Fiber<'a, Result<()>, (), Result<()>>,
1706
+ current_poll_cx: *mut *mut Context<'static>,
1707
+ engine: Engine,
1708
+ // See comments in `FiberFuture::resume` for this
1709
+ state: Option<wasmtime_runtime::AsyncWasmCallState>,
1710
+ }
1711
+
1712
+ // This is surely the most dangerous `unsafe impl Send` in the entire
1713
+ // crate. There are two members in `FiberFuture` which cause it to not
1714
+ // be `Send`. One is `current_poll_cx` and is entirely uninteresting.
1715
+ // This is just used to manage `Context` pointers across `await` points
1716
+ // in the future, and requires raw pointers to get it to happen easily.
1717
+ // Nothing too weird about the `Send`-ness, values aren't actually
1718
+ // crossing threads.
1719
+ //
1720
+ // The really interesting piece is `fiber`. Now the "fiber" here is
1721
+ // actual honest-to-god Rust code which we're moving around. What we're
1722
+ // doing is the equivalent of moving our thread's stack to another OS
1723
+ // thread. Turns out we, in general, have no idea what's on the stack
1724
+ // and would generally have no way to verify that this is actually safe
1725
+ // to do!
1726
+ //
1727
+ // Thankfully, though, Wasmtime has the power. Without being glib it's
1728
+ // actually worth examining what's on the stack. It's unfortunately not
1729
+ // super-local to this function itself. Our closure to `Fiber::new` runs
1730
+ // `func`, which is given to us from the outside. Thankfully, though, we
1731
+ // have tight control over this. Usage of `on_fiber` is typically done
1732
+ // *just* before entering WebAssembly itself, so we'll have a few stack
1733
+ // frames of Rust code (all in Wasmtime itself) before we enter wasm.
1734
+ //
1735
+ // Once we've entered wasm, well then we have a whole bunch of wasm
1736
+ // frames on the stack. We've got this nifty thing called Cranelift,
1737
+ // though, which allows us to also have complete control over everything
1738
+ // on the stack!
1739
+ //
1740
+ // Finally, when wasm switches back to the fiber's starting pointer
1741
+ // (this future we're returning) then it means wasm has reentered Rust.
1742
+ // Suspension can only happen via the `block_on` function of an
1743
+ // `AsyncCx`. This, conveniently, also happens entirely in Wasmtime
1744
+ // controlled code!
1745
+ //
1746
+ // There's an extremely important point that should be called out here.
1747
+ // User-provided futures **are not on the stack** during suspension
1748
+ // points. This is extremely crucial because we in general cannot reason
1749
+ // about Send/Sync for stack-local variables since rustc doesn't analyze
1750
+ // them at all. With our construction, though, we are guaranteed that
1751
+ // Wasmtime owns all stack frames between the stack of a fiber and when
1752
+ // the fiber suspends (and it could move across threads). At this time
1753
+ // the only user-provided piece of data on the stack is the future
1754
+ // itself given to us. Lo-and-behold as you might notice the future is
1755
+ // required to be `Send`!
1756
+ //
1757
+ // What this all boils down to is that we, as the authors of Wasmtime,
1758
+ // need to be extremely careful that on the async fiber stack we only
1759
+ // store Send things. For example we can't start using `Rc` willy nilly
1760
+ // by accident and leave a copy in TLS somewhere. (similarly we have to
1761
+ // be ready for TLS to change while we're executing wasm code between
1762
+ // suspension points).
1763
+ //
1764
+ // While somewhat onerous it shouldn't be too too hard (the TLS bit is
1765
+ // the hardest bit so far). This does mean, though, that no user should
1766
+ // ever have to worry about the `Send`-ness of Wasmtime. If rustc says
1767
+ // it's ok, then it's ok.
1768
+ //
1769
+ // With all that in mind we unsafely assert here that wasmtime is
1770
+ // correct. We declare the fiber as only containing Send data on its
1771
+ // stack, despite not knowing for sure at compile time that this is
1772
+ // correct. That's what `unsafe` in Rust is all about, though, right?
1773
+ unsafe impl Send for FiberFuture<'_> {}
1774
+
1775
+ impl FiberFuture<'_> {
1776
+ /// This is a helper function to call `resume` on the underlying
1777
+ /// fiber while correctly managing Wasmtime's thread-local data.
1778
+ ///
1779
+ /// Wasmtime's implementation of traps leverages thread-local data
1780
+ /// to get access to metadata during a signal. This thread-local
1781
+ /// data is a linked list of "activations" where the nodes of the
1782
+ /// linked list are stored on the stack. It would be invalid as a
1783
+ /// result to suspend a computation with the head of the linked list
1784
+ /// on this stack then move the stack to another thread and resume
1785
+ /// it. That means that a different thread would point to our stack
1786
+ /// and our thread doesn't point to our stack at all!
1787
+ ///
1788
+ /// Basically management of TLS is required here one way or another.
1789
+ /// The strategy currently settled on is to manage the list of
1790
+ /// activations created by this fiber as a unit. When a fiber
1791
+ /// resumes the linked list is prepended to the current thread's
1792
+ /// list. When the fiber is suspended then the fiber's list of
1793
+ /// activations are all removed en-masse and saved within the fiber.
1794
+ fn resume(&mut self, val: Result<()>) -> Result<Result<()>, ()> {
1795
+ unsafe {
1796
+ let prev = self.state.take().unwrap().push();
1797
+ let restore = Restore {
1798
+ fiber: self,
1799
+ state: Some(prev),
1800
+ };
1801
+ return restore.fiber.fiber.resume(val);
1802
+ }
1803
+
1804
+ struct Restore<'a, 'b> {
1805
+ fiber: &'a mut FiberFuture<'b>,
1806
+ state: Option<wasmtime_runtime::PreviousAsyncWasmCallState>,
1807
+ }
1808
+
1809
+ impl Drop for Restore<'_, '_> {
1810
+ fn drop(&mut self) {
1811
+ unsafe {
1812
+ self.fiber.state = Some(self.state.take().unwrap().restore());
1813
+ }
1814
+ }
1815
+ }
1816
+ }
1817
+ }
1818
+
1819
+ impl Future for FiberFuture<'_> {
1820
+ type Output = Result<()>;
1821
+
1822
+ fn poll(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll<Self::Output> {
1823
+ // We need to carry over this `cx` into our fiber's runtime
1824
+ // for when it tries to poll sub-futures that are created. Doing
1825
+ // this must be done unsafely, however, since `cx` is only alive
1826
+ // for this one singular function call. Here we do a `transmute`
1827
+ // to extend the lifetime of `Context` so it can be stored in
1828
+ // our `Store`, and then we replace the current polling context
1829
+ // with this one.
1830
+ //
1831
+ // Note that the replace is done for weird situations where
1832
+ // futures might be switching contexts and there's multiple
1833
+ // wasmtime futures in a chain of futures.
1834
+ //
1835
+ // On exit from this function, though, we reset the polling
1836
+ // context back to what it was to signify that `Store` no longer
1837
+ // has access to this pointer.
1838
+ unsafe {
1839
+ let _reset = Reset(self.current_poll_cx, *self.current_poll_cx);
1840
+ *self.current_poll_cx =
1841
+ std::mem::transmute::<&mut Context<'_>, *mut Context<'static>>(cx);
1842
+
1843
+ // After that's set up we resume execution of the fiber, which
1844
+ // may also start the fiber for the first time. This either
1845
+ // returns `Ok` saying the fiber finished (yay!) or it
1846
+ // returns `Err` with the payload passed to `suspend`, which
1847
+ // in our case is `()`.
1848
+ match self.resume(Ok(())) {
1849
+ Ok(result) => Poll::Ready(result),
1850
+
1851
+ // If `Err` is returned that means the fiber polled a
1852
+ // future but it said "Pending", so we propagate that
1853
+ // here.
1854
+ //
1855
+ // An additional safety check is performed when leaving
1856
+ // this function to help bolster the guarantees of
1857
+ // `unsafe impl Send` above. Notably this future may get
1858
+ // re-polled on a different thread. Wasmtime's
1859
+ // thread-local state points to the stack, however,
1860
+ // meaning that it would be incorrect to leave a pointer
1861
+ // in TLS when this function returns. This function
1862
+ // performs a runtime assert to verify that this is the
1863
+ // case, notably that the one TLS pointer Wasmtime uses
1864
+ // is not pointing anywhere within the stack. If it is
1865
+ // then that's a bug indicating that TLS management in
1866
+ // Wasmtime is incorrect.
1867
+ Err(()) => {
1868
+ if let Some(range) = self.fiber.stack().range() {
1869
+ wasmtime_runtime::AsyncWasmCallState::assert_current_state_not_in_range(range);
1870
+ }
1871
+ Poll::Pending
1872
+ }
1873
+ }
1874
+ }
1875
+ }
1876
+ }
1877
+
1878
+ // Dropping futures is pretty special in that it means the future has
1879
+ // been requested to be cancelled. Here we run the risk of dropping an
1880
+ // in-progress fiber, and if we were to do nothing then the fiber would
1881
+ // leak all its owned stack resources.
1882
+ //
1883
+ // To handle this we implement `Drop` here and, if the fiber isn't done,
1884
+ // resume execution of the fiber saying "hey please stop you're
1885
+ // interrupted". Our `Trap` created here (which has the stack trace
1886
+ // of whomever dropped us) will then get propagated in whatever called
1887
+ // `block_on`, and the idea is that the trap propagates all the way back
1888
+ // up to the original fiber start, finishing execution.
1889
+ //
1890
+ // We don't actually care about the fiber's return value here (no one's
1891
+ // around to look at it), we just assert the fiber finished to
1892
+ // completion.
1893
+ impl Drop for FiberFuture<'_> {
1894
+ fn drop(&mut self) {
1895
+ if !self.fiber.done() {
1896
+ let result = self.resume(Err(anyhow!("future dropped")));
1897
+ // This resumption with an error should always complete the
1898
+ // fiber. While it's technically possible for host code to catch
1899
+ // the trap and re-resume, we'd ideally like to signal that to
1900
+ // callers that they shouldn't be doing that.
1901
+ debug_assert!(result.is_ok());
1902
+ }
1903
+
1904
+ self.state.take().unwrap().assert_null();
1905
+
1906
+ unsafe {
1907
+ self.engine
1908
+ .allocator()
1909
+ .deallocate_fiber_stack(self.fiber.stack());
1910
+ }
1911
+ }
1912
+ }
1913
+ }
1914
+ }
1915
+
1916
+ #[cfg(feature = "async")]
1917
+ pub struct AsyncCx {
1918
+ current_suspend: *mut *const wasmtime_fiber::Suspend<Result<()>, (), Result<()>>,
1919
+ current_poll_cx: *mut *mut Context<'static>,
1920
+ }
1921
+
1922
+ #[cfg(feature = "async")]
1923
+ impl AsyncCx {
1924
+ /// Blocks on the asynchronous computation represented by `future` and
1925
+ /// produces the result here, in-line.
1926
+ ///
1927
+ /// This function is designed to only work when it's currently executing on
1928
+ /// a native fiber. This fiber provides the ability for us to handle the
1929
+ /// future's `Pending` state as "jump back to whomever called the fiber in
1930
+ /// an asynchronous fashion and propagate `Pending`". This tight coupling
1931
+ /// with `on_fiber` below is what powers the asynchronicity of calling wasm.
1932
+ /// Note that the asynchronous part only applies to host functions, wasm
1933
+ /// itself never really does anything asynchronous at this time.
1934
+ ///
1935
+ /// This function takes a `future` and will (appear to) synchronously wait
1936
+ /// on the result. While this function is executing it will fiber switch
1937
+ /// to-and-from the original frame calling `on_fiber` which should be a
1938
+ /// guarantee due to how async stores are configured.
1939
+ ///
1940
+ /// The return value here is either the output of the future `T`, or a trap
1941
+ /// which represents that the asynchronous computation was cancelled. It is
1942
+ /// not recommended to catch the trap and try to keep executing wasm, so
1943
+ /// we've tried to liberally document this.
1944
+ pub unsafe fn block_on<U>(
1945
+ &self,
1946
+ mut future: Pin<&mut (dyn Future<Output = U> + Send)>,
1947
+ ) -> Result<U> {
1948
+ // Take our current `Suspend` context which was configured as soon as
1949
+ // our fiber started. Note that we must load it at the front here and
1950
+ // save it on our stack frame. While we're polling the future other
1951
+ // fibers may be started for recursive computations, and the current
1952
+ // suspend context is only preserved at the edges of the fiber, not
1953
+ // during the fiber itself.
1954
+ //
1955
+ // For a little bit of extra safety we also replace the current value
1956
+ // with null to try to catch any accidental bugs on our part early.
1957
+ // This is all pretty unsafe so we're trying to be careful...
1958
+ //
1959
+ // Note that there should be a segfaulting test in `async_functions.rs`
1960
+ // if this `Reset` is removed.
1961
+ let suspend = *self.current_suspend;
1962
+ let _reset = Reset(self.current_suspend, suspend);
1963
+ *self.current_suspend = ptr::null();
1964
+ assert!(!suspend.is_null());
1965
+
1966
+ loop {
1967
+ let future_result = {
1968
+ let poll_cx = *self.current_poll_cx;
1969
+ let _reset = Reset(self.current_poll_cx, poll_cx);
1970
+ *self.current_poll_cx = ptr::null_mut();
1971
+ assert!(!poll_cx.is_null());
1972
+ future.as_mut().poll(&mut *poll_cx)
1973
+ };
1974
+
1975
+ match future_result {
1976
+ Poll::Ready(t) => break Ok(t),
1977
+ Poll::Pending => {}
1978
+ }
1979
+
1980
+ (*suspend).suspend(())?;
1981
+ }
1982
+ }
1983
+ }
1984
+
1985
+ unsafe impl<T> wasmtime_runtime::Store for StoreInner<T> {
1986
+ fn vmruntime_limits(&self) -> *mut VMRuntimeLimits {
1987
+ <StoreOpaque>::vmruntime_limits(self)
1988
+ }
1989
+
1990
+ fn epoch_ptr(&self) -> *const AtomicU64 {
1991
+ self.engine.epoch_counter() as *const _
1992
+ }
1993
+
1994
+ fn externref_activations_table(
1995
+ &mut self,
1996
+ ) -> (
1997
+ &mut VMExternRefActivationsTable,
1998
+ &dyn wasmtime_runtime::ModuleInfoLookup,
1999
+ ) {
2000
+ let inner = &mut self.inner;
2001
+ (&mut inner.externref_activations_table, &inner.modules)
2002
+ }
2003
+
2004
+ fn memory_growing(
2005
+ &mut self,
2006
+ current: usize,
2007
+ desired: usize,
2008
+ maximum: Option<usize>,
2009
+ ) -> Result<bool, anyhow::Error> {
2010
+ match self.limiter {
2011
+ Some(ResourceLimiterInner::Sync(ref mut limiter)) => {
2012
+ limiter(&mut self.data).memory_growing(current, desired, maximum)
2013
+ }
2014
+ #[cfg(feature = "async")]
2015
+ Some(ResourceLimiterInner::Async(ref mut limiter)) => unsafe {
2016
+ self.inner
2017
+ .async_cx()
2018
+ .expect("ResourceLimiterAsync requires async Store")
2019
+ .block_on(
2020
+ limiter(&mut self.data)
2021
+ .memory_growing(current, desired, maximum)
2022
+ .as_mut(),
2023
+ )?
2024
+ },
2025
+ None => Ok(true),
2026
+ }
2027
+ }
2028
+
2029
+ fn memory_grow_failed(&mut self, error: anyhow::Error) -> Result<()> {
2030
+ match self.limiter {
2031
+ Some(ResourceLimiterInner::Sync(ref mut limiter)) => {
2032
+ limiter(&mut self.data).memory_grow_failed(error)
2033
+ }
2034
+ #[cfg(feature = "async")]
2035
+ Some(ResourceLimiterInner::Async(ref mut limiter)) => {
2036
+ limiter(&mut self.data).memory_grow_failed(error)
2037
+ }
2038
+ None => {
2039
+ log::debug!("ignoring memory growth failure error: {error:?}");
2040
+ Ok(())
2041
+ }
2042
+ }
2043
+ }
2044
+
2045
+ fn table_growing(
2046
+ &mut self,
2047
+ current: u32,
2048
+ desired: u32,
2049
+ maximum: Option<u32>,
2050
+ ) -> Result<bool, anyhow::Error> {
2051
+ // Need to borrow async_cx before the mut borrow of the limiter.
2052
+ // self.async_cx() panicks when used with a non-async store, so
2053
+ // wrap this in an option.
2054
+ #[cfg(feature = "async")]
2055
+ let async_cx = if self.async_support() {
2056
+ Some(self.async_cx().unwrap())
2057
+ } else {
2058
+ None
2059
+ };
2060
+
2061
+ match self.limiter {
2062
+ Some(ResourceLimiterInner::Sync(ref mut limiter)) => {
2063
+ limiter(&mut self.data).table_growing(current, desired, maximum)
2064
+ }
2065
+ #[cfg(feature = "async")]
2066
+ Some(ResourceLimiterInner::Async(ref mut limiter)) => unsafe {
2067
+ async_cx
2068
+ .expect("ResourceLimiterAsync requires async Store")
2069
+ .block_on(
2070
+ limiter(&mut self.data)
2071
+ .table_growing(current, desired, maximum)
2072
+ .as_mut(),
2073
+ )?
2074
+ },
2075
+ None => Ok(true),
2076
+ }
2077
+ }
2078
+
2079
+ fn table_grow_failed(&mut self, error: anyhow::Error) -> Result<()> {
2080
+ match self.limiter {
2081
+ Some(ResourceLimiterInner::Sync(ref mut limiter)) => {
2082
+ limiter(&mut self.data).table_grow_failed(error)
2083
+ }
2084
+ #[cfg(feature = "async")]
2085
+ Some(ResourceLimiterInner::Async(ref mut limiter)) => {
2086
+ limiter(&mut self.data).table_grow_failed(error)
2087
+ }
2088
+ None => {
2089
+ log::debug!("ignoring table growth failure: {error:?}");
2090
+ Ok(())
2091
+ }
2092
+ }
2093
+ }
2094
+
2095
+ fn out_of_gas(&mut self) -> Result<()> {
2096
+ if !self.refuel() {
2097
+ return Err(Trap::OutOfFuel.into());
2098
+ }
2099
+ #[cfg(feature = "async")]
2100
+ if self.fuel_yield_interval.is_some() {
2101
+ self.async_yield_impl()?;
2102
+ }
2103
+ Ok(())
2104
+ }
2105
+
2106
+ fn new_epoch(&mut self) -> Result<u64, anyhow::Error> {
2107
+ // Temporarily take the configured behavior to avoid mutably borrowing
2108
+ // multiple times.
2109
+ let mut behavior = self.epoch_deadline_behavior.take();
2110
+ let delta_result = match &mut behavior {
2111
+ None => Err(Trap::Interrupt.into()),
2112
+ Some(callback) => callback((&mut *self).as_context_mut()).and_then(|update| {
2113
+ let delta = match update {
2114
+ UpdateDeadline::Continue(delta) => delta,
2115
+
2116
+ #[cfg(feature = "async")]
2117
+ UpdateDeadline::Yield(delta) => {
2118
+ assert!(
2119
+ self.async_support(),
2120
+ "cannot use `UpdateDeadline::Yield` without enabling async support in the config"
2121
+ );
2122
+ // Do the async yield. May return a trap if future was
2123
+ // canceled while we're yielded.
2124
+ self.async_yield_impl()?;
2125
+ delta
2126
+ }
2127
+ };
2128
+
2129
+ // Set a new deadline and return the new epoch deadline so
2130
+ // the Wasm code doesn't have to reload it.
2131
+ self.set_epoch_deadline(delta);
2132
+ Ok(self.get_epoch_deadline())
2133
+ })
2134
+ };
2135
+
2136
+ // Put back the original behavior which was replaced by `take`.
2137
+ self.epoch_deadline_behavior = behavior;
2138
+ delta_result
2139
+ }
2140
+
2141
+ #[cfg(feature = "component-model")]
2142
+ fn component_calls(&mut self) -> &mut wasmtime_runtime::component::CallContexts {
2143
+ &mut self.component_calls
2144
+ }
2145
+ }
2146
+
2147
+ impl<T> StoreInner<T> {
2148
+ pub(crate) fn set_epoch_deadline(&mut self, delta: u64) {
2149
+ // Set a new deadline based on the "epoch deadline delta".
2150
+ //
2151
+ // Safety: this is safe because the epoch deadline in the
2152
+ // `VMRuntimeLimits` is accessed only here and by Wasm guest code
2153
+ // running in this store, and we have a `&mut self` here.
2154
+ //
2155
+ // Also, note that when this update is performed while Wasm is
2156
+ // on the stack, the Wasm will reload the new value once we
2157
+ // return into it.
2158
+ let epoch_deadline = unsafe { (*self.vmruntime_limits()).epoch_deadline.get_mut() };
2159
+ *epoch_deadline = self.engine().current_epoch() + delta;
2160
+ }
2161
+
2162
+ fn epoch_deadline_trap(&mut self) {
2163
+ self.epoch_deadline_behavior = None;
2164
+ }
2165
+
2166
+ fn epoch_deadline_callback(
2167
+ &mut self,
2168
+ callback: Box<dyn FnMut(StoreContextMut<T>) -> Result<UpdateDeadline> + Send + Sync>,
2169
+ ) {
2170
+ self.epoch_deadline_behavior = Some(callback);
2171
+ }
2172
+
2173
+ fn epoch_deadline_async_yield_and_update(&mut self, delta: u64) {
2174
+ assert!(
2175
+ self.async_support(),
2176
+ "cannot use `epoch_deadline_async_yield_and_update` without enabling async support in the config"
2177
+ );
2178
+ #[cfg(feature = "async")]
2179
+ {
2180
+ self.epoch_deadline_behavior =
2181
+ Some(Box::new(move |_store| Ok(UpdateDeadline::Yield(delta))));
2182
+ }
2183
+ let _ = delta; // suppress warning in non-async build
2184
+ }
2185
+
2186
+ fn get_epoch_deadline(&self) -> u64 {
2187
+ // Safety: this is safe because, as above, it is only invoked
2188
+ // from within `new_epoch` which is called from guest Wasm
2189
+ // code, which will have an exclusive borrow on the Store.
2190
+ let epoch_deadline = unsafe { (*self.vmruntime_limits()).epoch_deadline.get_mut() };
2191
+ *epoch_deadline
2192
+ }
2193
+ }
2194
+
2195
+ impl<T: Default> Default for Store<T> {
2196
+ fn default() -> Store<T> {
2197
+ Store::new(&Engine::default(), T::default())
2198
+ }
2199
+ }
2200
+
2201
+ impl<T: fmt::Debug> fmt::Debug for Store<T> {
2202
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2203
+ let inner = &**self.inner as *const StoreInner<T>;
2204
+ f.debug_struct("Store")
2205
+ .field("inner", &inner)
2206
+ .field("data", &self.inner.data)
2207
+ .finish()
2208
+ }
2209
+ }
2210
+
2211
+ impl<T> Drop for Store<T> {
2212
+ fn drop(&mut self) {
2213
+ // for documentation on this `unsafe`, see `into_data`.
2214
+ unsafe {
2215
+ ManuallyDrop::drop(&mut self.inner.data);
2216
+ ManuallyDrop::drop(&mut self.inner);
2217
+ }
2218
+ }
2219
+ }
2220
+
2221
+ impl Drop for StoreOpaque {
2222
+ fn drop(&mut self) {
2223
+ // NB it's important that this destructor does not access `self.data`.
2224
+ // That is deallocated by `Drop for Store<T>` above.
2225
+
2226
+ unsafe {
2227
+ let allocator = self.engine.allocator();
2228
+ let ondemand = OnDemandInstanceAllocator::default();
2229
+ for instance in self.instances.iter_mut() {
2230
+ if let StoreInstanceKind::Dummy = instance.kind {
2231
+ ondemand.deallocate_module(&mut instance.handle);
2232
+ } else {
2233
+ allocator.deallocate_module(&mut instance.handle);
2234
+ }
2235
+ }
2236
+ ondemand.deallocate_module(&mut self.default_caller);
2237
+
2238
+ #[cfg(feature = "component-model")]
2239
+ {
2240
+ for _ in 0..self.num_component_instances {
2241
+ allocator.decrement_component_instance_count();
2242
+ }
2243
+ }
2244
+
2245
+ // See documentation for these fields on `StoreOpaque` for why they
2246
+ // must be dropped in this order.
2247
+ ManuallyDrop::drop(&mut self.store_data);
2248
+ ManuallyDrop::drop(&mut self.rooted_host_funcs);
2249
+ }
2250
+ }
2251
+ }
2252
+
2253
+ impl wasmtime_runtime::ModuleInfoLookup for ModuleRegistry {
2254
+ fn lookup(&self, pc: usize) -> Option<&dyn ModuleInfo> {
2255
+ self.lookup_module_info(pc)
2256
+ }
2257
+ }
2258
+
2259
+ struct Reset<T: Copy>(*mut T, T);
2260
+
2261
+ impl<T: Copy> Drop for Reset<T> {
2262
+ fn drop(&mut self) {
2263
+ unsafe {
2264
+ *self.0 = self.1;
2265
+ }
2266
+ }
2267
+ }
2268
+
2269
+ #[cfg(test)]
2270
+ mod tests {
2271
+ use super::{get_fuel, refuel, set_fuel};
2272
+ use std::num::NonZeroU64;
2273
+
2274
+ struct FuelTank {
2275
+ pub consumed_fuel: i64,
2276
+ pub reserve_fuel: u64,
2277
+ pub yield_interval: Option<NonZeroU64>,
2278
+ }
2279
+
2280
+ impl FuelTank {
2281
+ fn new() -> Self {
2282
+ FuelTank {
2283
+ consumed_fuel: 0,
2284
+ reserve_fuel: 0,
2285
+ yield_interval: None,
2286
+ }
2287
+ }
2288
+ fn get_fuel(&self) -> u64 {
2289
+ get_fuel(self.consumed_fuel, self.reserve_fuel)
2290
+ }
2291
+ fn refuel(&mut self) -> bool {
2292
+ refuel(
2293
+ &mut self.consumed_fuel,
2294
+ &mut self.reserve_fuel,
2295
+ self.yield_interval,
2296
+ )
2297
+ }
2298
+ fn set_fuel(&mut self, fuel: u64) {
2299
+ set_fuel(
2300
+ &mut self.consumed_fuel,
2301
+ &mut self.reserve_fuel,
2302
+ self.yield_interval,
2303
+ fuel,
2304
+ );
2305
+ }
2306
+ }
2307
+
2308
+ #[test]
2309
+ fn smoke() {
2310
+ let mut tank = FuelTank::new();
2311
+ tank.set_fuel(10);
2312
+ assert_eq!(tank.consumed_fuel, -10);
2313
+ assert_eq!(tank.reserve_fuel, 0);
2314
+
2315
+ tank.yield_interval = NonZeroU64::new(10);
2316
+ tank.set_fuel(25);
2317
+ assert_eq!(tank.consumed_fuel, -10);
2318
+ assert_eq!(tank.reserve_fuel, 15);
2319
+ }
2320
+
2321
+ #[test]
2322
+ fn does_not_lose_precision() {
2323
+ let mut tank = FuelTank::new();
2324
+ tank.set_fuel(u64::MAX);
2325
+ assert_eq!(tank.get_fuel(), u64::MAX);
2326
+
2327
+ tank.set_fuel(i64::MAX as u64);
2328
+ assert_eq!(tank.get_fuel(), i64::MAX as u64);
2329
+
2330
+ tank.set_fuel(i64::MAX as u64 + 1);
2331
+ assert_eq!(tank.get_fuel(), i64::MAX as u64 + 1);
2332
+ }
2333
+
2334
+ #[test]
2335
+ fn yielding_does_not_lose_precision() {
2336
+ let mut tank = FuelTank::new();
2337
+
2338
+ tank.yield_interval = NonZeroU64::new(10);
2339
+ tank.set_fuel(u64::MAX);
2340
+ assert_eq!(tank.get_fuel(), u64::MAX);
2341
+ assert_eq!(tank.consumed_fuel, -10);
2342
+ assert_eq!(tank.reserve_fuel, u64::MAX - 10);
2343
+
2344
+ tank.yield_interval = NonZeroU64::new(u64::MAX);
2345
+ tank.set_fuel(u64::MAX);
2346
+ assert_eq!(tank.get_fuel(), u64::MAX);
2347
+ assert_eq!(tank.consumed_fuel, -i64::MAX);
2348
+ assert_eq!(tank.reserve_fuel, u64::MAX - (i64::MAX as u64));
2349
+
2350
+ tank.yield_interval = NonZeroU64::new((i64::MAX as u64) + 1);
2351
+ tank.set_fuel(u64::MAX);
2352
+ assert_eq!(tank.get_fuel(), u64::MAX);
2353
+ assert_eq!(tank.consumed_fuel, -i64::MAX);
2354
+ assert_eq!(tank.reserve_fuel, u64::MAX - (i64::MAX as u64));
2355
+ }
2356
+
2357
+ #[test]
2358
+ fn refueling() {
2359
+ // It's possible to fuel to have consumed over the limit as some instructions can consume
2360
+ // multiple units of fuel at once. Refueling should be strict in it's consumption and not
2361
+ // add more fuel than there is.
2362
+ let mut tank = FuelTank::new();
2363
+
2364
+ tank.yield_interval = NonZeroU64::new(10);
2365
+ tank.reserve_fuel = 42;
2366
+ tank.consumed_fuel = 4;
2367
+ assert!(tank.refuel());
2368
+ assert_eq!(tank.reserve_fuel, 28);
2369
+ assert_eq!(tank.consumed_fuel, -10);
2370
+
2371
+ tank.yield_interval = NonZeroU64::new(1);
2372
+ tank.reserve_fuel = 8;
2373
+ tank.consumed_fuel = 4;
2374
+ assert_eq!(tank.get_fuel(), 4);
2375
+ assert!(tank.refuel());
2376
+ assert_eq!(tank.reserve_fuel, 3);
2377
+ assert_eq!(tank.consumed_fuel, -1);
2378
+ assert_eq!(tank.get_fuel(), 4);
2379
+
2380
+ tank.yield_interval = NonZeroU64::new(10);
2381
+ tank.reserve_fuel = 3;
2382
+ tank.consumed_fuel = 4;
2383
+ assert_eq!(tank.get_fuel(), 0);
2384
+ assert!(!tank.refuel());
2385
+ assert_eq!(tank.reserve_fuel, 3);
2386
+ assert_eq!(tank.consumed_fuel, 4);
2387
+ assert_eq!(tank.get_fuel(), 0);
2388
+ }
2389
+ }