layout: Stop racing on the JSManaged borrow flags

This commit is contained in:
Patrick Walton 2014-02-26 22:58:00 -08:00
parent 94a12469f0
commit 3c288a5b80
3 changed files with 90 additions and 37 deletions

View file

@ -89,6 +89,13 @@ impl<T> JS<T> {
&mut (**borrowed.get())
}
}
/// Returns an unsafe pointer to the interior of this JS object without touching the borrow
/// flags. This is the only method that be safely accessed from layout. (The fact that this
/// is unsafe is what necessitates the layout wrappers.)
pub unsafe fn unsafe_get(&self) -> *mut T {
cast::transmute_copy(&self.ptr)
}
}
impl<From, To> JS<From> {
@ -96,4 +103,8 @@ impl<From, To> JS<From> {
pub unsafe fn transmute(self) -> JS<To> {
cast::transmute(self)
}
pub unsafe fn transmute_copy(&self) -> JS<To> {
cast::transmute_copy(self)
}
}