Skip to content

Commit 0b56924

Browse files
committed
[eddyb] rustc_codegen_ssa: rename interfaces to traits.
1 parent d1410ad commit 0b56924

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+46
-46
lines changed

src/librustc_codegen_llvm/abi.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use type_of::{LayoutLlvmExt, PointerKind};
1919
use value::Value;
2020
use rustc_target::abi::call::ArgType;
2121

22-
use rustc_codegen_ssa::interfaces::*;
22+
use rustc_codegen_ssa::traits::*;
2323

2424
use rustc_target::abi::{HasDataLayout, LayoutOf, Size, TyLayout, Abi as LayoutAbi};
2525
use rustc::ty::{self, Ty, Instance};

src/librustc_codegen_llvm/asm.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use builder::Builder;
1515
use value::Value;
1616

1717
use rustc::hir;
18-
use rustc_codegen_ssa::interfaces::*;
18+
use rustc_codegen_ssa::traits::*;
1919

2020
use rustc_codegen_ssa::mir::place::PlaceRef;
2121
use rustc_codegen_ssa::mir::operand::OperandValue;

src/librustc_codegen_llvm/attributes.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use rustc::ty::query::Providers;
2121
use rustc_data_structures::sync::Lrc;
2222
use rustc_data_structures::fx::FxHashMap;
2323
use rustc_target::spec::PanicStrategy;
24-
use rustc_codegen_ssa::interfaces::*;
24+
use rustc_codegen_ssa::traits::*;
2525

2626
use attributes;
2727
use llvm::{self, Attribute};

src/librustc_codegen_llvm/back/lto.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use back::bytecode::{DecodedBytecode, RLIB_BYTECODE_EXTENSION};
1212
use rustc_codegen_ssa::back::symbol_export;
1313
use rustc_codegen_ssa::back::write::{ModuleConfig, CodegenContext, pre_lto_bitcode_filename};
1414
use rustc_codegen_ssa::back::lto::{SerializedModule, LtoModuleCodegen, ThinShared, ThinModule};
15-
use rustc_codegen_ssa::interfaces::*;
15+
use rustc_codegen_ssa::traits::*;
1616
use back::write::{self, DiagnosticHandlers, with_llvm_pmb, save_temp_bitcode, get_llvm_opt_level};
1717
use errors::{FatalError, Handler};
1818
use llvm::archive_ro::ArchiveRO;

src/librustc_codegen_llvm/back/write.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use attributes;
1212
use back::bytecode::{self, RLIB_BYTECODE_EXTENSION};
1313
use back::lto::ThinBuffer;
1414
use rustc_codegen_ssa::back::write::{CodegenContext, ModuleConfig, run_assembler};
15-
use rustc_codegen_ssa::interfaces::*;
15+
use rustc_codegen_ssa::traits::*;
1616
use base;
1717
use consts;
1818
use rustc::session::config::{self, OutputType, Passes, Lto};

src/librustc_codegen_llvm/base.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ use monomorphize::partitioning::CodegenUnitExt;
4242
use rustc_codegen_ssa::mono_item::MonoItemExt;
4343
use rustc_data_structures::small_c_str::SmallCStr;
4444

45-
use rustc_codegen_ssa::interfaces::*;
45+
use rustc_codegen_ssa::traits::*;
4646
use rustc_codegen_ssa::back::write::submit_codegened_module_to_llvm;
4747

4848
use std::ffi::CString;

src/librustc_codegen_llvm/builder.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use rustc::ty::{self, Ty, TyCtxt};
2222
use rustc::ty::layout::{self, Align, Size, TyLayout};
2323
use rustc::session::config;
2424
use rustc_data_structures::small_c_str::SmallCStr;
25-
use rustc_codegen_ssa::interfaces::*;
25+
use rustc_codegen_ssa::traits::*;
2626
use syntax;
2727
use rustc_codegen_ssa::base::to_immediate;
2828
use rustc_codegen_ssa::mir::operand::{OperandValue, OperandRef};

src/librustc_codegen_llvm/callee.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use llvm;
1919
use monomorphize::Instance;
2020
use context::CodegenCx;
2121
use value::Value;
22-
use rustc_codegen_ssa::interfaces::*;
22+
use rustc_codegen_ssa::traits::*;
2323

