mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
Use u64 for incr comp allocation offsets
This commit is contained in:
parent
a161ab00db
commit
4e117a9b4e
@ -608,7 +608,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
|
||||
trace!("encoding {} further alloc ids", new_n - n);
|
||||
for idx in n..new_n {
|
||||
let id = self.interpret_allocs[idx];
|
||||
let pos = self.position() as u32;
|
||||
let pos = self.position() as u64;
|
||||
interpret_alloc_index.push(pos);
|
||||
interpret::specialized_encode_alloc_id(self, tcx, id);
|
||||
}
|
||||
|
@ -264,7 +264,7 @@ pub(crate) struct CrateRoot {
|
||||
traits: LazyArray<DefIndex>,
|
||||
impls: LazyArray<TraitImpls>,
|
||||
incoherent_impls: LazyArray<IncoherentImpls>,
|
||||
interpret_alloc_index: LazyArray<u32>,
|
||||
interpret_alloc_index: LazyArray<u64>,
|
||||
proc_macro_data: Option<ProcMacroData>,
|
||||
|
||||
tables: LazyTables,
|
||||
|
@ -274,7 +274,7 @@ pub struct AllocDecodingState {
|
||||
// For each `AllocId`, we keep track of which decoding state it's currently in.
|
||||
decoding_state: Vec<Lock<State>>,
|
||||
// The offsets of each allocation in the data stream.
|
||||
data_offsets: Vec<u32>,
|
||||
data_offsets: Vec<u64>,
|
||||
}
|
||||
|
||||
impl AllocDecodingState {
|
||||
@ -289,7 +289,7 @@ impl AllocDecodingState {
|
||||
AllocDecodingSession { state: self, session_id }
|
||||
}
|
||||
|
||||
pub fn new(data_offsets: Vec<u32>) -> Self {
|
||||
pub fn new(data_offsets: Vec<u64>) -> Self {
|
||||
let decoding_state =
|
||||
std::iter::repeat_with(|| Lock::new(State::Empty)).take(data_offsets.len()).collect();
|
||||
|
||||
|
@ -104,7 +104,9 @@ struct Footer {
|
||||
query_result_index: EncodedDepNodeIndex,
|
||||
side_effects_index: EncodedDepNodeIndex,
|
||||
// The location of all allocations.
|
||||
interpret_alloc_index: Vec<u32>,
|
||||
// Most uses only need values up to u32::MAX, but benchmarking indicates that we can use a u64
|
||||
// without measurable overhead. This permits larger const allocations without ICEing.
|
||||
interpret_alloc_index: Vec<u64>,
|
||||
// See `OnDiskCache.syntax_contexts`
|
||||
syntax_contexts: FxHashMap<u32, AbsoluteBytePos>,
|
||||
// See `OnDiskCache.expn_data`
|
||||
@ -301,7 +303,7 @@ impl<'sess> OnDiskCache<'sess> {
|
||||
interpret_alloc_index.reserve(new_n - n);
|
||||
for idx in n..new_n {
|
||||
let id = encoder.interpret_allocs[idx];
|
||||
let pos: u32 = encoder.position().try_into().unwrap();
|
||||
let pos: u64 = encoder.position().try_into().unwrap();
|
||||
interpret_alloc_index.push(pos);
|
||||
interpret::specialized_encode_alloc_id(&mut encoder, tcx, id);
|
||||
}
|
||||
|
@ -52,6 +52,7 @@ trivially_parameterized_over_tcx! {
|
||||
usize,
|
||||
(),
|
||||
u32,
|
||||
u64,
|
||||
bool,
|
||||
std::string::String,
|
||||
crate::metadata::ModChild,
|
||||
|
Loading…
Reference in New Issue
Block a user