Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
34dfbc3f
R
Rust
项目概览
int
/
Rust
12 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
34dfbc3f
编写于
4月 22, 2020
作者:
D
Dylan MacKenzie
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add module docs and restrict visibility
上级
59c74603
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
7 addition
and
5 deletion
+7
-5
src/librustc_middle/mir/mod.rs
src/librustc_middle/mir/mod.rs
+1
-1
src/librustc_middle/mir/predecessors.rs
src/librustc_middle/mir/predecessors.rs
+6
-4
未找到文件。
src/librustc_middle/mir/mod.rs
浏览文件 @
34dfbc3f
...
...
@@ -164,7 +164,7 @@ pub struct Body<'tcx> {
/// FIXME(oli-obk): rewrite the promoted during promotion to eliminate the cell components.
pub
ignore_interior_mut_in_const_validation
:
bool
,
p
ub
p
redecessor_cache
:
PredecessorCache
,
predecessor_cache
:
PredecessorCache
,
}
impl
<
'tcx
>
Body
<
'tcx
>
{
...
...
src/librustc_middle/mir/predecessors.rs
浏览文件 @
34dfbc3f
//! Lazily compute the reverse control-flow graph for the MIR.
use
rustc_data_structures
::
stable_hasher
::{
HashStable
,
StableHasher
};
use
rustc_data_structures
::
sync
::{
Lock
,
Lrc
};
use
rustc_index
::
vec
::
IndexVec
;
...
...
@@ -10,13 +12,13 @@
pub
type
Predecessors
=
IndexVec
<
BasicBlock
,
SmallVec
<
[
BasicBlock
;
4
]
>>
;
#[derive(Clone,
Debug)]
pub
struct
PredecessorCache
{
pub
(
super
)
struct
PredecessorCache
{
cache
:
Lock
<
Option
<
Lrc
<
Predecessors
>>>
,
}
impl
PredecessorCache
{
#[inline]
pub
fn
new
()
->
Self
{
pub
(
super
)
fn
new
()
->
Self
{
PredecessorCache
{
cache
:
Lock
::
new
(
None
)
}
}
...
...
@@ -27,7 +29,7 @@ pub fn new() -> Self {
/// callers of `invalidate` have a unique reference to the MIR and thus to the predecessor
/// cache. This means we don't actually need to take a lock when `invalidate` is called.
#[inline]
pub
fn
invalidate
(
&
mut
self
)
{
pub
(
super
)
fn
invalidate
(
&
mut
self
)
{
*
self
.cache
.get_mut
()
=
None
;
}
...
...
@@ -37,7 +39,7 @@ pub fn invalidate(&mut self) {
/// `cache` is only held inside this function. As long as no other locks are taken while
/// computing the predecessor graph, deadlock is impossible.
#[inline]
pub
fn
compute
(
pub
(
super
)
fn
compute
(
&
self
,
basic_blocks
:
&
IndexVec
<
BasicBlock
,
BasicBlockData
<
'_
>>
,
)
->
Lrc
<
Predecessors
>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录