wasmer_wasix/syscalls/journal/actions/
update_memory.rs1use super::*;
2
3impl<'a> JournalSyscallPlayer<'a, '_> {
4 #[allow(clippy::result_large_err)]
5 pub(crate) unsafe fn action_update_compressed_memory(
6 &mut self,
7 region: Range<u64>,
8 compressed_data: Cow<'a, [u8]>,
9 differ_ethereal: Option<&mut Vec<JournalEntry<'a>>>,
10 ) -> Result<(), WasiRuntimeError> {
11 if Some(&self.cur_module_hash) != self.journal_module_hash.as_ref() {
12 tracing::trace!("Ignored journal - UpdateMemory");
13 return Ok(());
14 }
15
16 if self.bootstrapping {
17 tracing::trace!("Differ(stage) journal - UpdateMemory");
18 self.staged_differ_memory.push((region, compressed_data));
19 } else if let Some(differ_ethereal) = differ_ethereal {
20 tracing::trace!("Differ(ether) journal - UpdateMemory");
21 differ_ethereal.push(JournalEntry::UpdateMemoryRegionV1 {
22 region,
23 compressed_data,
24 });
25 } else {
26 tracing::trace!("Replay journal - UpdateMemory");
27 unsafe {
28 JournalEffector::apply_compressed_memory(&mut self.ctx, region, &compressed_data)
29 }
30 .map_err(anyhow_err_to_runtime_err)?;
31 }
32 Ok(())
33 }
34}