wiggle: factor BorrowChecker concrete implementation to live in engines
The BorrowChecker methods get inlined as part of the GuestMemory trait. The BorrowChecker implementation moves out to the engines. Unfortunately this does mean having a copy in `test-helpers` along with another in `wasmtime-wiggle`. The `wasmtime-wiggle` copy will move into `wasmtime` itself in a subsequent PR. https://github.com/bytecodealliance/wasmtime/issues/1917
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
use proptest::prelude::*;
|
||||
use std::cell::UnsafeCell;
|
||||
use std::marker;
|
||||
use wiggle::{BorrowChecker, GuestMemory};
|
||||
use wiggle::{BorrowHandle, GuestMemory, Region};
|
||||
|
||||
mod borrow;
|
||||
use borrow::BorrowChecker;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct MemAreas(Vec<MemArea>);
|
||||
@@ -119,8 +122,17 @@ unsafe impl GuestMemory for HostMemory {
|
||||
((*ptr).as_mut_ptr(), (*ptr).len() as u32)
|
||||
}
|
||||
}
|
||||
fn borrow_checker(&self) -> &BorrowChecker {
|
||||
&self.bc
|
||||
fn has_outstanding_borrows(&self) -> bool {
|
||||
self.bc.has_outstanding_borrows()
|
||||
}
|
||||
fn is_borrowed(&self, r: Region) -> bool {
|
||||
self.bc.is_borrowed(r)
|
||||
}
|
||||
fn borrow(&self, r: Region) -> Result<BorrowHandle, GuestError> {
|
||||
self.bc.borrow(r)
|
||||
}
|
||||
fn unborrow(&self, h: BorrowHandle) {
|
||||
self.bc.unborrow(h)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user