Move partitioning.rs to rustc_mir

This commit is contained in:
Maik Klein 2017-11-23 16:02:02 +01:00 committed by Ariel Ben-Yehuda
parent 116e43f73b
commit 45f8a3b30c
8 changed files with 35 additions and 34 deletions

View File

@ -26,6 +26,7 @@ use syntax::attr::{self, InlineAttr};
use std::fmt::{self, Write};
use std::iter;
use rustc::mir::mono::Linkage;
use syntax_pos::symbol::Symbol;
pub use rustc::mir::mono::MonoItem;
pub fn linkage_by_name(name: &str) -> Option<Linkage> {
@ -83,6 +84,31 @@ pub enum InstantiationMode {
pub trait MonoItemExt<'a, 'tcx>: fmt::Debug {
fn as_mono_item(&self) -> &MonoItem<'tcx>;
fn is_generic_fn(&self) -> bool {
match *self.as_mono_item() {
MonoItem::Fn(ref instance) => {
instance.substs.types().next().is_some()
}
MonoItem::Static(..) |
MonoItem::GlobalAsm(..) => false,
}
}
fn symbol_name(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>) -> ty::SymbolName {
match *self.as_mono_item() {
MonoItem::Fn(instance) => tcx.symbol_name(instance),
MonoItem::Static(node_id) => {
let def_id = tcx.hir.local_def_id(node_id);
tcx.symbol_name(Instance::mono(tcx, def_id))
}
MonoItem::GlobalAsm(node_id) => {
let def_id = tcx.hir.local_def_id(node_id);
ty::SymbolName {
name: Symbol::intern(&format!("global_asm_{:?}", def_id)).as_str()
}
}
}
}
fn instantiation_mode(&self,
tcx: TyCtxt<'a, 'tcx, 'tcx>)
-> InstantiationMode {

View File

@ -16,9 +16,11 @@ use rustc::ty::subst::Kind;
use rustc::ty::{self, Ty, TyCtxt};
pub use rustc::ty::Instance;
pub use self::item::{MonoItem, MonoItemExt};
pub mod collector;
pub mod item;
pub mod partitioning;
fn fn_once_adapter_instance<'a, 'tcx>(
tcx: TyCtxt<'a, 'tcx, 'tcx>,

View File

@ -102,7 +102,7 @@
//! source-level module, functions from the same module will be available for
//! inlining, even when they are not marked #[inline].
use rustc_mir::monomorphize::collector::InliningMap;
use monomorphize::collector::InliningMap;
use rustc::dep_graph::WorkProductId;
use rustc::hir::def_id::DefId;
use rustc::hir::map::DefPathData;
@ -113,7 +113,8 @@ use rustc::util::nodemap::{FxHashMap, FxHashSet};
use std::collections::hash_map::Entry;
use syntax::ast::NodeId;
use syntax::symbol::{Symbol, InternedString};
use trans_item::{MonoItem, BaseMonoItemExt, MonoItemExt, InstantiationMode};
use rustc::mir::mono::MonoItem;
use monomorphize::item::{MonoItemExt, InstantiationMode};
use rustc::ty::subst::Subst;
pub use rustc::mir::mono::CodegenUnit;

View File

@ -64,7 +64,7 @@ use declare;
use meth;
use mir;
use monomorphize::Instance;
use partitioning::{self, PartitioningStrategy, CodegenUnit, CodegenUnitExt};
use monomorphize::partitioning::{self, PartitioningStrategy, CodegenUnit, CodegenUnitExt};
use symbol_names_test;
use time_graph;
use trans_item::{MonoItem, BaseMonoItemExt, MonoItemExt, DefPathBasedNames};

View File

@ -16,7 +16,7 @@ use rustc::hir::map as hir_map;
use rustc::middle::const_val::ConstEvalErr;
use debuginfo;
use base;
use trans_item::{MonoItem, MonoItemExt};
use monomorphize::{MonoItem, MonoItemExt};
use common::{CrateContext, val_ty};
use declare;
use monomorphize::Instance;

View File

@ -22,7 +22,7 @@ use base;
use declare;
use monomorphize::Instance;
use partitioning::CodegenUnit;
use monomorphize::partitioning::CodegenUnit;
use type_::Type;
use type_of::PointeeInfo;

View File

@ -138,7 +138,6 @@ mod llvm_util;
mod metadata;
mod meth;
mod mir;
mod partitioning;
mod symbol_names_test;
mod time_graph;
mod trans_item;

View File

@ -25,12 +25,11 @@ use monomorphize::Instance;
use type_of::LayoutLlvmExt;
use rustc::hir;
use rustc::mir::mono::{Linkage, Visibility};
use rustc::ty::{self, TyCtxt, TypeFoldable};
use rustc::ty::{TyCtxt, TypeFoldable};
use rustc::ty::layout::LayoutOf;
use syntax::ast;
use syntax::attr;
use syntax_pos::Span;
use syntax_pos::symbol::Symbol;
use std::fmt;
pub use rustc::mir::mono::MonoItem;
@ -108,22 +107,6 @@ pub trait MonoItemExt<'a, 'tcx>: fmt::Debug + BaseMonoItemExt<'a, 'tcx> {
ccx.codegen_unit().name());
}
fn symbol_name(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>) -> ty::SymbolName {
match *self.as_mono_item() {
MonoItem::Fn(instance) => tcx.symbol_name(instance),
MonoItem::Static(node_id) => {
let def_id = tcx.hir.local_def_id(node_id);
tcx.symbol_name(Instance::mono(tcx, def_id))
}
MonoItem::GlobalAsm(node_id) => {
let def_id = tcx.hir.local_def_id(node_id);
ty::SymbolName {
name: Symbol::intern(&format!("global_asm_{:?}", def_id)).as_str()
}
}
}
}
fn local_span(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>) -> Option<Span> {
match *self.as_mono_item() {
MonoItem::Fn(Instance { def, .. }) => {
@ -136,16 +119,6 @@ pub trait MonoItemExt<'a, 'tcx>: fmt::Debug + BaseMonoItemExt<'a, 'tcx> {
}.map(|node_id| tcx.hir.span(node_id))
}
fn is_generic_fn(&self) -> bool {
match *self.as_mono_item() {
MonoItem::Fn(ref instance) => {
instance.substs.types().next().is_some()
}
MonoItem::Static(..) |
MonoItem::GlobalAsm(..) => false,
}
}
fn to_raw_string(&self) -> String {
match *self.as_mono_item() {
MonoItem::Fn(instance) => {