Skip to content

Commit 6b65c30

Browse files
committed
Auto merge of rust-lang#126543 - petrochenkov:upctxt4, r=cjgillot
rustc_span: Optimize more hygiene operations using `Span::map_ctxt` I missed these in rust-lang#125017.
2 parents d7f6eba + c6c1c99 commit 6b65c30

File tree

1 file changed

+25
-15
lines changed

1 file changed

+25
-15
lines changed

compiler/rustc_span/src/lib.rs

+25-15
Original file line numberDiff line numberDiff line change
@@ -1065,33 +1065,41 @@ impl Span {
10651065

10661066
#[inline]
10671067
pub fn remove_mark(&mut self) -> ExpnId {
1068-
let mut span = self.data();
1069-
let mark = span.ctxt.remove_mark();
1070-
*self = Span::new(span.lo, span.hi, span.ctxt, span.parent);
1068+
let mut mark = ExpnId::root();
1069+
*self = self.map_ctxt(|mut ctxt| {
1070+
mark = ctxt.remove_mark();
1071+
ctxt
1072+
});
10711073
mark
10721074
}
10731075

10741076
#[inline]
10751077
pub fn adjust(&mut self, expn_id: ExpnId) -> Option<ExpnId> {
1076-
let mut span = self.data();
1077-
let mark = span.ctxt.adjust(expn_id);
1078-
*self = Span::new(span.lo, span.hi, span.ctxt, span.parent);
1078+
let mut mark = None;
1079+
*self = self.map_ctxt(|mut ctxt| {
1080+
mark = ctxt.adjust(expn_id);
1081+
ctxt
1082+
});
10791083
mark
10801084
}
10811085

10821086
#[inline]
10831087
pub fn normalize_to_macros_2_0_and_adjust(&mut self, expn_id: ExpnId) -> Option<ExpnId> {
1084-
let mut span = self.data();
1085-
let mark = span.ctxt.normalize_to_macros_2_0_and_adjust(expn_id);
1086-
*self = Span::new(span.lo, span.hi, span.ctxt, span.parent);
1088+
let mut mark = None;
1089+
*self = self.map_ctxt(|mut ctxt| {
1090+
mark = ctxt.normalize_to_macros_2_0_and_adjust(expn_id);
1091+
ctxt
1092+
});
10871093
mark
10881094
}
10891095

10901096
#[inline]
10911097
pub fn glob_adjust(&mut self, expn_id: ExpnId, glob_span: Span) -> Option<Option<ExpnId>> {
1092-
let mut span = self.data();
1093-
let mark = span.ctxt.glob_adjust(expn_id, glob_span);
1094-
*self = Span::new(span.lo, span.hi, span.ctxt, span.parent);
1098+
let mut mark = None;
1099+
*self = self.map_ctxt(|mut ctxt| {
1100+
mark = ctxt.glob_adjust(expn_id, glob_span);
1101+
ctxt
1102+
});
10951103
mark
10961104
}
10971105

@@ -1101,9 +1109,11 @@ impl Span {
11011109
expn_id: ExpnId,
11021110
glob_span: Span,
11031111
) -> Option<Option<ExpnId>> {
1104-
let mut span = self.data();
1105-
let mark = span.ctxt.reverse_glob_adjust(expn_id, glob_span);
1106-
*self = Span::new(span.lo, span.hi, span.ctxt, span.parent);
1112+
let mut mark = None;
1113+
*self = self.map_ctxt(|mut ctxt| {
1114+
mark = ctxt.reverse_glob_adjust(expn_id, glob_span);
1115+
ctxt
1116+
});
11071117
mark
11081118
}
11091119

0 commit comments

Comments
 (0)