mirror of
https://github.com/fluencelabs/wasmer
synced 2025-06-25 22:51:32 +00:00
Serialize/deserialize exception codes.
This commit is contained in:
@ -184,14 +184,20 @@ pub struct CompilerConfig {
|
||||
}
|
||||
|
||||
/// An exception table for a `RunnableModule`.
|
||||
#[derive(Clone, Debug, Default)]
|
||||
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
|
||||
pub struct ExceptionTable {
|
||||
/// Mappings from offsets in generated machine code to the corresponding exception code.
|
||||
pub offset_to_code: HashMap<usize, ExceptionCode>,
|
||||
}
|
||||
|
||||
impl ExceptionTable {
|
||||
pub fn new() -> Self {
|
||||
Self::default()
|
||||
}
|
||||
}
|
||||
|
||||
/// The code of an exception.
|
||||
#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd)]
|
||||
#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Serialize, Deserialize)]
|
||||
pub enum ExceptionCode {
|
||||
/// An `unreachable` opcode was executed.
|
||||
Unreachable,
|
||||
|
@ -1,6 +1,7 @@
|
||||
//! The error module contains the data structures and helper functions used to implement errors that
|
||||
//! are produced and returned from the wasmer runtime core.
|
||||
use crate::types::{FuncSig, GlobalDescriptor, MemoryDescriptor, TableDescriptor, Type};
|
||||
use crate::backend::ExceptionCode;
|
||||
use core::borrow::Borrow;
|
||||
use std::any::Any;
|
||||
|
||||
@ -208,6 +209,8 @@ impl std::fmt::Display for RuntimeError {
|
||||
write!(f, "\"{}\"", s)
|
||||
} else if let Some(s) = data.downcast_ref::<&str>() {
|
||||
write!(f, "\"{}\"", s)
|
||||
} else if let Some(exc_code) = data.downcast_ref::<ExceptionCode>() {
|
||||
write!(f, "\"{:?}\"", exc_code)
|
||||
} else {
|
||||
write!(f, "unknown error")
|
||||
}
|
||||
|
Reference in New Issue
Block a user