From 2e310f83ad53c919858230ffac429482ee44ef9a Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sat, 20 Aug 2016 20:37:54 +0200 Subject: [PATCH] Use feature try_borrow instead of borrow_state in script --- components/script/dom/bindings/cell.rs | 75 +++++++++++--------------- components/script/lib.rs | 2 +- 2 files changed, 32 insertions(+), 45 deletions(-) diff --git a/components/script/dom/bindings/cell.rs b/components/script/dom/bindings/cell.rs index 37143165a7d..3eb2a978c7a 100644 --- a/components/script/dom/bindings/cell.rs +++ b/components/script/dom/bindings/cell.rs @@ -6,7 +6,7 @@ use dom::bindings::trace::JSTraceable; use js::jsapi::JSTracer; -use std::cell::{BorrowState, Ref, RefCell, RefMut}; +use std::cell::{BorrowError, BorrowMutError, Ref, RefCell, RefMut}; use util::thread_state; use util::thread_state::SCRIPT; @@ -52,49 +52,6 @@ impl DOMRefCell { &mut *self.value.as_unsafe_cell().get() } - /// Is the cell mutably borrowed? - /// - /// For safety checks in debug builds only. - pub fn is_mutably_borrowed(&self) -> bool { - self.value.borrow_state() == BorrowState::Writing - } - - /// Attempts to immutably borrow the wrapped value. - /// - /// The borrow lasts until the returned `Ref` exits scope. Multiple - /// immutable borrows can be taken out at the same time. - /// - /// Returns `None` if the value is currently mutably borrowed. - /// - /// # Panics - /// - /// Panics if this is called off the script thread. - pub fn try_borrow(&self) -> Option> { - debug_assert!(thread_state::get().is_script()); - match self.value.borrow_state() { - BorrowState::Writing => None, - _ => Some(self.value.borrow()), - } - } - - /// Mutably borrows the wrapped value. - /// - /// The borrow lasts until the returned `RefMut` exits scope. The value - /// cannot be borrowed while this borrow is active. - /// - /// Returns `None` if the value is currently borrowed. - /// - /// # Panics - /// - /// Panics if this is called off the script thread. - pub fn try_borrow_mut(&self) -> Option> { - debug_assert!(thread_state::get().is_script()); - match self.value.borrow_state() { - BorrowState::Unused => Some(self.value.borrow_mut()), - _ => None, - } - } - /// Version of the above that we use during restyle while the script thread /// is blocked. pub fn borrow_mut_for_layout(&self) -> RefMut { @@ -149,4 +106,34 @@ impl DOMRefCell { pub fn borrow_mut(&self) -> RefMut { self.try_borrow_mut().expect("DOMRefCell already borrowed") } + + /// Attempts to immutably borrow the wrapped value. + /// + /// The borrow lasts until the returned `Ref` exits scope. Multiple + /// immutable borrows can be taken out at the same time. + /// + /// Returns `None` if the value is currently mutably borrowed. + /// + /// # Panics + /// + /// Panics if this is called off the script thread. + pub fn try_borrow(&self) -> Result, BorrowError> { + debug_assert!(thread_state::get().is_script()); + self.value.try_borrow() + } + + /// Mutably borrows the wrapped value. + /// + /// The borrow lasts until the returned `RefMut` exits scope. The value + /// cannot be borrowed while this borrow is active. + /// + /// Returns `None` if the value is currently borrowed. + /// + /// # Panics + /// + /// Panics if this is called off the script thread. + pub fn try_borrow_mut(&self) -> Result, BorrowMutError> { + debug_assert!(thread_state::get().is_script()); + self.value.try_borrow_mut() + } } diff --git a/components/script/lib.rs b/components/script/lib.rs index e0605ebbf67..bf5e7807a80 100644 --- a/components/script/lib.rs +++ b/components/script/lib.rs @@ -3,7 +3,6 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #![feature(as_unsafe_cell)] -#![feature(borrow_state)] #![feature(box_syntax)] #![feature(conservative_impl_trait)] #![feature(const_fn)] @@ -19,6 +18,7 @@ #![feature(slice_patterns)] #![feature(stmt_expr_attributes)] #![feature(question_mark)] +#![feature(try_borrow)] #![feature(try_from)] #![deny(unsafe_code)]