summaryrefslogtreecommitdiff
path: root/scripts/src/libs/allocate.rs
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/src/libs/allocate.rs')
-rw-r--r--scripts/src/libs/allocate.rs152
1 files changed, 76 insertions, 76 deletions
diff --git a/scripts/src/libs/allocate.rs b/scripts/src/libs/allocate.rs
index 7f2825d..c2bb2cf 100644
--- a/scripts/src/libs/allocate.rs
+++ b/scripts/src/libs/allocate.rs
@@ -1,76 +1,76 @@
-use wasmtime::Caller;
-
-use crate::{ScriptManager, WasmScriptState};
-
-use super::{
- system::{_alloc, _get_memory},
- LIBRARY_NAME,
-};
-
-fn allocate_zeroed(mut caller: Caller<'_, WasmScriptState>, size: u32, align: u32) -> u32 {
- let Some((ptr, data)) = _alloc(&mut caller, size, align) else {
- return 0;
- };
-
- data.fill(0);
- ptr
-}
-
-fn reallocate(
- mut caller: Caller<'_, WasmScriptState>,
- ptr: u32,
- size: u32,
- new_size: u32,
- align: u32,
-) -> u32 {
- if new_size < size {
- return ptr;
- }
-
- let bump_pointer = &mut caller.data_mut().bump_pointer;
- if *bump_pointer == ptr + size {
- *bump_pointer = ptr;
- let Some((new_ptr, _)) = _alloc(&mut caller, new_size, align) else {
- return 4;
- };
- return new_ptr;
- }
-
- let (_, original) = _get_memory(&mut caller);
- let Some(original) = original.get(ptr as usize..(ptr + size) as usize) else {
- return 4;
- };
- let original = original.to_vec();
-
- let Some((new_ptr, data)) = _alloc(&mut caller, new_size, align) else {
- return 0;
- };
-
- data.get_mut(..size as usize)
- .unwrap()
- .clone_from_slice(&original);
- new_ptr
-}
-
-fn duplicate(mut caller: Caller<'_, WasmScriptState>, ptr: u32, size: u32, align: u32) -> u32 {
- let (_, original) = _get_memory(&mut caller);
- let Some(original) = original.get(ptr as usize..(ptr + size) as usize) else {
- return 4;
- };
- let original = original.to_vec();
-
- let Some((new_ptr, data)) = _alloc(&mut caller, size, align) else {
- return 0;
- };
-
- data.clone_from_slice(&original);
- new_ptr
-}
-
-pub fn library(manager: &mut ScriptManager) -> Option<()> {
- manager.add_library_function(LIBRARY_NAME, "calloc", allocate_zeroed)?;
- manager.add_library_function(LIBRARY_NAME, "realloc", reallocate)?;
- manager.add_library_function(LIBRARY_NAME, "memdup", duplicate)?;
-
- Some(())
-}
+use wasmtime::Caller;
+
+use crate::{ScriptManager, WasmScriptState};
+
+use super::{
+ system::{_alloc, _get_memory},
+ LIBRARY_NAME,
+};
+
+fn allocate_zeroed(mut caller: Caller<'_, WasmScriptState>, size: u32, align: u32) -> u32 {
+ let Some((ptr, data)) = _alloc(&mut caller, size, align) else {
+ return 0;
+ };
+
+ data.fill(0);
+ ptr
+}
+
+fn reallocate(
+ mut caller: Caller<'_, WasmScriptState>,
+ ptr: u32,
+ size: u32,
+ new_size: u32,
+ align: u32,
+) -> u32 {
+ if new_size < size {
+ return ptr;
+ }
+
+ let bump_pointer = &mut caller.data_mut().bump_pointer;
+ if *bump_pointer == ptr + size {
+ *bump_pointer = ptr;
+ let Some((new_ptr, _)) = _alloc(&mut caller, new_size, align) else {
+ return 4;
+ };
+ return new_ptr;
+ }
+
+ let (_, original) = _get_memory(&mut caller);
+ let Some(original) = original.get(ptr as usize..(ptr + size) as usize) else {
+ return 4;
+ };
+ let original = original.to_vec();
+
+ let Some((new_ptr, data)) = _alloc(&mut caller, new_size, align) else {
+ return 0;
+ };
+
+ data.get_mut(..size as usize)
+ .unwrap()
+ .clone_from_slice(&original);
+ new_ptr
+}
+
+fn duplicate(mut caller: Caller<'_, WasmScriptState>, ptr: u32, size: u32, align: u32) -> u32 {
+ let (_, original) = _get_memory(&mut caller);
+ let Some(original) = original.get(ptr as usize..(ptr + size) as usize) else {
+ return 4;
+ };
+ let original = original.to_vec();
+
+ let Some((new_ptr, data)) = _alloc(&mut caller, size, align) else {
+ return 0;
+ };
+
+ data.clone_from_slice(&original);
+ new_ptr
+}
+
+pub fn library(manager: &mut ScriptManager) -> Option<()> {
+ manager.add_library_function(LIBRARY_NAME, "calloc", allocate_zeroed)?;
+ manager.add_library_function(LIBRARY_NAME, "realloc", reallocate)?;
+ manager.add_library_function(LIBRARY_NAME, "memdup", duplicate)?;
+
+ Some(())
+}