1
Fork 0

Auto merge of #85829 - bjorn3:simplify_crate_num, r=jackh726

Remove CrateNum::ReservedForIncrCompCache

It's only use is easily replaceable with `Option<CrateNum>`.
This commit is contained in:
bors 2021-06-01 20:09:03 +00:00
commit 625d5a693e
7 changed files with 12 additions and 71 deletions

View file

@ -300,7 +300,7 @@ impl<'a, 'tcx> TyDecoder<'tcx> for DecodeContext<'a, 'tcx> {
{ {
let tcx = self.tcx(); let tcx = self.tcx();
let key = ty::CReaderCacheKey { cnum: self.cdata().cnum, pos: shorthand }; let key = ty::CReaderCacheKey { cnum: Some(self.cdata().cnum), pos: shorthand };
if let Some(&ty) = tcx.ty_rcache.borrow().get(&key) { if let Some(&ty) = tcx.ty_rcache.borrow().get(&key) {
return Ok(ty); return Ok(ty);

View file

@ -269,7 +269,7 @@ pub struct CrateVariancesMap<'tcx> {
// the types of AST nodes. // the types of AST nodes.
#[derive(Copy, Clone, PartialEq, Eq, Hash)] #[derive(Copy, Clone, PartialEq, Eq, Hash)]
pub struct CReaderCacheKey { pub struct CReaderCacheKey {
pub cnum: CrateNum, pub cnum: Option<CrateNum>,
pub pos: usize, pub pos: usize,
} }

View file

@ -755,8 +755,7 @@ impl<'a, 'tcx> TyDecoder<'tcx> for CacheDecoder<'a, 'tcx> {
{ {
let tcx = self.tcx(); let tcx = self.tcx();
let cache_key = let cache_key = ty::CReaderCacheKey { cnum: None, pos: shorthand };
ty::CReaderCacheKey { cnum: CrateNum::ReservedForIncrCompCache, pos: shorthand };
if let Some(&ty) = tcx.ty_rcache.borrow().get(&cache_key) { if let Some(&ty) = tcx.ty_rcache.borrow().get(&cache_key) {
return Ok(ty); return Ok(ty);

View file

@ -116,7 +116,6 @@ use crate::util::pretty;
use crate::util::spanview::{self, SpanViewable}; use crate::util::spanview::{self, SpanViewable};
use rustc_data_structures::fx::FxHashMap; use rustc_data_structures::fx::FxHashMap;
use rustc_index::vec::Idx;
use rustc_middle::mir::coverage::*; use rustc_middle::mir::coverage::*;
use rustc_middle::mir::{self, BasicBlock, TerminatorKind}; use rustc_middle::mir::{self, BasicBlock, TerminatorKind};
use rustc_middle::ty::TyCtxt; use rustc_middle::ty::TyCtxt;

View file

@ -1,6 +1,5 @@
use gsgdt::{Edge, Graph, Node, NodeStyle}; use gsgdt::{Edge, Graph, Node, NodeStyle};
use rustc_hir::def_id::DefId; use rustc_hir::def_id::DefId;
use rustc_index::vec::Idx;
use rustc_middle::mir::*; use rustc_middle::mir::*;
use rustc_middle::ty::TyCtxt; use rustc_middle::ty::TyCtxt;

View file

@ -9,65 +9,21 @@ use std::borrow::Borrow;
use std::fmt; use std::fmt;
rustc_index::newtype_index! { rustc_index::newtype_index! {
pub struct CrateId { pub struct CrateNum {
ENCODABLE = custom ENCODABLE = custom
DEBUG_FORMAT = "crate{}"
} }
} }
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub enum CrateNum {
/// A special `CrateNum` that we use for the `tcx.rcache` when decoding from
/// the incr. comp. cache.
ReservedForIncrCompCache,
Index(CrateId),
}
/// Item definitions in the currently-compiled crate would have the `CrateNum` /// Item definitions in the currently-compiled crate would have the `CrateNum`
/// `LOCAL_CRATE` in their `DefId`. /// `LOCAL_CRATE` in their `DefId`.
pub const LOCAL_CRATE: CrateNum = CrateNum::Index(CrateId::from_u32(0)); pub const LOCAL_CRATE: CrateNum = CrateNum::from_u32(0);
impl Idx for CrateNum {
#[inline]
fn new(value: usize) -> Self {
CrateNum::Index(Idx::new(value))
}
#[inline]
fn index(self) -> usize {
match self {
CrateNum::Index(idx) => Idx::index(idx),
_ => panic!("Tried to get crate index of {:?}", self),
}
}
}
impl CrateNum { impl CrateNum {
pub fn new(x: usize) -> CrateNum { pub fn new(x: usize) -> CrateNum {
CrateNum::from_usize(x) CrateNum::from_usize(x)
} }
pub fn from_usize(x: usize) -> CrateNum {
CrateNum::Index(CrateId::from_usize(x))
}
pub fn from_u32(x: u32) -> CrateNum {
CrateNum::Index(CrateId::from_u32(x))
}
pub fn as_usize(self) -> usize {
match self {
CrateNum::Index(id) => id.as_usize(),
_ => panic!("tried to get index of non-standard crate {:?}", self),
}
}
pub fn as_u32(self) -> u32 {
match self {
CrateNum::Index(id) => id.as_u32(),
_ => panic!("tried to get index of non-standard crate {:?}", self),
}
}
pub fn as_def_id(&self) -> DefId { pub fn as_def_id(&self) -> DefId {
DefId { krate: *self, index: CRATE_DEF_INDEX } DefId { krate: *self, index: CRATE_DEF_INDEX }
} }
@ -75,10 +31,7 @@ impl CrateNum {
impl fmt::Display for CrateNum { impl fmt::Display for CrateNum {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self { fmt::Display::fmt(&self.private, f)
CrateNum::Index(id) => fmt::Display::fmt(&id.private, f),
CrateNum::ReservedForIncrCompCache => write!(f, "crate for decoding incr comp cache"),
}
} }
} }
@ -96,15 +49,6 @@ impl<D: Decoder> Decodable<D> for CrateNum {
} }
} }
impl ::std::fmt::Debug for CrateNum {
fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
match self {
CrateNum::Index(id) => write!(fmt, "crate{}", id.private),
CrateNum::ReservedForIncrCompCache => write!(fmt, "crate for decoding incr comp cache"),
}
}
}
/// A `DefPathHash` is a fixed-size representation of a `DefPath` that is /// A `DefPathHash` is a fixed-size representation of a `DefPath` that is
/// stable across crate and compilation session boundaries. It consists of two /// stable across crate and compilation session boundaries. It consists of two
/// separate 64-bit hashes. The first uniquely identifies the crate this /// separate 64-bit hashes. The first uniquely identifies the crate this

View file

@ -11,15 +11,15 @@
11| 3| self.strength = new_strength; 11| 3| self.strength = new_strength;
12| 3| } 12| 3| }
------------------ ------------------
| <generics::Firework<f64>>::set_strength:
| 10| 2| fn set_strength(&mut self, new_strength: T) {
| 11| 2| self.strength = new_strength;
| 12| 2| }
------------------
| <generics::Firework<i32>>::set_strength: | <generics::Firework<i32>>::set_strength:
| 10| 1| fn set_strength(&mut self, new_strength: T) { | 10| 1| fn set_strength(&mut self, new_strength: T) {
| 11| 1| self.strength = new_strength; | 11| 1| self.strength = new_strength;
| 12| 1| } | 12| 1| }
------------------
| <generics::Firework<f64>>::set_strength:
| 10| 2| fn set_strength(&mut self, new_strength: T) {
| 11| 2| self.strength = new_strength;
| 12| 2| }
------------------ ------------------
13| |} 13| |}
14| | 14| |