Skip to content

Commit abe45a9

Browse files
committed
Rename rustc_serialize::opaque::Encoder as MemEncoder.
This avoids the name clash with `rustc_serialize::Encoder` (a trait), and allows lots qualifiers to be removed and imports to be simplified (e.g. fewer `as` imports). (This was previously merged as commit 5 in #94732 and then was reverted in #97905 because of a perf regression caused by commit 4 in #94732.)
1 parent ca122c7 commit abe45a9

File tree

22 files changed

+124
-141
lines changed

22 files changed

+124
-141
lines changed

compiler/rustc_ast/src/ast.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use rustc_data_structures::stack::ensure_sufficient_stack;
3131
use rustc_data_structures::sync::Lrc;
3232
use rustc_data_structures::thin_vec::ThinVec;
3333
use rustc_macros::HashStable_Generic;
34-
use rustc_serialize::{self, Decoder, Encoder};
34+
use rustc_serialize::{Decodable, Decoder, Encodable, Encoder};
3535
use rustc_span::source_map::{respan, Spanned};
3636
use rustc_span::symbol::{kw, sym, Ident, Symbol};
3737
use rustc_span::{Span, DUMMY_SP};
@@ -2488,11 +2488,11 @@ rustc_index::newtype_index! {
24882488
}
24892489
}
24902490

