Remove some custom error types in Wasmtime (#5347)
* Remove some custom error types in Wasmtime These types are mostly cumbersome to work with nowadays that `anyhow` is used everywhere else. This commit removes `InstantiationError` and `SetupError` in favor of using `anyhow::Error` throughout. This can eventually culminate in creation of specific errors for embedders to downcast to but for now this should be general enough. * Fix Windows build
This commit is contained in:
@@ -14,39 +14,16 @@ use std::convert::TryFrom;
|
||||
use std::ops::Range;
|
||||
use std::str;
|
||||
use std::sync::Arc;
|
||||
use thiserror::Error;
|
||||
use wasmtime_environ::obj;
|
||||
use wasmtime_environ::{
|
||||
CompileError, DefinedFuncIndex, FuncIndex, FunctionLoc, MemoryInitialization, Module,
|
||||
ModuleTranslation, PrimaryMap, SignatureIndex, StackMapInformation, Tunables, WasmFunctionInfo,
|
||||
DefinedFuncIndex, FuncIndex, FunctionLoc, MemoryInitialization, Module, ModuleTranslation,
|
||||
PrimaryMap, SignatureIndex, StackMapInformation, Tunables, WasmFunctionInfo,
|
||||
};
|
||||
use wasmtime_runtime::{
|
||||
CompiledModuleId, CompiledModuleIdAllocator, GdbJitImageRegistration, InstantiationError,
|
||||
MmapVec, VMFunctionBody, VMTrampoline,
|
||||
CompiledModuleId, CompiledModuleIdAllocator, GdbJitImageRegistration, MmapVec, VMFunctionBody,
|
||||
VMTrampoline,
|
||||
};
|
||||
|
||||
/// An error condition while setting up a wasm instance, be it validation,
|
||||
/// compilation, or instantiation.
|
||||
#[derive(Error, Debug)]
|
||||
pub enum SetupError {
|
||||
/// The module did not pass validation.
|
||||
#[error("Validation error: {0}")]
|
||||
Validate(String),
|
||||
|
||||
/// A wasm translation error occurred.
|
||||
#[error("WebAssembly failed to compile")]
|
||||
Compile(#[from] CompileError),
|
||||
|
||||
/// Some runtime resource was unavailable or insufficient, or the start function
|
||||
/// trapped.
|
||||
#[error("Instantiation failed during setup")]
|
||||
Instantiate(#[from] InstantiationError),
|
||||
|
||||
/// Debug information generation error occurred.
|
||||
#[error("Debug information error")]
|
||||
DebugInfo(#[from] anyhow::Error),
|
||||
}
|
||||
|
||||
/// Secondary in-memory results of compilation.
|
||||
///
|
||||
/// This opaque structure can be optionally passed back to
|
||||
@@ -446,7 +423,7 @@ impl CompiledModule {
|
||||
if self.meta.native_debug_info_present {
|
||||
let text = self.text();
|
||||
let bytes = create_gdbjit_image(self.mmap().to_vec(), (text.as_ptr(), text.len()))
|
||||
.map_err(SetupError::DebugInfo)?;
|
||||
.context("failed to create jit image for gdb")?;
|
||||
profiler.module_load(self, Some(&bytes));
|
||||
let reg = GdbJitImageRegistration::register(bytes);
|
||||
self.dbg_jit_registration = Some(reg);
|
||||
|
||||
Reference in New Issue
Block a user