Make Session.plugin_registrar_fn and Session.derive_registrar_fn thread-safe
This commit is contained in:
parent
27adb31fcc
commit
e82b6c42b4
3 changed files with 8 additions and 8 deletions
|
@ -71,8 +71,8 @@ pub struct Session {
|
|||
pub parse_sess: ParseSess,
|
||||
/// For a library crate, this is always none
|
||||
pub entry_fn: Once<Option<(NodeId, Span, config::EntryFnType)>>,
|
||||
pub plugin_registrar_fn: Cell<Option<ast::NodeId>>,
|
||||
pub derive_registrar_fn: Cell<Option<ast::NodeId>>,
|
||||
pub plugin_registrar_fn: Once<Option<ast::NodeId>>,
|
||||
pub derive_registrar_fn: Once<Option<ast::NodeId>>,
|
||||
pub default_sysroot: Option<PathBuf>,
|
||||
/// The name of the root source file of the crate, in the local file system.
|
||||
/// `None` means that there is no source file.
|
||||
|
@ -1094,8 +1094,8 @@ pub fn build_session_(
|
|||
parse_sess: p_s,
|
||||
// For a library crate, this is always none
|
||||
entry_fn: Once::new(),
|
||||
plugin_registrar_fn: Cell::new(None),
|
||||
derive_registrar_fn: Cell::new(None),
|
||||
plugin_registrar_fn: Once::new(),
|
||||
derive_registrar_fn: Once::new(),
|
||||
default_sysroot,
|
||||
local_crate_source_file,
|
||||
working_dir,
|
||||
|
|
|
@ -157,12 +157,12 @@ fn reachable_non_generics_provider<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
|
|||
})
|
||||
.collect();
|
||||
|
||||
if let Some(id) = tcx.sess.derive_registrar_fn.get() {
|
||||
if let Some(id) = *tcx.sess.derive_registrar_fn.get() {
|
||||
let def_id = tcx.hir.local_def_id(id);
|
||||
reachable_non_generics.insert(def_id, SymbolExportLevel::C);
|
||||
}
|
||||
|
||||
if let Some(id) = tcx.sess.plugin_registrar_fn.get() {
|
||||
if let Some(id) = *tcx.sess.plugin_registrar_fn.get() {
|
||||
let def_id = tcx.hir.local_def_id(id);
|
||||
reachable_non_generics.insert(def_id, SymbolExportLevel::C);
|
||||
}
|
||||
|
|
|
@ -244,11 +244,11 @@ fn compute_symbol_name<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, instance: Instance
|
|||
let node_id = tcx.hir.as_local_node_id(def_id);
|
||||
|
||||
if let Some(id) = node_id {
|
||||
if tcx.sess.plugin_registrar_fn.get() == Some(id) {
|
||||
if *tcx.sess.plugin_registrar_fn.get() == Some(id) {
|
||||
let disambiguator = tcx.sess.local_crate_disambiguator();
|
||||
return tcx.sess.generate_plugin_registrar_symbol(disambiguator);
|
||||
}
|
||||
if tcx.sess.derive_registrar_fn.get() == Some(id) {
|
||||
if *tcx.sess.derive_registrar_fn.get() == Some(id) {
|
||||
let disambiguator = tcx.sess.local_crate_disambiguator();
|
||||
return tcx.sess.generate_derive_registrar_symbol(disambiguator);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue