Update the *.wast runner to use the wasmtime API (#690)
* Update the `*.wast` runner to use the `wasmtime` API This commit migrates the `wasmtime-wast` crate, which executes `*.wast` test suites, to use the `wasmtime` crate exclusively instead of the raw support provided by the `wasmtime-*` family of crates. The primary motivation for this change is to use `*.wast` test to test the support for interface types, but interface types is only being added in the `wasmtime` crate for now rather than all throughout the core crates. This means that without this transition it's much more difficult to write tests for wasm interface types! A secondary motivation for this is that it's testing the support we provide to users through the `wasmtime` crate, since that's the expectation of what most users would use rather than the raw `wasmtime-*` crates. * Run rustfmt * Fix the multi example * Handle v128 values in the `wasmtime` crate Ensure that we allocate 128-bit stack slots instead of 64-bit stack slots. * Update to master * Add comment
This commit is contained in:
@@ -46,7 +46,6 @@ use wasmtime_wasi::create_wasi_instance;
|
||||
use wasmtime_wasi::old::snapshot_0::create_wasi_instance as create_wasi_instance_snapshot_0;
|
||||
#[cfg(feature = "wasi-c")]
|
||||
use wasmtime_wasi_c::instantiate_wasi_c;
|
||||
use wasmtime_wast::instantiate_spectest;
|
||||
|
||||
const USAGE: &str = "
|
||||
Wasm runner.
|
||||
@@ -275,12 +274,6 @@ fn main() -> Result<()> {
|
||||
|
||||
let mut module_registry = HashMap::new();
|
||||
|
||||
// Make spectest available by default.
|
||||
module_registry.insert(
|
||||
"spectest".to_owned(),
|
||||
HostRef::new(Instance::from_handle(&store, instantiate_spectest()?)),
|
||||
);
|
||||
|
||||
// Make wasi available by default.
|
||||
let preopen_dirs = compute_preopen_dirs(&args.flag_dir, &args.flag_mapdir);
|
||||
let argv = compute_argv(&args.arg_file, &args.arg_arg);
|
||||
|
||||
@@ -30,12 +30,12 @@ use pretty_env_logger;
|
||||
use serde::Deserialize;
|
||||
use std::path::Path;
|
||||
use std::process;
|
||||
use wasmtime::{Config, Engine, HostRef, Store};
|
||||
use wasmtime_cli::pick_compilation_strategy;
|
||||
use wasmtime_environ::settings;
|
||||
use wasmtime_environ::settings::Configurable;
|
||||
use wasmtime_environ::{cache_create_new_config, cache_init};
|
||||
use wasmtime_jit::native;
|
||||
use wasmtime_jit::{Compiler, Features};
|
||||
use wasmtime_jit::Features;
|
||||
use wasmtime_wast::WastContext;
|
||||
|
||||
const USAGE: &str = "
|
||||
@@ -128,7 +128,6 @@ fn main() {
|
||||
process::exit(1);
|
||||
}
|
||||
|
||||
let isa_builder = native::builder();
|
||||
let mut flag_builder = settings::builder();
|
||||
let mut features: Features = Default::default();
|
||||
|
||||
@@ -154,10 +153,12 @@ fn main() {
|
||||
|
||||
// Decide how to compile.
|
||||
let strategy = pick_compilation_strategy(args.flag_cranelift, args.flag_lightbeam);
|
||||
|
||||
let isa = isa_builder.finish(settings::Flags::new(flag_builder));
|
||||
let engine = Compiler::new(isa, strategy);
|
||||
let mut wast_context = WastContext::new(Box::new(engine)).with_features(features);
|
||||
let mut cfg = Config::new();
|
||||
cfg.strategy(strategy)
|
||||
.flags(settings::Flags::new(flag_builder))
|
||||
.features(features);
|
||||
let store = HostRef::new(Store::new(&HostRef::new(Engine::new(&cfg))));
|
||||
let mut wast_context = WastContext::new(store);
|
||||
|
||||
wast_context
|
||||
.register_spectest()
|
||||
|
||||
Reference in New Issue
Block a user