Add some FIXME comments about using ptr::NonNull

This commit is contained in:
Simon Sapin 2018-01-22 13:28:08 +01:00
parent b78ac6ba6a
commit 4be3096040
3 changed files with 5 additions and 1 deletions

View file

@ -1,5 +1,6 @@
use std::marker::PhantomData; use std::marker::PhantomData;
// FIXME: remove this and use std::ptr::NonNull when Firefox requires Rust 1.25+
pub struct NonZeroPtr<T: 'static>(&'static T); pub struct NonZeroPtr<T: 'static>(&'static T);
impl<T: 'static> NonZeroPtr<T> { impl<T: 'static> NonZeroPtr<T> {
@ -57,4 +58,4 @@ impl<'a, T> From<&'a mut T> for Shared<T> {
fn from(reference: &'a mut T) -> Self { fn from(reference: &'a mut T) -> Self {
unsafe { Shared::new_unchecked(reference) } unsafe { Shared::new_unchecked(reference) }
} }
} }

View file

@ -83,6 +83,7 @@ const MAX_REFCOUNT: usize = (isize::MAX) as usize;
/// that this is all a temporary hack, this restriction is fine for now. /// that this is all a temporary hack, this restriction is fine for now.
/// ///
/// [1]: https://github.com/rust-lang/rust/issues/27730 /// [1]: https://github.com/rust-lang/rust/issues/27730
// FIXME: remove this and use std::ptr::NonNull when Firefox requires Rust 1.25+
pub struct NonZeroPtrMut<T: ?Sized + 'static>(&'static mut T); pub struct NonZeroPtrMut<T: ?Sized + 'static>(&'static mut T);
impl<T: ?Sized> NonZeroPtrMut<T> { impl<T: ?Sized> NonZeroPtrMut<T> {
pub fn new(ptr: *mut T) -> Self { pub fn new(ptr: *mut T) -> Self {

View file

@ -828,6 +828,8 @@ impl MallocSizeOf for RuleNode {
} }
} }
// FIXME: use std::ptr::NonNull when Firefox requires Rust 1.25+
#[derive(Clone)] #[derive(Clone)]
struct WeakRuleNode { struct WeakRuleNode {
p: NonZeroPtrMut<RuleNode>, p: NonZeroPtrMut<RuleNode>,