Integrate Lightbeam with latest Wasmtime master (#1232)
* Implement trap info in Lightbeam * Start using wasm-reader instead of wasmparser for parsing operators * Update to use wasm-reader, some reductions in allocation, support source location tracking for traps, start to support multi-value The only thing that still needs to be supported for multi-value is stack returns, but we need to make it compatible with Cranelift. * Error when running out of registers (although we'd hope it should be impossible) instead of panicking * WIP: Update Lightbeam to work with latest Wasmtime * WIP: Update Lightbeam to use current wasmtime * WIP: Migrate to new system for builtin functions * WIP: Update Lightbeam to work with latest Wasmtime * Remove multi_mut * Format * Fix some bugs around arguments, add debuginfo offset tracking * Complete integration with new Wasmtime * Remove commented code * Fix formatting * Fix warnings, remove unused dependencies * Fix `iter` if there are too many elements, fix compilation for latest wasmtime * Fix float arguments on stack * Remove wasm-reader and trap info work * Allocate stack space _before_ passing arguments, fail if we can't zero a xmm reg * Fix stack argument offset calculation * Fix stack arguments in Lightbeam * Re-add WASI because it somehow got removed during rebase * Workaround for apparent `type_alias_impl_trait`-related bug in rustdoc * Fix breakages caused by rebase, remove module offset info as it is unrelated to wasmtime integration PR and was broken by rebase * Add TODO comment explaining `lightbeam::ModuleContext` trait
This commit is contained in:
@@ -300,8 +300,9 @@ impl Signature for CraneliftSignature {
|
||||
// TODO: We want to instead add the `VMContext` to the signature used by
|
||||
// cranelift, removing the special-casing from the internals.
|
||||
assert_eq!(self.params[0].purpose, ir::ArgumentPurpose::VMContext);
|
||||
// `self.params[1]` should be caller vmctx
|
||||
assert_eq!(self.call_conv, isa::CallConv::SystemV);
|
||||
&self.params[1..]
|
||||
&self.params[2..]
|
||||
}
|
||||
|
||||
fn returns(&self) -> &[Self::Type] {
|
||||
@@ -332,6 +333,7 @@ pub trait ModuleContext {
|
||||
type Signature: Signature;
|
||||
type GlobalType: SigType;
|
||||
|
||||
fn vmctx_builtin_function(&self, index: u32) -> u32;
|
||||
fn vmctx_vmglobal_definition(&self, index: u32) -> u32;
|
||||
fn vmctx_vmglobal_import_from(&self, index: u32) -> u32;
|
||||
fn vmctx_vmmemory_import_from(&self, memory_index: u32) -> u32;
|
||||
@@ -424,6 +426,10 @@ impl ModuleContext for SimpleContext {
|
||||
Some(index)
|
||||
}
|
||||
|
||||
fn vmctx_builtin_function(&self, _index: u32) -> u32 {
|
||||
unimplemented!()
|
||||
}
|
||||
|
||||
fn vmctx_vmfunction_import_body(&self, _func_index: u32) -> u32 {
|
||||
unimplemented!()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user