mirror of
https://github.com/fluencelabs/parity-wasm
synced 2025-05-29 07:31:54 +00:00
Change raw indexes with Host*Index types
This commit is contained in:
parent
97b74ed10e
commit
91cdc461bc
@ -7,6 +7,7 @@ use parity_wasm::interpreter::{
|
|||||||
Error as InterpreterError, ModuleInstance, UserError, ModuleRef,
|
Error as InterpreterError, ModuleInstance, UserError, ModuleRef,
|
||||||
HostFuncIndex, Externals, RuntimeValue, GlobalInstance, TableInstance, MemoryInstance,
|
HostFuncIndex, Externals, RuntimeValue, GlobalInstance, TableInstance, MemoryInstance,
|
||||||
TableRef, MemoryRef, GlobalRef, FuncRef, TryInto, ImportResolver, FuncInstance,
|
TableRef, MemoryRef, GlobalRef, FuncRef, TryInto, ImportResolver, FuncInstance,
|
||||||
|
HostGlobalIndex, HostMemoryIndex, HostTableIndex,
|
||||||
};
|
};
|
||||||
use parity_wasm::elements::{Error as DeserializationError};
|
use parity_wasm::elements::{Error as DeserializationError};
|
||||||
use parity_wasm::ValidationError;
|
use parity_wasm::ValidationError;
|
||||||
@ -191,15 +192,15 @@ impl<'a> Externals for Runtime<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn memory_by_index(&self, _index: usize) -> &MemoryInstance {
|
fn memory_by_index(&self, _index: HostMemoryIndex) -> Option<&MemoryInstance> {
|
||||||
panic!("host module doesn't export any memories")
|
panic!("host module doesn't export any memories")
|
||||||
}
|
}
|
||||||
|
|
||||||
fn table_by_index(&self, _index: usize) -> &TableInstance {
|
fn table_by_index(&self, _index: HostTableIndex) -> Option<&TableInstance> {
|
||||||
panic!("host module doesn't export any tables")
|
panic!("host module doesn't export any tables")
|
||||||
}
|
}
|
||||||
|
|
||||||
fn global_by_index(&self, _index: usize) -> &GlobalInstance {
|
fn global_by_index(&self, _index: HostGlobalIndex) -> Option<&GlobalInstance> {
|
||||||
panic!("host module doesn't export any globals")
|
panic!("host module doesn't export any globals")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,9 @@ use interpreter::value::RuntimeValue;
|
|||||||
use interpreter::Error;
|
use interpreter::Error;
|
||||||
|
|
||||||
pub type HostFuncIndex = u32;
|
pub type HostFuncIndex = u32;
|
||||||
|
pub type HostMemoryIndex = u32;
|
||||||
|
pub type HostTableIndex = u32;
|
||||||
|
pub type HostGlobalIndex = u32;
|
||||||
|
|
||||||
pub trait Externals {
|
pub trait Externals {
|
||||||
fn invoke_index(
|
fn invoke_index(
|
||||||
@ -16,9 +19,9 @@ pub trait Externals {
|
|||||||
|
|
||||||
fn check_signature(&self, index: HostFuncIndex, signature: &FunctionType) -> bool;
|
fn check_signature(&self, index: HostFuncIndex, signature: &FunctionType) -> bool;
|
||||||
|
|
||||||
fn memory_by_index(&self, index: usize) -> &MemoryInstance;
|
fn memory_by_index(&self, index: HostMemoryIndex) -> Option<&MemoryInstance>;
|
||||||
fn table_by_index(&self, index: usize) -> &TableInstance;
|
fn table_by_index(&self, index: HostTableIndex) -> Option<&TableInstance>;
|
||||||
fn global_by_index(&self, index: usize) -> &GlobalInstance;
|
fn global_by_index(&self, index: HostGlobalIndex) -> Option<&GlobalInstance>;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct EmptyExternals;
|
pub struct EmptyExternals;
|
||||||
@ -29,22 +32,22 @@ impl Externals for EmptyExternals {
|
|||||||
_index: HostFuncIndex,
|
_index: HostFuncIndex,
|
||||||
_args: &[RuntimeValue],
|
_args: &[RuntimeValue],
|
||||||
) -> Result<Option<RuntimeValue>, Error> {
|
) -> Result<Option<RuntimeValue>, Error> {
|
||||||
panic!("called invoke_index on EmptyExternals")
|
Err(Error::Trap("invoke index on empty externals".into()))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn check_signature(&self, _index: HostFuncIndex, _signature: &FunctionType) -> bool {
|
fn check_signature(&self, _index: HostFuncIndex, _signature: &FunctionType) -> bool {
|
||||||
panic!("called check_signature on EmptyExternals")
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
fn memory_by_index(&self, _index: usize) -> &MemoryInstance {
|
fn memory_by_index(&self, _index: HostMemoryIndex) -> Option<&MemoryInstance> {
|
||||||
panic!("called memory_by_index on EmptyExternals")
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
fn table_by_index(&self, _index: usize) -> &TableInstance {
|
fn table_by_index(&self, _index: HostTableIndex) -> Option<&TableInstance> {
|
||||||
panic!("called table_by_index on EmptyExternals")
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
fn global_by_index(&self, _index: usize) -> &GlobalInstance {
|
fn global_by_index(&self, _index: HostGlobalIndex) -> Option<&GlobalInstance> {
|
||||||
panic!("called global_by_index on EmptyExternals")
|
None
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -153,7 +153,7 @@ pub use self::memory::{MemoryInstance, MemoryRef};
|
|||||||
pub use self::table::{TableInstance, TableRef};
|
pub use self::table::{TableInstance, TableRef};
|
||||||
pub use self::program::ProgramInstance;
|
pub use self::program::ProgramInstance;
|
||||||
pub use self::value::{RuntimeValue, TryInto};
|
pub use self::value::{RuntimeValue, TryInto};
|
||||||
pub use self::host::{Externals, HostFuncIndex, EmptyExternals};
|
pub use self::host::{Externals, HostFuncIndex, HostGlobalIndex, HostMemoryIndex, HostTableIndex, EmptyExternals};
|
||||||
pub use self::imports::{ImportResolver, Imports};
|
pub use self::imports::{ImportResolver, Imports};
|
||||||
pub use self::module::{ModuleInstance, ModuleRef};
|
pub use self::module::{ModuleInstance, ModuleRef};
|
||||||
pub use self::global::{GlobalInstance, GlobalRef};
|
pub use self::global::{GlobalInstance, GlobalRef};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user