mirror of
https://github.com/mii443/wasmer.git
synced 2025-12-10 14:48:27 +00:00
Prepare mem_access commons
This commit is contained in:
1
lib/api/src/js/externals/memory_view.rs
vendored
1
lib/api/src/js/externals/memory_view.rs
vendored
@@ -103,6 +103,7 @@ impl<'a> MemoryView<'a> {
|
|||||||
Bytes(self.size as usize).try_into().unwrap()
|
Bytes(self.size as usize).try_into().unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub(crate) fn buffer(&self) -> MemoryBuffer<'a> {
|
pub(crate) fn buffer(&self) -> MemoryBuffer<'a> {
|
||||||
MemoryBuffer {
|
MemoryBuffer {
|
||||||
base: &self.view as *const _ as *mut _,
|
base: &self.view as *const _ as *mut _,
|
||||||
|
|||||||
@@ -30,12 +30,12 @@ pub enum MemoryAccessError {
|
|||||||
|
|
||||||
impl From<MemoryAccessError> for RuntimeError {
|
impl From<MemoryAccessError> for RuntimeError {
|
||||||
fn from(err: MemoryAccessError) -> Self {
|
fn from(err: MemoryAccessError) -> Self {
|
||||||
RuntimeError::new(err.to_string())
|
Self::new(err.to_string())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl From<FromUtf8Error> for MemoryAccessError {
|
impl From<FromUtf8Error> for MemoryAccessError {
|
||||||
fn from(_err: FromUtf8Error) -> Self {
|
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.
|
/// Returns a `MemoryAccessError` if the slice length overflows.
|
||||||
#[inline]
|
#[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
|
let total_len = len
|
||||||
.checked_mul(mem::size_of::<T>() as u64)
|
.checked_mul(mem::size_of::<T>() as u64)
|
||||||
.ok_or(MemoryAccessError::Overflow)?;
|
.ok_or(MemoryAccessError::Overflow)?;
|
||||||
@@ -166,7 +166,7 @@ impl<'a, T: ValueType> WasmSlice<'a, T> {
|
|||||||
.checked_add(total_len)
|
.checked_add(total_len)
|
||||||
.ok_or(MemoryAccessError::Overflow)?;
|
.ok_or(MemoryAccessError::Overflow)?;
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
buffer: memory.buffer(),
|
buffer: view.buffer(),
|
||||||
offset,
|
offset,
|
||||||
len,
|
len,
|
||||||
marker: PhantomData,
|
marker: PhantomData,
|
||||||
@@ -197,7 +197,7 @@ impl<'a, T: ValueType> WasmSlice<'a, T> {
|
|||||||
self.len
|
self.len
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Return if the slice is empty.
|
/// Returns `true` if the number of elements is 0.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn is_empty(&self) -> bool {
|
pub fn is_empty(&self) -> bool {
|
||||||
self.len == 0
|
self.len == 0
|
||||||
@@ -367,7 +367,7 @@ impl<'a, T: ValueType> Iterator for WasmSliceIter<'a, T> {
|
|||||||
type Item = WasmRef<'a, T>;
|
type Item = WasmRef<'a, T>;
|
||||||
|
|
||||||
fn next(&mut self) -> Option<Self::Item> {
|
fn next(&mut self) -> Option<Self::Item> {
|
||||||
if self.slice.len() != 0 {
|
if !self.slice.is_empty() {
|
||||||
let elem = self.slice.index(0);
|
let elem = self.slice.index(0);
|
||||||
self.slice = self.slice.subslice(1..self.slice.len());
|
self.slice = self.slice.subslice(1..self.slice.len());
|
||||||
Some(elem)
|
Some(elem)
|
||||||
@@ -383,7 +383,7 @@ impl<'a, T: ValueType> Iterator for WasmSliceIter<'a, T> {
|
|||||||
|
|
||||||
impl<'a, T: ValueType> DoubleEndedIterator for WasmSliceIter<'a, T> {
|
impl<'a, T: ValueType> DoubleEndedIterator for WasmSliceIter<'a, T> {
|
||||||
fn next_back(&mut self) -> Option<Self::Item> {
|
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);
|
let elem = self.slice.index(self.slice.len() - 1);
|
||||||
self.slice = self.slice.subslice(0..self.slice.len() - 1);
|
self.slice = self.slice.subslice(0..self.slice.len() - 1);
|
||||||
Some(elem)
|
Some(elem)
|
||||||
|
|||||||
1
lib/api/src/sys/externals/memory_view.rs
vendored
1
lib/api/src/sys/externals/memory_view.rs
vendored
@@ -96,6 +96,7 @@ impl<'a> MemoryView<'a> {
|
|||||||
self.size
|
self.size
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub(crate) fn buffer(&'a self) -> MemoryBuffer<'a> {
|
pub(crate) fn buffer(&'a self) -> MemoryBuffer<'a> {
|
||||||
self.buffer
|
self.buffer
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ impl<'a, T: ValueType> WasmRef<'a, T> {
|
|||||||
#[inline]
|
#[inline]
|
||||||
pub fn new(view: &'a MemoryView, offset: u64) -> Self {
|
pub fn new(view: &'a MemoryView, offset: u64) -> Self {
|
||||||
Self {
|
Self {
|
||||||
buffer: view.buffer,
|
buffer: view.buffer(),
|
||||||
offset,
|
offset,
|
||||||
marker: PhantomData,
|
marker: PhantomData,
|
||||||
}
|
}
|
||||||
@@ -201,7 +201,7 @@ impl<'a, T: ValueType> WasmSlice<'a, T> {
|
|||||||
|
|
||||||
/// Returns `true` if the number of elements is 0.
|
/// Returns `true` if the number of elements is 0.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn is_empty(self) -> bool {
|
pub fn is_empty(&self) -> bool {
|
||||||
self.len == 0
|
self.len == 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user