diff options
| author | Nicholas Nethercote <nnethercote@mozilla.com> | 2020-07-10 15:45:05 +1000 |
|---|---|---|
| committer | Nicholas Nethercote <nnethercote@mozilla.com> | 2020-07-15 14:37:55 +1000 |
| commit | 7c4d431c067308ae79b902fe0d0e7b9c6958d0e9 (patch) | |
| tree | c964535c7342e0f4d9f2a0fd5684c7b21b51d231 /src/librustc_codegen_ssa | |
| parent | 567ad7455d5f25f6b38d2fded1cb621e0c34a48b (diff) | |
| download | rust-7c4d431c067308ae79b902fe0d0e7b9c6958d0e9.tar.gz rust-7c4d431c067308ae79b902fe0d0e7b9c6958d0e9.zip | |
Change `SymbolName::name` to a `&str`.
This eliminates a bunch of `Symbol::intern()` and `Symbol::as_str()` calls, which is good, because they require locking the interner. Note that the unsafety in `from_cycle_error()` is identical to the unsafety on other adjacent impls.
Diffstat (limited to 'src/librustc_codegen_ssa')
| -rw-r--r-- | src/librustc_codegen_ssa/back/symbol_export.rs | 17 | ||||
| -rw-r--r-- | src/librustc_codegen_ssa/mir/block.rs | 7 | ||||
| -rw-r--r-- | src/librustc_codegen_ssa/mono_item.rs | 2 | ||||
| -rw-r--r-- | src/librustc_codegen_ssa/traits/consts.rs | 4 |
4 files changed, 14 insertions, 16 deletions
diff --git a/src/librustc_codegen_ssa/back/symbol_export.rs b/src/librustc_codegen_ssa/back/symbol_export.rs index faf6809f35b..e0910c693b1 100644 --- a/src/librustc_codegen_ssa/back/symbol_export.rs +++ b/src/librustc_codegen_ssa/back/symbol_export.rs @@ -16,7 +16,6 @@ use rustc_middle::ty::subst::{GenericArgKind, SubstsRef}; use rustc_middle::ty::Instance; use rustc_middle::ty::{SymbolName, TyCtxt}; use rustc_session::config::{CrateType, SanitizerSet}; -use rustc_span::symbol::sym; pub fn threshold(tcx: TyCtxt<'_>) -> SymbolExportLevel { crates_export_threshold(&tcx.sess.crate_types()) @@ -117,9 +116,9 @@ fn reachable_non_generics_provider(tcx: TyCtxt<'_>, cnum: CrateNum) -> DefIdMap< // In general though we won't link right if these // symbols are stripped, and LTO currently strips them. match name { - sym::rust_eh_personality - | sym::rust_eh_register_frames - | sym::rust_eh_unregister_frames => + "rust_eh_personality" + | "rust_eh_register_frames" + | "rust_eh_unregister_frames" => SymbolExportLevel::C, _ => SymbolExportLevel::Rust, } @@ -177,7 +176,7 @@ fn exported_symbols_provider_local( .collect(); if tcx.entry_fn(LOCAL_CRATE).is_some() { - let exported_symbol = ExportedSymbol::NoDefId(SymbolName::new("main")); + let exported_symbol = ExportedSymbol::NoDefId(SymbolName::new(tcx, "main")); symbols.push((exported_symbol, SymbolExportLevel::C)); } @@ -185,7 +184,7 @@ fn exported_symbols_provider_local( if tcx.allocator_kind().is_some() { for method in ALLOCATOR_METHODS { let symbol_name = format!("__rust_{}", method.name); - let exported_symbol = ExportedSymbol::NoDefId(SymbolName::new(&symbol_name)); + let exported_symbol = ExportedSymbol::NoDefId(SymbolName::new(tcx, &symbol_name)); symbols.push((exported_symbol, SymbolExportLevel::Rust)); } @@ -199,7 +198,7 @@ fn exported_symbols_provider_local( ["__llvm_profile_raw_version", "__llvm_profile_filename"]; symbols.extend(PROFILER_WEAK_SYMBOLS.iter().map(|sym| { - let exported_symbol = ExportedSymbol::NoDefId(SymbolName::new(sym)); + let exported_symbol = ExportedSymbol::NoDefId(SymbolName::new(tcx, sym)); (exported_symbol, SymbolExportLevel::C) })); } @@ -209,14 +208,14 @@ fn exported_symbols_provider_local( const MSAN_WEAK_SYMBOLS: [&str; 2] = ["__msan_track_origins", "__msan_keep_going"]; symbols.extend(MSAN_WEAK_SYMBOLS.iter().map(|sym| { - let exported_symbol = ExportedSymbol::NoDefId(SymbolName::new(sym)); + let exported_symbol = ExportedSymbol::NoDefId(SymbolName::new(tcx, sym)); (exported_symbol, SymbolExportLevel::C) })); } if tcx.sess.crate_types().contains(&CrateType::Dylib) { let symbol_name = metadata_symbol_name(tcx); - let exported_symbol = ExportedSymbol::NoDefId(SymbolName::new(&symbol_name)); + let exported_symbol = ExportedSymbol::NoDefId(SymbolName::new(tcx, &symbol_name)); symbols.push((exported_symbol, SymbolExportLevel::Rust)); } diff --git a/src/librustc_codegen_ssa/mir/block.rs b/src/librustc_codegen_ssa/mir/block.rs index 7116bb8c925..0ec46b515b4 100644 --- a/src/librustc_codegen_ssa/mir/block.rs +++ b/src/librustc_codegen_ssa/mir/block.rs @@ -16,7 +16,7 @@ use rustc_middle::mir; use rustc_middle::mir::interpret::{AllocId, ConstValue, Pointer, Scalar}; use rustc_middle::mir::AssertKind; use rustc_middle::ty::layout::{FnAbiExt, HasTyCtxt}; -use rustc_middle::ty::{self, Instance, Ty, TypeFoldable}; +use rustc_middle::ty::{self, Instance, SymbolName, Ty, TypeFoldable}; use rustc_span::source_map::Span; use rustc_span::{sym, Symbol}; use rustc_target::abi::call::{ArgAbi, FnAbi, PassMode}; @@ -423,8 +423,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> { (lang_items::PanicBoundsCheckFnLangItem, vec![index, len, location]) } _ => { - let msg_str = Symbol::intern(msg.description()); - let msg = bx.const_str(msg_str); + let msg = bx.const_str(SymbolName::new(bx.tcx(), msg.description())); // It's `pub fn panic(expr: &str)`, with the wide reference being passed // as two arguments, and `#[track_caller]` adds an implicit third argument. (lang_items::PanicFnLangItem, vec![msg.0, msg.1, location]) @@ -487,7 +486,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> { } else { format!("attempted to leave type `{}` uninitialized, which is invalid", ty) }; - let msg = bx.const_str(Symbol::intern(&msg_str)); + let msg = bx.const_str(SymbolName::new(bx.tcx(), &msg_str)); let location = self.get_caller_location(bx, span).immediate(); // Obtain the panic entry point. diff --git a/src/librustc_codegen_ssa/mono_item.rs b/src/librustc_codegen_ssa/mono_item.rs index 5994ef2be54..fc65149937f 100644 --- a/src/librustc_codegen_ssa/mono_item.rs +++ b/src/librustc_codegen_ssa/mono_item.rs @@ -64,7 +64,7 @@ impl<'a, 'tcx: 'a> MonoItemExt<'a, 'tcx> for MonoItem<'tcx> { cx.codegen_unit().name() ); - let symbol_name = self.symbol_name(cx.tcx()).name.as_str(); + let symbol_name = self.symbol_name(cx.tcx()).name; debug!("symbol {}", &symbol_name); diff --git a/src/librustc_codegen_ssa/traits/consts.rs b/src/librustc_codegen_ssa/traits/consts.rs index 6b58dea794b..e4c1e100626 100644 --- a/src/librustc_codegen_ssa/traits/consts.rs +++ b/src/librustc_codegen_ssa/traits/consts.rs @@ -2,7 +2,7 @@ use super::BackendTypes; use crate::mir::place::PlaceRef; use rustc_middle::mir::interpret::{Allocation, Scalar}; use rustc_middle::ty::layout::TyAndLayout; -use rustc_span::Symbol; +use rustc_middle::ty::SymbolName; use rustc_target::abi::{self, Size}; pub trait ConstMethods<'tcx>: BackendTypes { @@ -20,7 +20,7 @@ pub trait ConstMethods<'tcx>: BackendTypes { fn const_u8(&self, i: u8) -> Self::Value; fn const_real(&self, t: Self::Type, val: f64) -> Self::Value; - fn const_str(&self, s: Symbol) -> (Self::Value, Self::Value); + fn const_str(&self, s: SymbolName<'tcx>) -> (Self::Value, Self::Value); fn const_struct(&self, elts: &[Self::Value], packed: bool) -> Self::Value; fn const_to_opt_uint(&self, v: Self::Value) -> Option<u64>; |
