mirror of
https://github.com/fluencelabs/marine.git
synced 2024-12-12 14:55:32 +00:00
delete excess options
This commit is contained in:
parent
28fd4b4ad2
commit
5e8505c3e7
@ -46,13 +46,13 @@ impl FCE {
|
|||||||
let module_abi = module.acquire_abi();
|
let module_abi = module.acquire_abi();
|
||||||
|
|
||||||
// TODO: introduce a macro for such things
|
// TODO: introduce a macro for such things
|
||||||
let allocate = module_abi.allocate.unwrap();
|
let allocate = module_abi.allocate;
|
||||||
namespace.insert(
|
namespace.insert(
|
||||||
config.allocate_fn_name.clone(),
|
config.allocate_fn_name.clone(),
|
||||||
func!(move |size: i32| -> i32 { allocate.call(size).expect("allocate failed") }),
|
func!(move |size: i32| -> i32 { allocate.call(size).expect("allocate failed") }),
|
||||||
);
|
);
|
||||||
|
|
||||||
let invoke = module_abi.invoke.unwrap();
|
let invoke = module_abi.invoke;
|
||||||
namespace.insert(
|
namespace.insert(
|
||||||
config.invoke_fn_name.clone(),
|
config.invoke_fn_name.clone(),
|
||||||
func!(move |offset: i32, size: i32| -> i32 {
|
func!(move |offset: i32, size: i32| -> i32 {
|
||||||
@ -60,7 +60,7 @@ impl FCE {
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
let deallocate = module_abi.deallocate.unwrap();
|
let deallocate = module_abi.deallocate;
|
||||||
namespace.insert(
|
namespace.insert(
|
||||||
config.deallocate_fn_name.clone(),
|
config.deallocate_fn_name.clone(),
|
||||||
func!(move |ptr: i32, size: i32| {
|
func!(move |ptr: i32, size: i32| {
|
||||||
@ -68,7 +68,7 @@ impl FCE {
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
let store = module_abi.store.unwrap();
|
let store = module_abi.store;
|
||||||
namespace.insert(
|
namespace.insert(
|
||||||
config.store_fn_name.clone(),
|
config.store_fn_name.clone(),
|
||||||
func!(move |offset: i32, value: i32| {
|
func!(move |offset: i32, value: i32| {
|
||||||
@ -76,7 +76,7 @@ impl FCE {
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
let load = module_abi.load.unwrap();
|
let load = module_abi.load;
|
||||||
namespace.insert(
|
namespace.insert(
|
||||||
config.load_fn_name.clone(),
|
config.load_fn_name.clone(),
|
||||||
func!(move |offset: i32| -> i32 { load.call(offset).expect("load failed") }),
|
func!(move |offset: i32| -> i32 { load.call(offset).expect("load failed") }),
|
||||||
@ -139,7 +139,7 @@ impl FCEService for FCE {
|
|||||||
|
|
||||||
Entry::Occupied(module) => {
|
Entry::Occupied(module) => {
|
||||||
if module.get().get_abi_ref_counter() != 0 {
|
if module.get().get_abi_ref_counter() != 0 {
|
||||||
return Err(FCEError::ModuleInUse)
|
return Err(FCEError::ModuleInUse);
|
||||||
}
|
}
|
||||||
module.remove_entry();
|
module.remove_entry();
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -30,17 +30,17 @@ use crate::vm::errors::FCEError;
|
|||||||
/// 5. deallocate(res, strlen(sql)) to clean memory.
|
/// 5. deallocate(res, strlen(sql)) to clean memory.
|
||||||
pub(crate) trait ModuleABI {
|
pub(crate) trait ModuleABI {
|
||||||
/// Allocates a region of memory inside a module. Used for passing argument inside the module.
|
/// Allocates a region of memory inside a module. Used for passing argument inside the module.
|
||||||
fn allocate(&self, size: i32) -> Result<i32, FCEError>;
|
fn allocate(&mut self, size: i32) -> Result<i32, FCEError>;
|
||||||
|
|
||||||
/// Deallocates previously allocated memory region.
|
/// Deallocates previously allocated memory region.
|
||||||
fn deallocate(&self, ptr: i32, size: i32) -> Result<(), FCEError>;
|
fn deallocate(&mut self, ptr: i32, size: i32) -> Result<(), FCEError>;
|
||||||
|
|
||||||
/// Calls the main entry point of a module called invoke.
|
/// Calls the main entry point of a module called invoke.
|
||||||
fn invoke(&self, arg_address: i32, arg_size: i32) -> Result<i32, FCEError>;
|
fn invoke(&mut self, arg_address: i32, arg_size: i32) -> Result<i32, FCEError>;
|
||||||
|
|
||||||
/// Stores one byte on given address.
|
/// Stores one byte on given address.
|
||||||
fn store(&self, address: i32, value: i32) -> Result<(), FCEError>;
|
fn store(&mut self, address: i32, value: i32) -> Result<(), FCEError>;
|
||||||
|
|
||||||
/// Loads one byte from given address.
|
/// Loads one byte from given address.
|
||||||
fn load(&self, address: i32) -> Result<i32, FCEError>;
|
fn load(&mut self, address: i32) -> Result<i32, FCEError>;
|
||||||
}
|
}
|
||||||
|
@ -34,11 +34,11 @@ pub(crate) struct ABI {
|
|||||||
// It is safe to use unwrap() while calling these functions because Option is used here
|
// It is safe to use unwrap() while calling these functions because Option is used here
|
||||||
// just to allow partially initialization. And all Option fields will contain Some if
|
// just to allow partially initialization. And all Option fields will contain Some if
|
||||||
// invoking FCE::new has been succeed.
|
// invoking FCE::new has been succeed.
|
||||||
pub(crate) allocate: Option<Func<'static, i32, i32>>,
|
pub(crate) allocate: Func<'static, i32, i32>,
|
||||||
pub(crate) deallocate: Option<Func<'static, (i32, i32), ()>>,
|
pub(crate) deallocate: Func<'static, (i32, i32), ()>,
|
||||||
pub(crate) invoke: Option<Func<'static, (i32, i32), i32>>,
|
pub(crate) invoke: Func<'static, (i32, i32), i32>,
|
||||||
pub(crate) store: Option<Func<'static, (i32, i32)>>,
|
pub(crate) store: Func<'static, (i32, i32)>,
|
||||||
pub(crate) load: Option<Func<'static, i32, i32>>,
|
pub(crate) load: Func<'static, i32, i32>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A building block of multi-modules scheme of FCE, represents one module that corresponds
|
/// A building block of multi-modules scheme of FCE, represents one module that corresponds
|
||||||
@ -106,11 +106,11 @@ impl FCEModule {
|
|||||||
);
|
);
|
||||||
|
|
||||||
Ok(ABI {
|
Ok(ABI {
|
||||||
allocate: Some(allocate),
|
allocate,
|
||||||
deallocate: Some(deallocate),
|
deallocate,
|
||||||
invoke: Some(invoke),
|
invoke,
|
||||||
store: Some(store),
|
store,
|
||||||
load: Some(load),
|
load,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -219,25 +219,24 @@ impl ModuleAPI for FCEModule {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rustfmt::skip]
|
|
||||||
impl ModuleABI for FCEModule {
|
impl ModuleABI for FCEModule {
|
||||||
fn allocate(&self, size: i32) -> Result<i32, FCEError> {
|
fn allocate(&mut self, size: i32) -> Result<i32, FCEError> {
|
||||||
Ok(self.abi.allocate.as_ref().unwrap().call(size)?)
|
Ok(self.abi.allocate.call(size)?)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn deallocate(&self, ptr: i32, size: i32) -> Result<(), FCEError> {
|
fn deallocate(&mut self, ptr: i32, size: i32) -> Result<(), FCEError> {
|
||||||
Ok(self.abi.deallocate.as_ref().unwrap().call(ptr, size)?)
|
Ok(self.abi.deallocate.call(ptr, size)?)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn invoke(&self, arg_address: i32, arg_size: i32) -> Result<i32, FCEError> {
|
fn invoke(&mut self, arg_address: i32, arg_size: i32) -> Result<i32, FCEError> {
|
||||||
Ok(self.abi.invoke.as_ref().unwrap().call(arg_address, arg_size)?)
|
Ok(self.abi.invoke.call(arg_address, arg_size)?)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn store(&self, address: i32, value: i32) -> Result<(), FCEError> {
|
fn store(&mut self, address: i32, value: i32) -> Result<(), FCEError> {
|
||||||
Ok(self.abi.store.as_ref().unwrap().call(address, value)?)
|
Ok(self.abi.store.call(address, value)?)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn load(&self, address: i32) -> Result<i32, FCEError> {
|
fn load(&mut self, address: i32) -> Result<i32, FCEError> {
|
||||||
Ok(self.abi.load.as_ref().unwrap().call(address)?)
|
Ok(self.abi.load.call(address)?)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user