Rollup merge of #108405 - Nilstrieb:lazy-crate-name-optimization-fuel, r=WaffleLapkin
Lazily compute crate name for consider_optimizing The extra query is unnecessary in the common case of not having fuel.
This commit is contained in:
commit
832dab3798
2 changed files with 8 additions and 5 deletions
|
@ -794,8 +794,7 @@ impl<'tcx> TyCtxt<'tcx> {
|
|||
}
|
||||
|
||||
pub fn consider_optimizing<T: Fn() -> String>(self, msg: T) -> bool {
|
||||
let cname = self.crate_name(LOCAL_CRATE);
|
||||
self.sess.consider_optimizing(cname.as_str(), msg)
|
||||
self.sess.consider_optimizing(|| self.crate_name(LOCAL_CRATE), msg)
|
||||
}
|
||||
|
||||
/// Obtain all lang items of this crate and all dependencies (recursively)
|
||||
|
|
|
@ -882,10 +882,14 @@ impl Session {
|
|||
|
||||
/// We want to know if we're allowed to do an optimization for crate foo from -z fuel=foo=n.
|
||||
/// This expends fuel if applicable, and records fuel if applicable.
|
||||
pub fn consider_optimizing<T: Fn() -> String>(&self, crate_name: &str, msg: T) -> bool {
|
||||
pub fn consider_optimizing(
|
||||
&self,
|
||||
get_crate_name: impl Fn() -> Symbol,
|
||||
msg: impl Fn() -> String,
|
||||
) -> bool {
|
||||
let mut ret = true;
|
||||
if let Some((ref c, _)) = self.opts.unstable_opts.fuel {
|
||||
if c == crate_name {
|
||||
if c == get_crate_name().as_str() {
|
||||
assert_eq!(self.threads(), 1);
|
||||
let mut fuel = self.optimization_fuel.lock();
|
||||
ret = fuel.remaining != 0;
|
||||
|
@ -903,7 +907,7 @@ impl Session {
|
|||
}
|
||||
}
|
||||
if let Some(ref c) = self.opts.unstable_opts.print_fuel {
|
||||
if c == crate_name {
|
||||
if c == get_crate_name().as_str() {
|
||||
assert_eq!(self.threads(), 1);
|
||||
self.print_fuel.fetch_add(1, SeqCst);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue