Prepare mem_access commons

This commit is contained in:
Syrus Akbary
2023-02-09 16:52:48 -08:00
parent bd55e7b2a0
commit 039098ce2c
4 changed files with 11 additions and 9 deletions

View File

@@ -103,6 +103,7 @@ impl<'a> MemoryView<'a> {
Bytes(self.size as usize).try_into().unwrap()
}
#[inline]
pub(crate) fn buffer(&self) -> MemoryBuffer<'a> {
MemoryBuffer {
base: &self.view as *const _ as *mut _,

View File

@@ -30,12 +30,12 @@ pub enum MemoryAccessError {
impl From<MemoryAccessError> for RuntimeError {
fn from(err: MemoryAccessError) -> Self {
RuntimeError::new(err.to_string())
Self::new(err.to_string())
}
}
impl From<FromUtf8Error> for MemoryAccessError {
fn from(_err: FromUtf8Error) -> Self {
MemoryAccessError::NonUtf8String
Self::NonUtf8String
}
}
@@ -158,7 +158,7 @@ impl<'a, T: ValueType> WasmSlice<'a, T> {
///
/// Returns a `MemoryAccessError` if the slice length overflows.
#[inline]
pub fn new(memory: &'a MemoryView, offset: u64, len: u64) -> Result<Self, MemoryAccessError> {
pub fn new(view: &'a MemoryView, offset: u64, len: u64) -> Result<Self, MemoryAccessError> {
let total_len = len
.checked_mul(mem::size_of::<T>() as u64)
.ok_or(MemoryAccessError::Overflow)?;
@@ -166,7 +166,7 @@ impl<'a, T: ValueType> WasmSlice<'a, T> {
.checked_add(total_len)
.ok_or(MemoryAccessError::Overflow)?;
Ok(Self {
buffer: memory.buffer(),
buffer: view.buffer(),
offset,
len,
marker: PhantomData,
@@ -197,7 +197,7 @@ impl<'a, T: ValueType> WasmSlice<'a, T> {
self.len
}
/// Return if the slice is empty.
/// Returns `true` if the number of elements is 0.
#[inline]
pub fn is_empty(&self) -> bool {
self.len == 0
@@ -367,7 +367,7 @@ impl<'a, T: ValueType> Iterator for WasmSliceIter<'a, T> {
type Item = WasmRef<'a, T>;
fn next(&mut self) -> Option<Self::Item> {
if self.slice.len() != 0 {
if !self.slice.is_empty() {
let elem = self.slice.index(0);
self.slice = self.slice.subslice(1..self.slice.len());
Some(elem)
@@ -383,7 +383,7 @@ impl<'a, T: ValueType> Iterator for WasmSliceIter<'a, T> {
impl<'a, T: ValueType> DoubleEndedIterator for WasmSliceIter<'a, T> {
fn next_back(&mut self) -> Option<Self::Item> {
if self.slice.len() != 0 {
if !self.slice.is_empty() {
let elem = self.slice.index(self.slice.len() - 1);
self.slice = self.slice.subslice(0..self.slice.len() - 1);
Some(elem)

View File

@@ -96,6 +96,7 @@ impl<'a> MemoryView<'a> {
self.size
}
#[inline]
pub(crate) fn buffer(&'a self) -> MemoryBuffer<'a> {
self.buffer
}

View File

@@ -64,7 +64,7 @@ impl<'a, T: ValueType> WasmRef<'a, T> {
#[inline]
pub fn new(view: &'a MemoryView, offset: u64) -> Self {
Self {
buffer: view.buffer,
buffer: view.buffer(),
offset,
marker: PhantomData,
}
@@ -201,7 +201,7 @@ impl<'a, T: ValueType> WasmSlice<'a, T> {
/// Returns `true` if the number of elements is 0.
#[inline]
pub fn is_empty(self) -> bool {
pub fn is_empty(&self) -> bool {
self.len == 0
}