mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
Auto merge of #19872 - nox:domrefcell-tracing, r=jdm
Make JSTraceable for DomRefCell<T> panic if cell is mutably borrowed <!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19872) <!-- Reviewable:end -->
This commit is contained in:
commit
c0d9f28b04
2 changed files with 1 additions and 13 deletions
|
@ -29,18 +29,6 @@ impl<T> DomRefCell<T> {
|
||||||
&*self.value.as_ptr()
|
&*self.value.as_ptr()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Borrow the contents for the purpose of GC tracing.
|
|
||||||
///
|
|
||||||
/// This succeeds even if the object is mutably borrowed,
|
|
||||||
/// so you have to be careful in trace code!
|
|
||||||
#[allow(unsafe_code)]
|
|
||||||
pub unsafe fn borrow_for_gc_trace(&self) -> &T {
|
|
||||||
// FIXME: IN_GC isn't reliable enough - doesn't catch minor GCs
|
|
||||||
// https://github.com/servo/servo/issues/6389
|
|
||||||
// debug_assert!(thread_state::get().contains(SCRIPT | IN_GC));
|
|
||||||
&*self.value.as_ptr()
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Borrow the contents for the purpose of script deallocation.
|
/// Borrow the contents for the purpose of script deallocation.
|
||||||
///
|
///
|
||||||
#[allow(unsafe_code)]
|
#[allow(unsafe_code)]
|
||||||
|
|
|
@ -206,7 +206,7 @@ unsafe impl<T: JSTraceable> JSTraceable for UnsafeCell<T> {
|
||||||
|
|
||||||
unsafe impl<T: JSTraceable> JSTraceable for DomRefCell<T> {
|
unsafe impl<T: JSTraceable> JSTraceable for DomRefCell<T> {
|
||||||
unsafe fn trace(&self, trc: *mut JSTracer) {
|
unsafe fn trace(&self, trc: *mut JSTracer) {
|
||||||
(*self).borrow_for_gc_trace().trace(trc)
|
(*self).borrow().trace(trc)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue