@@ -401,13 +401,13 @@ impl ExclusiveSharedMemory {
401401 }
402402
403403 /// Gets the dirty bitmap and then clears it in self.
404- pub ( crate ) fn get_and_clear_dirty_pages ( & mut self ) -> Result < Vec < u64 > > {
404+ pub ( crate ) fn get_and_clear_dirty_pages ( & self ) -> Result < Vec < u64 > > {
405405 let mut guard = self
406406 . dirty_page_tracker
407407 . try_lock ( )
408408 . map_err ( |_| new_error ! ( "Failed to acquire lock on dirty page tracker" ) ) ?;
409- let bitmap = guard. clone ( ) ;
410- guard . fill ( 0 ) ;
409+ let mut bitmap = vec ! [ 0 ; guard. len ( ) ] ;
410+ core :: mem :: swap ( & mut bitmap , & mut * guard ) ;
411411 Ok ( bitmap)
412412 }
413413
@@ -744,7 +744,7 @@ impl ExclusiveSharedMemory {
744744 }
745745
746746 /// Marks pages that cover bytes [offset, offset + size) as dirty
747- pub ( super ) fn mark_pages_dirty ( & mut self , offset : usize , size : usize ) -> Result < ( ) > {
747+ pub ( super ) fn mark_pages_dirty ( & self , offset : usize , size : usize ) -> Result < ( ) > {
748748 bounds_check ! ( offset, size, self . mem_size( ) ) ;
749749 let mut bitmap = self
750750 . dirty_page_tracker
@@ -1080,7 +1080,7 @@ impl HostSharedMemory {
10801080 }
10811081
10821082 /// Marks pages that cover bytes [offset, offset + size) as dirty
1083- pub ( super ) fn mark_pages_dirty ( & mut self , offset : usize , size : usize ) -> Result < ( ) > {
1083+ pub ( super ) fn mark_pages_dirty ( & self , offset : usize , size : usize ) -> Result < ( ) > {
10841084 bounds_check ! ( offset, size, self . mem_size( ) ) ;
10851085 let mut bitmap = self
10861086 . dirty_page_tracker
0 commit comments