Skip to content

Commit b96be5b

Browse files
committed
Avoid as_str() in ParamTy::is_self.
It's a hot function, and a direct `Symbol` comparison is faster. The patch also converts some `&InternedString`s to `InternedString`.
1 parent 6afcb56 commit b96be5b

File tree

5 files changed

+12
-12
lines changed

5 files changed

+12
-12
lines changed

src/librustc/hir/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -609,9 +609,9 @@ impl Generics {
609609
own_counts
610610
}
611611

612-
pub fn get_named(&self, name: &InternedString) -> Option<&GenericParam> {
612+
pub fn get_named(&self, name: InternedString) -> Option<&GenericParam> {
613613
for param in &self.params {
614-
if *name == param.name.ident().as_interned_str() {
614+
if name == param.name.ident().as_interned_str() {
615615
return Some(param);
616616
}
617617
}

src/librustc/infer/error_reporting/mod.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -194,20 +194,20 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
194194
let mut sp = cm.def_span(self.hir().span_by_hir_id(node));
195195
if let Some(param) = self.hir()
196196
.get_generics(scope)
197-
.and_then(|generics| generics.get_named(&br.name))
197+
.and_then(|generics| generics.get_named(br.name))
198198
{
199199
sp = param.span;
200200
}
201201
(format!("the lifetime {} as defined on", br.name), sp)
202202
}
203203
ty::ReFree(ty::FreeRegion {
204-
bound_region: ty::BoundRegion::BrNamed(_, ref name),
204+
bound_region: ty::BoundRegion::BrNamed(_, name),
205205
..
206206
}) => {
207207
let mut sp = cm.def_span(self.hir().span_by_hir_id(node));
208208
if let Some(param) = self.hir()
209209
.get_generics(scope)
210-
.and_then(|generics| generics.get_named(&name))
210+
.and_then(|generics| generics.get_named(name))
211211
{
212212
sp = param.span;
213213
}

src/librustc/infer/error_reporting/nice_region_error/util.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ impl<'a, 'gcx, 'tcx> NiceRegionError<'a, 'gcx, 'tcx> {
4343
) -> Option<AnonymousArgInfo<'_>> {
4444
let (id, bound_region) = match *anon_region {
4545
ty::ReFree(ref free_region) => (free_region.scope, free_region.bound_region),
46-
ty::ReEarlyBound(ref ebr) => (
46+
ty::ReEarlyBound(ebr) => (
4747
self.tcx().parent(ebr.def_id).unwrap(),
4848
ty::BoundRegion::BrNamed(ebr.def_id, ebr.name),
4949
),

src/librustc/ty/sty.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1136,7 +1136,7 @@ impl<'a, 'gcx, 'tcx> ParamTy {
11361136
// FIXME(#50125): Ignoring `Self` with `index != 0` might lead to weird behavior elsewhere,
11371137
// but this should only be possible when using `-Z continue-parse-after-error` like
11381138
// `compile-fail/issue-36638.rs`.
1139-
self.name == keywords::SelfUpper.name().as_str() && self.index == 0
1139+
self.name.as_symbol() == keywords::SelfUpper.name() && self.index == 0
11401140
}
11411141
}
11421142

src/librustc_mir/borrow_check/nll/region_infer/error_reporting/region_name.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ impl RegionName {
6060
}
6161

6262
#[allow(dead_code)]
63-
crate fn name(&self) -> &InternedString {
64-
&self.name
63+
crate fn name(&self) -> InternedString {
64+
self.name
6565
}
6666

6767
crate fn highlight_region_name(
@@ -206,7 +206,7 @@ impl<'tcx> RegionInferenceContext<'tcx> {
206206
match error_region {
207207
ty::ReEarlyBound(ebr) => {
208208
if ebr.has_name() {
209-
let span = self.get_named_span(tcx, error_region, &ebr.name);
209+
let span = self.get_named_span(tcx, error_region, ebr.name);
210210
Some(RegionName {
211211
name: ebr.name,
212212
source: RegionNameSource::NamedEarlyBoundRegion(span)
@@ -223,7 +223,7 @@ impl<'tcx> RegionInferenceContext<'tcx> {
223223

224224
ty::ReFree(free_region) => match free_region.bound_region {
225225
ty::BoundRegion::BrNamed(_, name) => {
226-
let span = self.get_named_span(tcx, error_region, &name);
226+
let span = self.get_named_span(tcx, error_region, name);
227227
Some(RegionName {
228228
name,
229229
source: RegionNameSource::NamedFreeRegion(span),
@@ -306,7 +306,7 @@ impl<'tcx> RegionInferenceContext<'tcx> {
306306
&self,
307307
tcx: TyCtxt<'_, '_, 'tcx>,
308308
error_region: &RegionKind,
309-
name: &InternedString,
309+
name: InternedString,
310310
) -> Span {
311311
let scope = error_region.free_region_binding_scope(tcx);
312312
let node = tcx.hir().as_local_hir_id(scope).unwrap_or(hir::DUMMY_HIR_ID);

0 commit comments

Comments
 (0)