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:
@@ -1,6 +1,5 @@
|
||||
use crate::backend::{CodeGenSession, TranslatedCodeSection};
|
||||
use crate::backend::TranslatedCodeSection;
|
||||
use crate::error::Error;
|
||||
use crate::function_body;
|
||||
use crate::module::SimpleContext;
|
||||
use cranelift_codegen::{binemit, ir};
|
||||
use wasmparser::{
|
||||
@@ -106,20 +105,13 @@ impl binemit::RelocSink for UnimplementedRelocSink {
|
||||
|
||||
/// Parses the Code section of the wasm module.
|
||||
pub fn code(
|
||||
code: CodeSectionReader,
|
||||
translation_ctx: &SimpleContext,
|
||||
_code: CodeSectionReader,
|
||||
_translation_ctx: &SimpleContext,
|
||||
) -> Result<TranslatedCodeSection, Error> {
|
||||
let func_count = code.get_count();
|
||||
let mut session = CodeGenSession::new(func_count, translation_ctx);
|
||||
|
||||
for (idx, body) in code.into_iter().enumerate() {
|
||||
let body = body?;
|
||||
let mut relocs = UnimplementedRelocSink;
|
||||
|
||||
function_body::translate_wasm(&mut session, &mut relocs, idx as u32, &body)?;
|
||||
}
|
||||
|
||||
Ok(session.into_translated_code_section()?)
|
||||
// TODO: Remove the Lightbeam harness entirely, this is just to make this compile.
|
||||
// We do all our testing through Wasmtime now, there's no reason to duplicate
|
||||
// writing a WebAssembly environment in Lightbeam too.
|
||||
unimplemented!("Incomplete migration to wasm-reader");
|
||||
}
|
||||
|
||||
/// Parses the Data section of the wasm module.
|
||||
|
||||
Reference in New Issue
Block a user