Skip to content

Commit 02edd14

Browse files
committed
Convert some InternedStrings to Symbols.
This avoids the needs for various conversions, and makes the code slightly faster, because `Symbol` comparisons and hashing is faster.
1 parent c23a7aa commit 02edd14

File tree

21 files changed

+77
-77
lines changed

21 files changed

+77
-77
lines changed

src/librustc/hir/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use crate::ty::query::Providers;
1919
use crate::util::nodemap::{NodeMap, FxHashSet};
2020

2121
use errors::FatalError;
22-
use syntax_pos::{Span, DUMMY_SP, symbol::InternedString, MultiSpan};
22+
use syntax_pos::{Span, DUMMY_SP, MultiSpan};
2323
use syntax::source_map::Spanned;
2424
use syntax::ast::{self, CrateSugar, Ident, Name, NodeId, AsmDialect};
2525
use syntax::ast::{Attribute, Label, LitKind, StrStyle, FloatTy, IntTy, UintTy};
@@ -628,9 +628,9 @@ impl Generics {
628628
own_counts
629629
}
630630

631-
pub fn get_named(&self, name: InternedString) -> Option<&GenericParam> {
631+
pub fn get_named(&self, name: Symbol) -> Option<&GenericParam> {
632632
for param in &self.params {
633-
if name == param.name.ident().as_interned_str() {
633+
if name == param.name.ident().name {
634634
return Some(param);
635635
}
636636
}

src/librustc/infer/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ use std::cell::{Cell, Ref, RefCell, RefMut};
3232
use std::collections::BTreeMap;
3333
use std::fmt;
3434
use syntax::ast;
35-
use syntax_pos::symbol::InternedString;
35+
use syntax_pos::symbol::Symbol;
3636
use syntax_pos::Span;
3737

3838
use self::combine::CombineFields;
@@ -392,7 +392,7 @@ pub enum RegionVariableOrigin {
392392
Coercion(Span),
393393

394394
/// Region variables created as the values for early-bound regions
395-
EarlyBoundRegion(Span, InternedString),
395+
EarlyBoundRegion(Span, Symbol),
396396

397397
/// Region variables created for bound regions
398398
/// in a function or method that is called

src/librustc/infer/type_variable.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use syntax::symbol::InternedString;
1+
use syntax::symbol::Symbol;
22
use syntax_pos::Span;
33
use crate::ty::{self, Ty, TyVid};
44

@@ -49,7 +49,7 @@ pub enum TypeVariableOriginKind {
4949
MiscVariable,
5050
NormalizeProjectionType,
5151
TypeInference,
52-
TypeParameterDefinition(InternedString),
52+
TypeParameterDefinition(Symbol),
5353

5454
/// One of the upvars or closure kind parameters in a `ClosureSubsts`
5555
/// (before it has been determined).

src/librustc/infer/unify_key.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use crate::mir::interpret::ConstValue;
33
use rustc_data_structures::unify::{NoError, EqUnifyValue, UnifyKey, UnifyValue, UnificationTable};
44
use rustc_data_structures::unify::InPlace;
55
use syntax_pos::{Span, DUMMY_SP};
6-
use syntax::symbol::InternedString;
6+
use syntax::symbol::Symbol;
77

88
use std::cmp;
99
use std::marker::PhantomData;
@@ -90,7 +90,7 @@ pub struct ConstVariableOrigin {
9090
pub enum ConstVariableOriginKind {
9191
MiscVariable,
9292
ConstInference,
93-
ConstParameterDefinition(InternedString),
93+
ConstParameterDefinition(Symbol),
9494
SubstitutionPlaceholder,
9595
}
9696

src/librustc/traits/error_reporting.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
406406
},
407407
GenericParamDefKind::Lifetime => continue,
408408
};
409-
let name = param.name.as_symbol();
409+
let name = param.name;
410410
flags.push((name, Some(value)));
411411
}
412412

src/librustc/traits/object_safety.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use crate::ty::subst::{Subst, InternalSubsts};
1919
use std::borrow::Cow;
2020
use std::iter::{self};
2121
use syntax::ast::{self};
22-
use syntax::symbol::InternedString;
22+
use syntax::symbol::Symbol;
2323
use syntax_pos::{Span, DUMMY_SP};
2424

2525
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
@@ -560,7 +560,7 @@ impl<'tcx> TyCtxt<'tcx> {
560560
// are implemented
561561
let unsized_self_ty: Ty<'tcx> = self.mk_ty_param(
562562
::std::u32::MAX,
563-
InternedString::intern("RustaceansAreAwesome"),
563+
Symbol::intern("RustaceansAreAwesome"),
564564
);
565565

566566
// `Receiver[Self => U]`

src/librustc/traits/on_unimplemented.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ impl<'tcx> OnUnimplementedFormatString {
250250
Position::ArgumentNamed(s) if s == sym::from_desugaring => (),
251251
// So is `{A}` if A is a type parameter
252252
Position::ArgumentNamed(s) => match generics.params.iter().find(|param| {
253-
param.name.as_symbol() == s
253+
param.name == s
254254
}) {
255255
Some(_) => (),
256256
None => {
@@ -289,7 +289,7 @@ impl<'tcx> OnUnimplementedFormatString {
289289
},
290290
GenericParamDefKind::Lifetime => return None
291291
};
292-
let name = param.name.as_symbol();
292+
let name = param.name;
293293
Some((name, value))
294294
}).collect::<FxHashMap<Symbol, String>>();
295295
let empty_string = String::new();

src/librustc/traits/structural_impls.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::traits;
44
use crate::traits::project::Normalized;
55
use crate::ty::fold::{TypeFoldable, TypeFolder, TypeVisitor};
66
use crate::ty::{self, Lift, Ty, TyCtxt};
7-
use syntax::symbol::InternedString;
7+
use syntax::symbol::Symbol;
88

99
use std::fmt;
1010
use std::rc::Rc;
@@ -261,11 +261,11 @@ impl fmt::Display for traits::QuantifierKind {
261261
/// for debug output in tests anyway.
262262
struct BoundNamesCollector {
263263
// Just sort by name because `BoundRegion::BrNamed` does not have a `BoundVar` index anyway.
264-
regions: BTreeSet<InternedString>,
264+
regions: BTreeSet<Symbol>,
265265

266266
// Sort by `BoundVar` index, so usually this should be equivalent to the order given
267267
// by the list of type parameters.
268-
types: BTreeMap<u32, InternedString>,
268+
types: BTreeMap<u32, Symbol>,
269269

270270
binder_index: ty::DebruijnIndex,
271271
}
@@ -319,7 +319,7 @@ impl<'tcx> TypeVisitor<'tcx> for BoundNamesCollector {
319319
match bound_ty.kind {
320320
ty::BoundTyKind::Param(name) => name,
321321
ty::BoundTyKind::Anon =>
322-
InternedString::intern(&format!("^{}", bound_ty.var.as_u32()),
322+
Symbol::intern(&format!("^{}", bound_ty.var.as_u32()),
323323
),
324324
}
325325
);
@@ -340,7 +340,7 @@ impl<'tcx> TypeVisitor<'tcx> for BoundNamesCollector {
340340
}
341341

342342
ty::BoundRegion::BrAnon(var) => {
343-
self.regions.insert(InternedString::intern(&format!("'^{}", var)));
343+
self.regions.insert(Symbol::intern(&format!("'^{}", var)));
344344
}
345345

346346
_ => (),

src/librustc/ty/context.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ use syntax::ast;
7272
use syntax::attr;
7373
use syntax::source_map::MultiSpan;
7474
use syntax::feature_gate;
75-
use syntax::symbol::{Symbol, InternedString, kw, sym};
75+
use syntax::symbol::{Symbol, kw, sym};
7676
use syntax_pos::Span;
7777

7878
pub struct AllArenas {
@@ -949,7 +949,7 @@ impl<'tcx> CommonTypes<'tcx> {
949949
f64: mk(Float(ast::FloatTy::F64)),
950950
self_param: mk(ty::Param(ty::ParamTy {
951951
index: 0,
952-
name: kw::SelfUpper.as_interned_str(),
952+
name: kw::SelfUpper,
953953
})),
954954

955955
trait_object_dummy_self: mk(Infer(ty::FreshTy(0))),
@@ -2552,15 +2552,15 @@ impl<'tcx> TyCtxt<'tcx> {
25522552
}
25532553

25542554
#[inline]
2555-
pub fn mk_ty_param(self, index: u32, name: InternedString) -> Ty<'tcx> {
2555+
pub fn mk_ty_param(self, index: u32, name: Symbol) -> Ty<'tcx> {
25562556
self.mk_ty(Param(ParamTy { index, name: name }))
25572557
}
25582558

25592559
#[inline]
25602560
pub fn mk_const_param(
25612561
self,
25622562
index: u32,
2563-
name: InternedString,
2563+
name: Symbol,
25642564
ty: Ty<'tcx>
25652565
) -> &'tcx Const<'tcx> {
25662566
self.mk_const(ty::Const {

src/librustc/ty/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -849,7 +849,7 @@ impl ty::EarlyBoundRegion {
849849
/// Does this early bound region have a name? Early bound regions normally
850850
/// always have names except when using anonymous lifetimes (`'_`).
851851
pub fn has_name(&self) -> bool {
852-
self.name != kw::UnderscoreLifetime.as_interned_str()
852+
self.name != kw::UnderscoreLifetime
853853
}
854854
}
855855

@@ -866,7 +866,7 @@ pub enum GenericParamDefKind {
866866

867867
#[derive(Clone, RustcEncodable, RustcDecodable, HashStable)]
868868
pub struct GenericParamDef {
869-
pub name: InternedString,
869+
pub name: Symbol,
870870
pub def_id: DefId,
871871
pub index: u32,
872872

src/librustc/ty/print/pretty.rs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use rustc_apfloat::Float;
1414
use rustc_target::spec::abi::Abi;
1515
use syntax::ast;
1616
use syntax::attr::{SignedInt, UnsignedInt};
17-
use syntax::symbol::{kw, InternedString};
17+
use syntax::symbol::{kw, Symbol};
1818

1919
use std::cell::Cell;
2020
use std::fmt::{self, Write as _};
@@ -992,7 +992,7 @@ pub struct FmtPrinterData<'a, 'tcx, F> {
992992
empty_path: bool,
993993
in_value: bool,
994994

995-
used_region_names: FxHashSet<InternedString>,
995+
used_region_names: FxHashSet<Symbol>,
996996
region_index: usize,
997997
binder_depth: usize,
998998

@@ -1332,16 +1332,16 @@ impl<F: fmt::Write> PrettyPrinter<'tcx> for FmtPrinter<'_, 'tcx, F> {
13321332

13331333
match *region {
13341334
ty::ReEarlyBound(ref data) => {
1335-
data.name.as_symbol() != kw::Invalid &&
1336-
data.name.as_symbol() != kw::UnderscoreLifetime
1335+
data.name != kw::Invalid &&
1336+
data.name != kw::UnderscoreLifetime
13371337
}
13381338

13391339
ty::ReLateBound(_, br) |
13401340
ty::ReFree(ty::FreeRegion { bound_region: br, .. }) |
13411341
ty::RePlaceholder(ty::Placeholder { name: br, .. }) => {
13421342
if let ty::BrNamed(_, name) = br {
1343-
if name.as_symbol() != kw::Invalid &&
1344-
name.as_symbol() != kw::UnderscoreLifetime {
1343+
if name != kw::Invalid &&
1344+
name != kw::UnderscoreLifetime {
13451345
return true;
13461346
}
13471347
}
@@ -1397,7 +1397,7 @@ impl<F: fmt::Write> FmtPrinter<'_, '_, F> {
13971397
// `explain_region()` or `note_and_explain_region()`.
13981398
match *region {
13991399
ty::ReEarlyBound(ref data) => {
1400-
if data.name.as_symbol() != kw::Invalid {
1400+
if data.name != kw::Invalid {
14011401
p!(write("{}", data.name));
14021402
return Ok(self);
14031403
}
@@ -1406,8 +1406,8 @@ impl<F: fmt::Write> FmtPrinter<'_, '_, F> {
14061406
ty::ReFree(ty::FreeRegion { bound_region: br, .. }) |
14071407
ty::RePlaceholder(ty::Placeholder { name: br, .. }) => {
14081408
if let ty::BrNamed(_, name) = br {
1409-
if name.as_symbol() != kw::Invalid &&
1410-
name.as_symbol() != kw::UnderscoreLifetime {
1409+
if name != kw::Invalid &&
1410+
name != kw::UnderscoreLifetime {
14111411
p!(write("{}", name));
14121412
return Ok(self);
14131413
}
@@ -1474,11 +1474,11 @@ impl<F: fmt::Write> FmtPrinter<'_, 'tcx, F> {
14741474
where
14751475
T: Print<'tcx, Self, Output = Self, Error = fmt::Error> + TypeFoldable<'tcx>,
14761476
{
1477-
fn name_by_region_index(index: usize) -> InternedString {
1477+
fn name_by_region_index(index: usize) -> Symbol {
14781478
match index {
1479-
0 => InternedString::intern("'r"),
1480-
1 => InternedString::intern("'s"),
1481-
i => InternedString::intern(&format!("'t{}", i-2)),
1479+
0 => Symbol::intern("'r"),
1480+
1 => Symbol::intern("'s"),
1481+
i => Symbol::intern(&format!("'t{}", i-2)),
14821482
}
14831483
}
14841484

@@ -1541,7 +1541,7 @@ impl<F: fmt::Write> FmtPrinter<'_, 'tcx, F> {
15411541
where T: TypeFoldable<'tcx>
15421542
{
15431543

1544-
struct LateBoundRegionNameCollector<'a>(&'a mut FxHashSet<InternedString>);
1544+
struct LateBoundRegionNameCollector<'a>(&'a mut FxHashSet<Symbol>);
15451545
impl<'tcx> ty::fold::TypeVisitor<'tcx> for LateBoundRegionNameCollector<'_> {
15461546
fn visit_region(&mut self, r: ty::Region<'tcx>) -> bool {
15471547
match *r {

src/librustc/ty/sty.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use std::marker::PhantomData;
2424
use std::ops::Range;
2525
use rustc_target::spec::abi;
2626
use syntax::ast::{self, Ident};
27-
use syntax::symbol::{kw, InternedString};
27+
use syntax::symbol::{kw, Symbol};
2828

2929
use self::InferTy::*;
3030
use self::TyKind::*;
@@ -55,7 +55,7 @@ pub enum BoundRegion {
5555
///
5656
/// The `DefId` is needed to distinguish free regions in
5757
/// the event of shadowing.
58-
BrNamed(DefId, InternedString),
58+
BrNamed(DefId, Symbol),
5959

6060
/// Anonymous region for the implicit env pointer parameter
6161
/// to a closure
@@ -1123,16 +1123,16 @@ pub type CanonicalPolyFnSig<'tcx> = Canonical<'tcx, Binder<FnSig<'tcx>>>;
11231123
Hash, RustcEncodable, RustcDecodable, HashStable)]
11241124
pub struct ParamTy {
11251125
pub index: u32,
1126-
pub name: InternedString,
1126+
pub name: Symbol,
11271127
}
11281128

11291129
impl<'tcx> ParamTy {
1130-
pub fn new(index: u32, name: InternedString) -> ParamTy {
1130+
pub fn new(index: u32, name: Symbol) -> ParamTy {
11311131
ParamTy { index, name: name }
11321132
}
11331133

11341134
pub fn for_self() -> ParamTy {
1135-
ParamTy::new(0, kw::SelfUpper.as_interned_str())
1135+
ParamTy::new(0, kw::SelfUpper)
11361136
}
11371137

11381138
pub fn for_def(def: &ty::GenericParamDef) -> ParamTy {
@@ -1148,11 +1148,11 @@ impl<'tcx> ParamTy {
11481148
Eq, PartialEq, Ord, PartialOrd, HashStable)]
11491149
pub struct ParamConst {
11501150
pub index: u32,
1151-
pub name: InternedString,
1151+
pub name: Symbol,
11521152
}
11531153

11541154
impl<'tcx> ParamConst {
1155-
pub fn new(index: u32, name: InternedString) -> ParamConst {
1155+
pub fn new(index: u32, name: Symbol) -> ParamConst {
11561156
ParamConst { index, name }
11571157
}
11581158

@@ -1325,7 +1325,7 @@ impl<'tcx> rustc_serialize::UseSpecializedDecodable for Region<'tcx> {}
13251325
pub struct EarlyBoundRegion {
13261326
pub def_id: DefId,
13271327
pub index: u32,
1328-
pub name: InternedString,
1328+
pub name: Symbol,
13291329
}
13301330

13311331
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, RustcEncodable, RustcDecodable)]
@@ -1389,7 +1389,7 @@ pub struct BoundTy {
13891389
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, RustcEncodable, RustcDecodable)]
13901390
pub enum BoundTyKind {
13911391
Anon,
1392-
Param(InternedString),
1392+
Param(Symbol),
13931393
}
13941394

13951395
impl_stable_hash_for!(struct BoundTy { var, kind });

src/librustc_codegen_llvm/debuginfo/metadata.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ use std::iter;
4646
use std::ptr;
4747
use std::path::{Path, PathBuf};
4848
use syntax::ast;
49-
use syntax::symbol::{Interner, InternedString};
49+
use syntax::symbol::{Interner, Symbol};
5050
use syntax_pos::{self, Span, FileName};
5151

5252
impl PartialEq for llvm::Metadata {
@@ -2127,7 +2127,7 @@ fn compute_type_parameters(cx: &CodegenCx<'ll, 'tcx>, ty: Ty<'tcx>) -> Option<&'
21272127

21282128
fn get_parameter_names(cx: &CodegenCx<'_, '_>,
21292129
generics: &ty::Generics)
2130-
-> Vec<InternedString> {
2130+
-> Vec<Symbol> {
21312131
let mut names = generics.parent.map_or(vec![], |def_id| {
21322132
get_parameter_names(cx, cx.tcx.generics_of(def_id))
21332133
});

0 commit comments

Comments
 (0)