提交 45f8a3b3 编写于 作者: M Maik Klein 提交者: Ariel Ben-Yehuda

Move partitioning.rs to rustc_mir

上级 116e43f7
......@@ -26,6 +26,7 @@
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 {
......
......@@ -16,9 +16,11 @@
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>,
......
......@@ -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 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;
......
......@@ -64,7 +64,7 @@
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};
......
......@@ -16,7 +16,7 @@
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;
......
......@@ -22,7 +22,7 @@
use declare;
use monomorphize::Instance;
use partitioning::CodegenUnit;
use monomorphize::partitioning::CodegenUnit;
use type_::Type;
use type_of::PointeeInfo;
......
......@@ -138,7 +138,6 @@ pub mod back {
mod metadata;
mod meth;
mod mir;
mod partitioning;
mod symbol_names_test;
mod time_graph;
mod trans_item;
......
......@@ -25,12 +25,11 @@
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 @@ fn predefine(&self,
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 @@ fn local_span(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>) -> Option<Span> {
}.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) => {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册