Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

Commit 8439a0b

Browse files
authored
Remove unnecessary allocations when crossing WASM FFI boundary (#10191)
1 parent 6873fc6 commit 8439a0b

File tree

1 file changed

+2
-5
lines changed
  • primitives/runtime-interface/src

1 file changed

+2
-5
lines changed

primitives/runtime-interface/src/impls.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -318,9 +318,8 @@ macro_rules! impl_traits_for_arrays {
318318
type SelfInstance = [u8; $n];
319319

320320
fn from_ffi_value(context: &mut dyn FunctionContext, arg: u32) -> Result<[u8; $n]> {
321-
let data = context.read_memory(Pointer::new(arg), $n)?;
322321
let mut res = [0u8; $n];
323-
res.copy_from_slice(&data);
322+
context.read_memory_into(Pointer::new(arg), &mut res)?;
324323
Ok(res)
325324
}
326325
}
@@ -514,10 +513,8 @@ macro_rules! for_u128_i128 {
514513
type SelfInstance = $type;
515514

516515
fn from_ffi_value(context: &mut dyn FunctionContext, arg: u32) -> Result<$type> {
517-
let data =
518-
context.read_memory(Pointer::new(arg), mem::size_of::<$type>() as u32)?;
519516
let mut res = [0u8; mem::size_of::<$type>()];
520-
res.copy_from_slice(&data);
517+
context.read_memory_into(Pointer::new(arg), &mut res)?;
521518
Ok(<$type>::from_le_bytes(res))
522519
}
523520
}

0 commit comments

Comments
 (0)