2424
use rustc::ty::TypeFoldable;
2525
use rustc::ty::layout::{LayoutOf, HasTyCtxt};

src/librustc_codegen_llvm/common.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use consts;
1818
use type_::Type;
1919
use type_of::LayoutLlvmExt;
2020
use value::Value;
21-
use rustc_codegen_ssa::interfaces::*;
21+
use rustc_codegen_ssa::traits::*;
2222

2323
use rustc::ty::layout::{HasDataLayout, LayoutOf, self, TyLayout, Size};
2424
use rustc::mir::interpret::{Scalar, AllocType, Allocation};

src/librustc_codegen_llvm/consts.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ use type_::Type;
2626
use type_of::LayoutLlvmExt;
2727
use value::Value;
2828
use rustc::ty::{self, Ty};
29-
use rustc_codegen_ssa::interfaces::*;
29+
use rustc_codegen_ssa::traits::*;
3030

3131
use rustc::ty::layout::{self, Size, Align, LayoutOf};
3232

src/librustc_codegen_llvm/context.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use value::Value;
2020
use monomorphize::partitioning::CodegenUnit;
2121
use type_::Type;
2222
use type_of::PointeeInfo;
23-
use rustc_codegen_ssa::interfaces::*;
23+
use rustc_codegen_ssa::traits::*;
2424
use libc::c_uint;
2525

2626
use rustc_data_structures::base_n;

src/librustc_codegen_llvm/debuginfo/gdb.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use common::CodegenCx;
1616
use builder::Builder;
1717
use rustc::session::config::DebugInfo;
1818
use value::Value;
19-
use rustc_codegen_ssa::interfaces::*;
19+
use rustc_codegen_ssa::traits::*;
2020

2121
use syntax::attr;
2222

