Bug 1630676 - Replace ScopedTLS::unsafe_get by ScopedTLS::into_slots. r=emilio

We only ever look at the slots after we are done with the thread pool,
so we don't need to expose any unsafety to inspect the slots.
This commit is contained in:
Anthony Ramine 2020-04-04 22:26:58 +02:00 committed by Emilio Cobos Álvarez
parent 265f2e8a89
commit 0f5b32207e
2 changed files with 6 additions and 8 deletions

View File

@ -165,10 +165,9 @@ pub fn traverse_dom<E, D>(
if dump_stats || report_stats {
let mut aggregate = mem::replace(&mut context.thread_local.statistics, Default::default());
let parallel = maybe_tls.is_some();
if let Some(ref mut tls) = maybe_tls {
let slots = unsafe { tls.unsafe_get() };
for slot in slots {
if let Some(ref cx) = *slot.borrow() {
if let Some(tls) = maybe_tls {
for mut slot in tls.into_slots().into_vec() {
if let Some(cx) = slot.get_mut() {
aggregate += cx.statistics.clone();
}
}

View File

@ -71,9 +71,8 @@ impl<'scope, T: Send> ScopedTLS<'scope, T> {
RefMut::map(opt, |x| x.as_mut().unwrap())
}
/// Unsafe access to the slots. This can be used to access the TLS when
/// the caller knows that the pool does not have access to the TLS.
pub unsafe fn unsafe_get(&self) -> &[RefCell<Option<T>>] {
&self.slots
/// Returns the slots, consuming the scope.
pub fn into_slots(self) -> Box<[RefCell<Option<T>>]> {
self.slots
}
}