Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
bd36df84
R
Rust
项目概览
int
/
Rust
接近 1 年 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
bd36df84
编写于
7月 28, 2017
作者:
M
Michael Woerister
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
async-llvm(24): Improve scheduling and documentation.
上级
f5acc392
变更
5
展开全部
隐藏空白更改
内联
并排
Showing
5 changed file
with
215 addition
and
91 deletion
+215
-91
src/Cargo.lock
src/Cargo.lock
+1
-1
src/librustc_trans/Cargo.toml
src/librustc_trans/Cargo.toml
+1
-1
src/librustc_trans/back/write.rs
src/librustc_trans/back/write.rs
+191
-88
src/librustc_trans/base.rs
src/librustc_trans/base.rs
+21
-0
src/librustc_trans/lib.rs
src/librustc_trans/lib.rs
+1
-1
未找到文件。
src/Cargo.lock
浏览文件 @
bd36df84
...
...
@@ -1517,11 +1517,11 @@ dependencies = [
name = "rustc_trans"
version = "0.0.0"
dependencies = [
"crossbeam 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"flate2 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)",
"gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)",
"jobserver 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 1.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
"owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc 0.0.0",
"rustc-demangle 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
...
...
src/librustc_trans/Cargo.toml
浏览文件 @
bd36df84
...
...
@@ -10,7 +10,7 @@ crate-type = ["dylib"]
test
=
false
[dependencies]
crossbeam
=
"0.2
"
num_cpus
=
"1.0
"
flate2
=
"0.2"
jobserver
=
"0.1.5"
log
=
"0.3"
...
...
src/librustc_trans/back/write.rs
浏览文件 @
bd36df84
此差异已折叠。
点击以展开。
src/librustc_trans/base.rs
浏览文件 @
bd36df84
...
...
@@ -80,6 +80,7 @@
use
std
::
ffi
::{
CStr
,
CString
};
use
std
::
str
;
use
std
::
sync
::
Arc
;
use
std
::
time
::
Instant
;
use
std
::
i32
;
use
syntax_pos
::
Span
;
use
syntax
::
attr
;
...
...
@@ -1082,10 +1083,22 @@ pub fn trans_crate<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
let
mut
all_stats
=
Stats
::
default
();
let
mut
module_dispositions
=
tcx
.sess.opts.incremental
.as_ref
()
.map
(|
_
|
Vec
::
new
());
// We sort the codegen units by size. This way we can schedule work for LLVM
// a bit more efficiently. Note that "size" is defined rather crudely at the
// moment as it is just the number of TransItems in the CGU, not taking into
// account the size of each TransItem.
let
codegen_units
=
{
let
mut
codegen_units
=
codegen_units
;
codegen_units
.sort_by_key
(|
cgu
|
-
(
cgu
.items
()
.len
()
as
isize
));
codegen_units
};
for
(
cgu_index
,
cgu
)
in
codegen_units
.into_iter
()
.enumerate
()
{
ongoing_translation
.wait_for_signal_to_translate_item
();
ongoing_translation
.check_for_errors
(
tcx
.sess
);
let
start_time
=
Instant
::
now
();
let
module
=
{
let
_
timing_guard
=
time_graph
.as_ref
()
...
...
@@ -1108,10 +1121,18 @@ pub fn trans_crate<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
module
};
let
time_to_translate
=
Instant
::
now
()
.duration_since
(
start_time
);
// We assume that the cost to run LLVM on a CGU is proportional to
// the time we needed for translating it.
let
cost
=
time_to_translate
.as_secs
()
*
1_000_000_000
+
time_to_translate
.subsec_nanos
()
as
u64
;
let
is_last_cgu
=
(
cgu_index
+
1
)
==
codegen_unit_count
;
ongoing_translation
.submit_translated_module_to_llvm
(
tcx
.sess
,
module
,
cost
,
is_last_cgu
);
ongoing_translation
.check_for_errors
(
tcx
.sess
);
}
...
...
src/librustc_trans/lib.rs
浏览文件 @
bd36df84
...
...
@@ -39,7 +39,6 @@
use
std
::
sync
::
Arc
;
extern
crate
flate2
;
extern
crate
crossbeam
;
extern
crate
libc
;
extern
crate
owning_ref
;
#[macro_use]
extern
crate
rustc
;
...
...
@@ -55,6 +54,7 @@
extern
crate
rustc_bitflags
;
extern
crate
rustc_demangle
;
extern
crate
jobserver
;
extern
crate
num_cpus
;
#[macro_use]
extern
crate
log
;
#[macro_use]
extern
crate
syntax
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录