src/librustc_codegen_llvm/debuginfo/metadata.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use super::utils::{debug_context, DIB, span_start,
1717
use super::namespace::mangled_name_of_instance;
1818
use super::type_names::compute_debuginfo_type_name;
1919
use super::{CrateDebugContext};
20-
use rustc_codegen_ssa::interfaces::*;
20+
use rustc_codegen_ssa::traits::*;
2121
use abi;
2222
use value::Value;
2323

src/librustc_codegen_llvm/debuginfo/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ use syntax_pos::{self, Span, Pos};
4949
use syntax::ast;
5050
use syntax::symbol::{Symbol, InternedString};
5151
use rustc::ty::layout::{self, LayoutOf, HasTyCtxt};
52-
use rustc_codegen_ssa::interfaces::*;
52+
use rustc_codegen_ssa::traits::*;
5353

5454
pub mod gdb;
5555
mod utils;

src/librustc_codegen_llvm/debuginfo/source_loc.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use rustc_codegen_ssa::debuginfo::FunctionDebugContext;
1717
use llvm;
1818
use llvm::debuginfo::DIScope;
1919
use builder::Builder;
20-
use rustc_codegen_ssa::interfaces::*;
20+
use rustc_codegen_ssa::traits::*;
2121

2222
use libc::c_uint;
2323
use syntax_pos::{Span, Pos};

src/librustc_codegen_llvm/debuginfo/type_names.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use common::CodegenCx;
1414
use rustc::hir::def_id::DefId;
1515
use rustc::ty::subst::Substs;
1616
use rustc::ty::{self, Ty};
17-
use rustc_codegen_ssa::interfaces::*;
17+
use rustc_codegen_ssa::traits::*;
1818

1919
use rustc::hir;
2020

src/librustc_codegen_llvm/debuginfo/utils.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use rustc::ty::DefIdTree;
1919
use llvm;
2020
use llvm::debuginfo::{DIScope, DIBuilder, DIDescriptor, DIArray};
2121
use common::{CodegenCx};
22-
use rustc_codegen_ssa::interfaces::*;
22+
use rustc_codegen_ssa::traits::*;
2323

2424
use syntax_pos::{self, Span};
2525

src/librustc_codegen_llvm/declare.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use abi::{Abi, FnType, FnTypeExt};
3131
use attributes;
3232
use context::CodegenCx;
3333
use type_::Type;
34-
use rustc_codegen_ssa::interfaces::*;
34+
use rustc_codegen_ssa::traits::*;
3535
use value::Value;
3636

3737
/// Declare a function.

src/librustc_codegen_llvm/intrinsic.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ use syntax::symbol::Symbol;
3232
use builder::Builder;
3333
use value::Value;
3434

35-
use rustc_codegen_ssa::interfaces::*;
35+
use rustc_codegen_ssa::traits::*;
3636

3737
use rustc::session::Session;
3838
use syntax_pos::Span;

src/librustc_codegen_llvm/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ extern crate cc; // Used to locate MSVC
6767
extern crate tempfile;
6868
extern crate memmap;
6969

70-
use rustc_codegen_ssa::interfaces::*;
70+
use rustc_codegen_ssa::traits::*;
7171
use rustc_codegen_ssa::back::write::{CodegenContext, ModuleConfig};
7272
use rustc_codegen_ssa::back::lto::{SerializedModule, LtoModuleCodegen, ThinModule};
7373
use rustc_codegen_ssa::CompiledModule;

src/librustc_codegen_llvm/mono_item.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use rustc::hir::def_id::{DefId, LOCAL_CRATE};
1818
use rustc::mir::mono::{Linkage, Visibility};
1919
use rustc::ty::TypeFoldable;
2020
use rustc::ty::layout::{LayoutOf, HasTyCtxt};
21-
use rustc_codegen_ssa::interfaces::*;
21+
use rustc_codegen_ssa::traits::*;
2222

2323
pub use rustc::mir::mono::MonoItem;
2424

src/librustc_codegen_llvm/type_.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ pub use llvm::Type;
1515
use llvm;
1616
use llvm::{Bool, False, True};
1717
use context::CodegenCx;
18-
use rustc_codegen_ssa::interfaces::*;
18+
use rustc_codegen_ssa::traits::*;
1919
use value::Value;
2020

2121
use rustc::util::nodemap::FxHashMap;

src/librustc_codegen_llvm/type_of.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use rustc::ty::layout::{self, Align, LayoutOf, Size, TyLayout};
1616
use rustc_target::abi::FloatTy;
1717
use rustc_mir::monomorphize::item::DefPathBasedNames;
1818
use type_::Type;
19-
use rustc_codegen_ssa::interfaces::*;
19+
use rustc_codegen_ssa::traits::*;
2020

2121
use std::fmt::Write;
2222

src/librustc_codegen_ssa/README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ For these reasons, the separation process involves two transformations that have
2020
1. replace all the LLVM-specific types by generics inside function signatures and structure definitions;
2121
2. encapsulate all functions calling the LLVM FFI inside a set of traits that will define the interface between backend-agnostic code and the backend.
2222

23-
While the LLVM-specific code will be left in `rustc_codegen_llvm`, all the new interfaces and backend-agnostic code will be moved in `rustc_codegen_ssa` (name suggestion by @eddyb).
23+
While the LLVM-specific code will be left in `rustc_codegen_llvm`, all the new traits and backend-agnostic code will be moved in `rustc_codegen_ssa` (name suggestion by @eddyb).
2424

2525
## Generic types and structures
2626

@@ -58,7 +58,7 @@ However, the two most important structures `CodegenCx` and `Builder` are not def
5858

5959
## Traits and interface
6060

61-
Because they have to be defined by the backend, `CodegenCx` and `Builder` will be the structures implementing all the traits defining the backend's interface. These traits are defined in the folder `rustc_codegen_ssa/interfaces` and all the backend-agnostic code is parametrized by them. For instance, let us explain how a function in `base.rs` is parametrized:
61+
Because they have to be defined by the backend, `CodegenCx` and `Builder` will be the structures implementing all the traits defining the backend's interface. These traits are defined in the folder `rustc_codegen_ssa/traits` and all the backend-agnostic code is parametrized by them. For instance, let us explain how a function in `base.rs` is parametrized:
6262

6363
```rust
6464
pub fn codegen_instance<'a, 'tcx: 'a, Bx: BuilderMethods<'a, 'tcx>>(
@@ -71,7 +71,7 @@ pub fn codegen_instance<'a, 'tcx: 'a, Bx: BuilderMethods<'a, 'tcx>>(
7171

7272
In this signature, we have the two lifetime parameters explained earlier and the master type `Bx` which satisfies the trait `BuilderMethods` corresponding to the interface satisfied by the `Builder` struct. The `BuilderMethods` defines an associated type `Bx::CodegenCx` that itself satisfies the `CodegenMethods` traits implemented by the struct `CodegenCx`.
7373

74-
On the trait side, here is an example with part of the definition of `BuilderMethods` in `interfaces/builder.rs`:
74+
On the trait side, here is an example with part of the definition of `BuilderMethods` in `traits/builder.rs`:
7575

7676
```rust
7777
pub trait BuilderMethods<'a, 'tcx: 'a>:
@@ -116,6 +116,6 @@ However, the current separation between backend-agnostic and LLVM-specific code
116116

117117
The `debuginfo` folder has been left almost untouched by the splitting and is specific to LLVM. Only its high-level features have been traitified.
118118

119-
The new `interfaces` folder has 1500 LOC only for trait definitions. Overall, the 27,000 LOC-sized old `rustc_codegen_llvm` code has been split into the new 18,500 LOC-sized new `rustc_codegen_llvm` and the 12,000 LOC-sized `rustc_codegen_ssa`. We can say that this refactoring allowed the reuse of approximately 10,000 LOC that would otherwise have had to be duplicated between the multiple backends of `rustc`.
119+
The new `traits` folder has 1500 LOC only for trait definitions. Overall, the 27,000 LOC-sized old `rustc_codegen_llvm` code has been split into the new 18,500 LOC-sized new `rustc_codegen_llvm` and the 12,000 LOC-sized `rustc_codegen_ssa`. We can say that this refactoring allowed the reuse of approximately 10,000 LOC that would otherwise have had to be duplicated between the multiple backends of `rustc`.
120120

121121
The refactored version of `rustc`'s backend introduced no regression over the test suite nor in performance benchmark, which is in coherence with the nature of the refactoring that used only compile-time parametricity (no trait objects).

src/librustc_codegen_ssa/back/lto.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// except according to those terms.
1010

1111
use super::write::CodegenContext;
12-
use interfaces::*;
12+
use traits::*;
1313
use ModuleCodegen;
1414

1515
use rustc::util::time_graph::Timeline;

src/librustc_codegen_ssa/back/write.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ use rustc::session::config::{self, OutputFilenames, OutputType, Passes, Sanitize
2626
use rustc::session::Session;
2727
use rustc::util::nodemap::FxHashMap;
2828
use rustc::util::time_graph::{self, TimeGraph, Timeline};
29-
use interfaces::*;
29+
use traits::*;
3030
use rustc::hir::def_id::{CrateNum, LOCAL_CRATE};
3131
use rustc::ty::TyCtxt;
3232
use rustc::util::common::{time_depth, set_time_depth, print_time_passes_entry};

src/librustc_codegen_ssa/base.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ use rustc_data_structures::sync::Lrc;
5757
use rustc_codegen_utils::{symbol_names_test, check_for_rustc_errors_attr};
5858
use rustc::ty::layout::{FAT_PTR_ADDR, FAT_PTR_EXTRA};
5959

60-
use interfaces::*;
60+
use traits::*;
6161

6262
use std::any::Any;
6363
use std::cmp;

src/librustc_codegen_ssa/callee.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11-
use interfaces::*;
11+
use traits::*;
1212
use rustc::ty;
1313
use rustc::ty::subst::Substs;
1414
use rustc::hir::def_id::DefId;

src/librustc_codegen_ssa/common.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ use syntax_pos::{DUMMY_SP, Span};
1515
use rustc::hir::def_id::DefId;
1616
use rustc::middle::lang_items::LangItem;
1717
use base;
18-
use interfaces::*;
18+
use traits::*;
1919

2020
use rustc::hir;
21-
use interfaces::BuilderMethods;
21+
use traits::BuilderMethods;
2222

2323
pub fn type_needs_drop<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, ty: Ty<'tcx>) -> bool {
2424
ty.needs_drop(tcx, ty::ParamEnv::reveal_all())

src/librustc_codegen_ssa/glue.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use common::IntPredicate;
1818
use meth;
1919
use rustc::ty::layout::LayoutOf;
2020
use rustc::ty::{self, Ty};
21-
use interfaces::*;
21+
use traits::*;
2222

2323
pub fn size_and_align_of_dst<'a, 'tcx: 'a, Bx: BuilderMethods<'a, 'tcx>>(
2424
bx: &mut Bx,

src/librustc_codegen_ssa/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ use syntax_pos::symbol::Symbol;
6666
mod diagnostics;
6767

6868
pub mod common;
69-
pub mod interfaces;
69+
pub mod traits;
7070
pub mod mir;
7171
pub mod debuginfo;
7272
pub mod base;

src/librustc_codegen_ssa/meth.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use rustc_target::abi::call::FnType;
1212
use callee;
1313
use rustc_mir::monomorphize;
1414

15-
use interfaces::*;
15+
use traits::*;
1616

1717
use rustc::ty::{self, Ty};
1818

src/librustc_codegen_ssa/mir/analyze.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use rustc::mir::traversal;
2020
use rustc::ty;
2121
use rustc::ty::layout::{LayoutOf, HasTyCtxt};
2222
use super::FunctionCx;
23-
use interfaces::*;
23+
use traits::*;
2424

2525
pub fn non_ssa_locals<'a, 'tcx: 'a, Bx: BuilderMethods<'a, 'tcx>>(
2626
fx: &FunctionCx<'a, 'tcx, Bx>

src/librustc_codegen_ssa/mir/block.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use common::{self, IntPredicate};
2121
use meth;
2222
use rustc_mir::monomorphize;
2323

24-
use interfaces::*;
24+
use traits::*;
2525

2626
use syntax::symbol::Symbol;
2727
use syntax_pos::Pos;

src/librustc_codegen_ssa/mir/constant.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use rustc::mir::interpret::{GlobalId, ConstValue};
1616
use rustc::ty::{self, Ty};
1717
use rustc::ty::layout::{self, LayoutOf};
1818
use syntax::source_map::Span;
19-
use interfaces::*;
19+
use traits::*;
2020

2121
use super::FunctionCx;
2222

src/librustc_codegen_ssa/mir/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use base;
1818
use debuginfo::{self, VariableAccess, VariableKind, FunctionDebugContext};
1919
use rustc_mir::monomorphize::Instance;
2020
use rustc_target::abi::call::{FnType, PassMode};
21-
use interfaces::*;
21+
use traits::*;
2222

2323
use syntax_pos::{DUMMY_SP, NO_EXPANSION, BytePos, Span};
2424
use syntax::symbol::keywords;

src/librustc_codegen_ssa/mir/operand.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use base;
1717
use MemFlags;
1818
use glue;
1919

20-
use interfaces::*;
20+
use traits::*;
2121

2222
use std::fmt;
2323

src/librustc_codegen_ssa/mir/place.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use MemFlags;
1616
use common::IntPredicate;
1717
use glue;
1818

19-
use interfaces::*;
19+
use traits::*;
2020

2121
use super::{FunctionCx, LocalRef};
2222
use super::operand::OperandValue;

src/librustc_codegen_ssa/mir/rvalue.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use callee;
2222
use common::{self, RealPredicate, IntPredicate};
2323
use rustc_mir::monomorphize;
2424

25-
use interfaces::*;
25+
use traits::*;
2626

2727
use super::{FunctionCx, LocalRef};
2828
use super::operand::{OperandRef, OperandValue};

src/librustc_codegen_ssa/mir/statement.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010

1111
use rustc::mir;
1212

13-
use interfaces::BuilderMethods;
13+
use traits::BuilderMethods;
1414
use super::FunctionCx;
1515
use super::LocalRef;
1616
use super::OperandValue;
17-
use interfaces::*;
17+
use traits::*;
1818

1919
impl<'a, 'tcx: 'a, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
2020
pub fn codegen_statement(

0 commit comments

Comments
 (0)