2491-
impl<S: Encoder> rustc_serialize::Encodable<S> for AttrId {
2491+
impl<S: Encoder> Encodable<S> for AttrId {
24922492
fn encode(&self, _s: &mut S) {}
24932493
}
24942494

2495-
impl<D: Decoder> rustc_serialize::Decodable<D> for AttrId {
2495+
impl<D: Decoder> Decodable<D> for AttrId {
24962496
fn decode(_: &mut D) -> AttrId {
24972497
crate::attr::mk_attr_id()
24982498
}

compiler/rustc_codegen_ssa/src/lib.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ use rustc_middle::dep_graph::WorkProduct;
2929
use rustc_middle::middle::dependency_format::Dependencies;
3030
use rustc_middle::middle::exported_symbols::SymbolExportKind;
3131
use rustc_middle::ty::query::{ExternProviders, Providers};
32-
use rustc_serialize::{opaque, Decodable, Decoder, Encodable, Encoder};
32+
use rustc_serialize::opaque::{MemDecoder, MemEncoder};
33+
use rustc_serialize::{Decodable, Decoder, Encodable, Encoder};
3334
use rustc_session::config::{CrateType, OutputFilenames, OutputType, RUST_CGU_EXT};
3435
use rustc_session::cstore::{self, CrateSource};
3536
use rustc_session::utils::NativeLibKind;
@@ -203,7 +204,7 @@ const RUSTC_VERSION: Option<&str> = option_env!("CFG_VERSION");
203204

204205
impl CodegenResults {
205206
pub fn serialize_rlink(codegen_results: &CodegenResults) -> Vec<u8> {
206-
let mut encoder = opaque::Encoder::new();
207+
let mut encoder = MemEncoder::new();
207208
encoder.emit_raw_bytes(RLINK_MAGIC);
208209
// `emit_raw_bytes` is used to make sure that the version representation does not depend on
209210
// Encoder's inner representation of `u32`.
@@ -230,7 +231,7 @@ impl CodegenResults {
230231
return Err(".rlink file was produced with encoding version {version_array}, but the current version is {RLINK_VERSION}".to_string());
231232
}
232233

233-
let mut decoder = opaque::Decoder::new(&data[4..], 0);
234+
let mut decoder = MemDecoder::new(&data[4..], 0);
234235
let rustc_version = decoder.read_str();
235236
let current_version = RUSTC_VERSION.unwrap();
236237
if rustc_version != current_version {

compiler/rustc_data_structures/src/fingerprint.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::stable_hasher;
2-
use rustc_serialize::{Decodable, Encodable};
2+
use rustc_serialize::{Decodable, Decoder, Encodable, Encoder};
33
use std::convert::TryInto;
44
use std::hash::{Hash, Hasher};
55

@@ -142,14 +142,14 @@ impl stable_hasher::StableHasherResult for Fingerprint {
142142

143143
impl_stable_hash_via_hash!(Fingerprint);
144144

145-
impl<E: rustc_serialize::Encoder> Encodable<E> for Fingerprint {
145+
impl<E: Encoder> Encodable<E> for Fingerprint {
146146
#[inline]
147147
fn encode(&self, s: &mut E) {
148148
s.emit_raw_bytes(&self.to_le_bytes());
149149
}
150150
}
151151

152-
impl<D: rustc_serialize::Decoder> Decodable<D> for Fingerprint {
152+
impl<D: Decoder> Decodable<D> for Fingerprint {
153153
#[inline]
154154
fn decode(d: &mut D) -> Self {
155155
Fingerprint::from_le_bytes(d.read_raw_bytes(16).try_into().unwrap())
@@ -184,7 +184,7 @@ impl std::fmt::Display for PackedFingerprint {
184184
}
185185
}
186186

187-
impl<E: rustc_serialize::Encoder> Encodable<E> for PackedFingerprint {
187+
impl<E: Encoder> Encodable<E> for PackedFingerprint {
188188
#[inline]
189189
fn encode(&self, s: &mut E) {
190190
// Copy to avoid taking reference to packed field.
@@ -193,7 +193,7 @@ impl<E: rustc_serialize::Encoder> Encodable<E> for PackedFingerprint {
193193
}
194194
}
195195

196-
impl<D: rustc_serialize::Decoder> Decodable<D> for PackedFingerprint {
196+
impl<D: Decoder> Decodable<D> for PackedFingerprint {
197197
#[inline]
198198
fn decode(d: &mut D) -> Self {
199199
Self(Fingerprint::decode(d))

compiler/rustc_incremental/src/persist/load.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use rustc_data_structures::fx::FxHashMap;
44
use rustc_data_structures::memmap::Mmap;
55
use rustc_middle::dep_graph::{SerializedDepGraph, WorkProduct, WorkProductId};
66
use rustc_middle::ty::OnDiskCache;
7-
use rustc_serialize::opaque::Decoder;
7+
use rustc_serialize::opaque::MemDecoder;
88
use rustc_serialize::Decodable;
99
use rustc_session::config::IncrementalStateAssertion;
1010
use rustc_session::Session;
@@ -156,7 +156,7 @@ pub fn load_dep_graph(sess: &Session) -> DepGraphFuture {
156156

157157
if let LoadResult::Ok { data: (work_products_data, start_pos) } = load_result {
158158
// Decode the list of work_products
159-
let mut work_product_decoder = Decoder::new(&work_products_data[..], start_pos);
159+
let mut work_product_decoder = MemDecoder::new(&work_products_data[..], start_pos);
160160
let work_products: Vec<SerializedWorkProduct> =
161161
Decodable::decode(&mut work_product_decoder);
162162

@@ -193,7 +193,7 @@ pub fn load_dep_graph(sess: &Session) -> DepGraphFuture {
193193
LoadResult::DataOutOfDate => LoadResult::DataOutOfDate,
194194
LoadResult::Error { message } => LoadResult::Error { message },
195195
LoadResult::Ok { data: (bytes, start_pos) } => {
196-
let mut decoder = Decoder::new(&bytes, start_pos);
196+
let mut decoder = MemDecoder::new(&bytes, start_pos);
197197
let prev_commandline_args_hash = u64::decode(&mut decoder);
198198

199199
if prev_commandline_args_hash != expected_hash {

compiler/rustc_metadata/src/rmeta/decoder.rs

+5-4
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ use rustc_middle::ty::codec::TyDecoder;
2626
use rustc_middle::ty::fast_reject::SimplifiedType;
2727
use rustc_middle::ty::GeneratorDiagnosticData;
2828
use rustc_middle::ty::{self, ParameterizedOverTcx, Ty, TyCtxt, Visibility};
29-
use rustc_serialize::{opaque, Decodable, Decoder};
29+
use rustc_serialize::opaque::MemDecoder;
30+
use rustc_serialize::{Decodable, Decoder};
3031
use rustc_session::cstore::{
3132
CrateSource, ExternCrate, ForeignModule, LinkagePreference, NativeLib,
3233
};
@@ -154,7 +155,7 @@ struct ImportedSourceFile {
154155
}
155156

156157
pub(super) struct DecodeContext<'a, 'tcx> {
157-
opaque: opaque::Decoder<'a>,
158+
opaque: MemDecoder<'a>,
158159
cdata: Option<CrateMetadataRef<'a>>,
159160
blob: &'a MetadataBlob,
160161
sess: Option<&'tcx Session>,
@@ -186,7 +187,7 @@ pub(super) trait Metadata<'a, 'tcx>: Copy {
186187
fn decoder(self, pos: usize) -> DecodeContext<'a, 'tcx> {
187188
let tcx = self.tcx();
188189
DecodeContext {
189-
opaque: opaque::Decoder::new(self.blob(), pos),
190+
opaque: MemDecoder::new(self.blob(), pos),
190191
cdata: self.cdata(),
191192
blob: self.blob(),
192193
sess: self.sess().or(tcx.map(|tcx| tcx.sess)),
@@ -418,7 +419,7 @@ impl<'a, 'tcx> TyDecoder for DecodeContext<'a, 'tcx> {
418419
where
419420
F: FnOnce(&mut Self) -> R,
420421
{
421-
let new_opaque = opaque::Decoder::new(self.opaque.data, pos);
422+
let new_opaque = MemDecoder::new(self.opaque.data, pos);
422423
let old_opaque = mem::replace(&mut self.opaque, new_opaque);
423424
let old_state = mem::replace(&mut self.lazy_state, LazyState::NoNode);
424425
let r = f(self);

compiler/rustc_metadata/src/rmeta/encoder.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ use rustc_middle::ty::codec::TyEncoder;
2727
use rustc_middle::ty::fast_reject::{self, SimplifiedType, TreatParams};
2828
use rustc_middle::ty::query::Providers;
2929
use rustc_middle::ty::{self, SymbolName, Ty, TyCtxt};
30-
use rustc_serialize::{opaque, Encodable, Encoder};
30+
use rustc_serialize::opaque::MemEncoder;
31+
use rustc_serialize::{Encodable, Encoder};
3132
use rustc_session::config::CrateType;
3233
use rustc_session::cstore::{ForeignModule, LinkagePreference, NativeLib};
3334
use rustc_span::hygiene::{ExpnIndex, HygieneEncodeContext, MacroKind};
@@ -43,7 +44,7 @@ use std::num::NonZeroUsize;
4344
use tracing::{debug, trace};
4445

4546
pub(super) struct EncodeContext<'a, 'tcx> {
46-
opaque: opaque::Encoder,
47+
opaque: MemEncoder,
4748
tcx: TyCtxt<'tcx>,
4849
feat: &'tcx rustc_feature::Features,
4950

@@ -93,8 +94,8 @@ macro_rules! encoder_methods {
9394
}
9495

9596
impl<'a, 'tcx> Encoder for EncodeContext<'a, 'tcx> {
96-
type Ok = <opaque::Encoder as Encoder>::Ok;
97-
type Err = <opaque::Encoder as Encoder>::Err;
97+
type Ok = <MemEncoder as Encoder>::Ok;
98+
type Err = <MemEncoder as Encoder>::Err;
9899

99100
encoder_methods! {
100101
emit_usize(usize);
@@ -2180,7 +2181,7 @@ pub fn encode_metadata(tcx: TyCtxt<'_>) -> EncodedMetadata {
21802181
}
21812182

21822183
fn encode_metadata_impl(tcx: TyCtxt<'_>) -> EncodedMetadata {
2183-
let mut encoder = opaque::Encoder::new();
2184+
let mut encoder = MemEncoder::new();
21842185
encoder.emit_raw_bytes(METADATA_HEADER);
21852186

21862187
// Will be filled with the root position after encoding everything.

compiler/rustc_metadata/src/rmeta/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use rustc_middle::ty::fast_reject::SimplifiedType;
2222
use rustc_middle::ty::query::Providers;
2323
use rustc_middle::ty::{self, ReprOptions, Ty};
2424
use rustc_middle::ty::{GeneratorDiagnosticData, ParameterizedOverTcx, TyCtxt};
25-
use rustc_serialize::opaque::Encoder;
25+
use rustc_serialize::opaque::MemEncoder;
2626
use rustc_session::config::SymbolManglingVersion;
2727
use rustc_session::cstore::{CrateDepKind, ForeignModule, LinkagePreference, NativeLib};
2828
use rustc_span::edition::Edition;
@@ -323,7 +323,7 @@ macro_rules! define_tables {
323323
}
324324

325325
impl TableBuilders {
326-
fn encode(&self, buf: &mut Encoder) -> LazyTables {
326+
fn encode(&self, buf: &mut MemEncoder) -> LazyTables {
327327
LazyTables {
328328
$($name: self.$name.encode(buf)),+
329329
}

compiler/rustc_metadata/src/rmeta/table.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ use rustc_data_structures::fingerprint::Fingerprint;
44
use rustc_hir::def::{CtorKind, CtorOf};
55
use rustc_index::vec::Idx;
66
use rustc_middle::ty::ParameterizedOverTcx;
7-
use rustc_serialize::opaque::Encoder;
8-
use rustc_serialize::Encoder as _;
7+
use rustc_serialize::opaque::MemEncoder;
8+
use rustc_serialize::Encoder;
99
use rustc_span::hygiene::MacroKind;
1010
use std::convert::TryInto;
1111
use std::marker::PhantomData;
@@ -281,7 +281,7 @@ where
281281
Some(value).write_to_bytes(&mut self.blocks[i]);
282282
}
283283

284-
pub(crate) fn encode<const N: usize>(&self, buf: &mut Encoder) -> LazyTable<I, T>
284+
pub(crate) fn encode<const N: usize>(&self, buf: &mut MemEncoder) -> LazyTable<I, T>
285285
where
286286
Option<T>: FixedSizeEncoding<ByteArray = [u8; N]>,
287287
{

compiler/rustc_middle/src/mir/graph_cyclic_cache.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use rustc_data_structures::graph::{
33
};
44
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
55
use rustc_data_structures::sync::OnceCell;
6-
use rustc_serialize as serialize;
6+
use rustc_serialize::{Decodable, Decoder, Encodable, Encoder};
77

88
/// Helper type to cache the result of `graph::is_cyclic`.
99
#[derive(Clone, Debug)]
@@ -36,17 +36,17 @@ impl GraphIsCyclicCache {
3636
}
3737
}
3838

39-
impl<S: serialize::Encoder> serialize::Encodable<S> for GraphIsCyclicCache {
39+
impl<S: Encoder> Encodable<S> for GraphIsCyclicCache {
4040
#[inline]
4141
fn encode(&self, s: &mut S) {
42-
serialize::Encodable::encode(&(), s);
42+
Encodable::encode(&(), s);
4343
}
4444
}
4545

46-
impl<D: serialize::Decoder> serialize::Decodable<D> for GraphIsCyclicCache {
46+
impl<D: Decoder> Decodable<D> for GraphIsCyclicCache {
4747
#[inline]
4848
fn decode(d: &mut D) -> Self {
49-
let () = serialize::Decodable::decode(d);
49+
let () = Decodable::decode(d);
5050
Self::new()
5151
}
5252
}

compiler/rustc_middle/src/mir/predecessors.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
44
use rustc_data_structures::sync::OnceCell;
55
use rustc_index::vec::IndexVec;
6-
use rustc_serialize as serialize;
6+
use rustc_serialize::{Decodable, Decoder, Encodable, Encoder};
77
use smallvec::SmallVec;
88

99
use crate::mir::{BasicBlock, BasicBlockData};
@@ -54,12 +54,12 @@ impl PredecessorCache {
5454
}
5555
}
5656

57-
impl<S: serialize::Encoder> serialize::Encodable<S> for PredecessorCache {
57+
impl<S: Encoder> Encodable<S> for PredecessorCache {
5858
#[inline]
5959
fn encode(&self, _s: &mut S) {}
6060
}
6161

62-
impl<D: serialize::Decoder> serialize::Decodable<D> for PredecessorCache {
62+
impl<D: Decoder> Decodable<D> for PredecessorCache {
6363
#[inline]
6464
fn decode(_: &mut D) -> Self {
6565
Self::new()

compiler/rustc_middle/src/mir/switch_sources.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
55
use rustc_data_structures::stable_map::FxHashMap;
66
use rustc_data_structures::sync::OnceCell;
77
use rustc_index::vec::IndexVec;
8-
use rustc_serialize as serialize;
8+
use rustc_serialize::{Decodable, Decoder, Encodable, Encoder};
99
use smallvec::SmallVec;
1010

1111
use crate::mir::{BasicBlock, BasicBlockData, Terminator, TerminatorKind};
@@ -54,12 +54,12 @@ impl SwitchSourceCache {
5454
}
5555
}
5656

57-
impl<S: serialize::Encoder> serialize::Encodable<S> for SwitchSourceCache {
57+
impl<S: Encoder> Encodable<S> for SwitchSourceCache {
5858
#[inline]
5959
fn encode(&self, _s: &mut S) {}
6060
}
6161

62-
impl<D: serialize::Decoder> serialize::Decodable<D> for SwitchSourceCache {
62+
impl<D: Decoder> Decodable<D> for SwitchSourceCache {
6363
#[inline]
6464
fn decode(_: &mut D) -> Self {
6565
Self::new()

compiler/rustc_middle/src/mir/traversal.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
22
use rustc_data_structures::sync::OnceCell;
33
use rustc_index::bit_set::BitSet;
4-
use rustc_serialize as serialize;
4+
use rustc_serialize::{Decodable, Decoder, Encodable, Encoder};
55

66
use super::*;
77

@@ -365,12 +365,12 @@ impl PostorderCache {
365365
}
366366
}
367367

368-
impl<S: serialize::Encoder> serialize::Encodable<S> for PostorderCache {
368+
impl<S: Encoder> Encodable<S> for PostorderCache {
369369
#[inline]
370370
fn encode(&self, _s: &mut S) {}
371371
}
372372

373-
impl<D: serialize::Decoder> serialize::Decodable<D> for PostorderCache {
373+
impl<D: Decoder> Decodable<D> for PostorderCache {
374374
#[inline]
375375
fn decode(_: &mut D) -> Self {
376376
Self::new()

compiler/rustc_query_impl/src/on_disk_cache.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use rustc_middle::ty::{self, Ty, TyCtxt};
1515
use rustc_query_system::dep_graph::DepContext;
1616
use rustc_query_system::query::{QueryCache, QueryContext, QuerySideEffects};
1717
use rustc_serialize::{
18-
opaque::{self, FileEncodeResult, FileEncoder, IntEncodedWithFixedSize},
18+
opaque::{FileEncodeResult, FileEncoder, IntEncodedWithFixedSize, MemDecoder},
1919
Decodable, Decoder, Encodable, Encoder,
2020
};
2121
use rustc_session::Session;
@@ -158,7 +158,7 @@ impl<'sess> rustc_middle::ty::OnDiskCache<'sess> for OnDiskCache<'sess> {
158158

159159
// Wrap in a scope so we can borrow `data`.
160160
let footer: Footer = {
161-
let mut decoder = opaque::Decoder::new(&data, start_pos);
161+
let mut decoder = MemDecoder::new(&data, start_pos);
162162

163163
// Decode the *position* of the footer, which can be found in the
164164
// last 8 bytes of the file.
@@ -437,7 +437,7 @@ impl<'sess> OnDiskCache<'sess> {
437437
let serialized_data = self.serialized_data.read();
438438
let mut decoder = CacheDecoder {
439439
tcx,
440-
opaque: opaque::Decoder::new(serialized_data.as_deref().unwrap_or(&[]), pos.to_usize()),
440+
opaque: MemDecoder::new(serialized_data.as_deref().unwrap_or(&[]), pos.to_usize()),
441441
source_map: self.source_map,
442442
file_index_to_file: &self.file_index_to_file,
443443
file_index_to_stable_id: &self.file_index_to_stable_id,
@@ -458,7 +458,7 @@ impl<'sess> OnDiskCache<'sess> {
458458
/// will also handle things that contain `Ty` instances.
459459
pub struct CacheDecoder<'a, 'tcx> {
460460
tcx: TyCtxt<'tcx>,
461-
opaque: opaque::Decoder<'a>,
461+
opaque: MemDecoder<'a>,
462462
source_map: &'a SourceMap,
463463
file_index_to_file: &'a Lock<FxHashMap<SourceFileIndex, Lrc<SourceFile>>>,
464464
file_index_to_stable_id: &'a FxHashMap<SourceFileIndex, EncodedSourceFileId>,
@@ -510,7 +510,7 @@ trait DecoderWithPosition: Decoder {
510510
fn position(&self) -> usize;
511511
}
512512

513-
impl<'a> DecoderWithPosition for opaque::Decoder<'a> {
513+
impl<'a> DecoderWithPosition for MemDecoder<'a> {
514514
fn position(&self) -> usize {
515515
self.position()
516516
}
@@ -586,7 +586,7 @@ impl<'a, 'tcx> TyDecoder for CacheDecoder<'a, 'tcx> {
586586
{
587587
debug_assert!(pos < self.opaque.data.len());
588588

589-
let new_opaque = opaque::Decoder::new(self.opaque.data, pos);
589+
let new_opaque = MemDecoder::new(self.opaque.data, pos);
590590
let old_opaque = mem::replace(&mut self.opaque, new_opaque);
591591
let r = f(self);
592592
self.opaque = old_opaque;

0 commit comments

Comments
 (0)