Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
f1f62051
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,发现更多精彩内容 >>
未验证
提交
f1f62051
编写于
9月 27, 2016
作者:
O
Oliver Schneider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
we can get the Session from the TyCtxt
上级
5b89f3fb
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
5 addition
and
12 deletion
+5
-12
benches/helpers/miri_helper.rs
benches/helpers/miri_helper.rs
+1
-1
src/bin/miri.rs
src/bin/miri.rs
+1
-1
src/interpreter/mod.rs
src/interpreter/mod.rs
+2
-9
src/interpreter/step.rs
src/interpreter/step.rs
+1
-1
未找到文件。
benches/helpers/miri_helper.rs
浏览文件 @
f1f62051
...
...
@@ -58,7 +58,7 @@ fn build_controller(
let
mut
mir_map
=
MirMap
{
map
:
mir_map
.map
.clone
()
};
run_mir_passes
(
tcx
,
&
mut
mir_map
);
bencher
.borrow_mut
()
.iter
(||
{
eval_main
(
tcx
,
&
mir_map
,
node_id
,
state
.session
);
});
bencher
.borrow_mut
()
.iter
(||
{
eval_main
(
tcx
,
&
mir_map
,
node_id
);
});
state
.session
.abort_if_errors
();
});
...
...
src/bin/miri.rs
浏览文件 @
f1f62051
...
...
@@ -75,7 +75,7 @@ fn build_controller(
mir_map_copy
.map
.insert
(
def_id
,
mir_map
.map
.get
(
&
def_id
)
.unwrap
()
.clone
());
}
run_mir_passes
(
tcx
,
&
mut
mir_map_copy
);
eval_main
(
tcx
,
&
mir_map_copy
,
entry_def_id
,
memory_size
,
step_limit
,
stack_limit
,
state
.session
);
eval_main
(
tcx
,
&
mir_map_copy
,
entry_def_id
,
memory_size
,
step_limit
,
stack_limit
);
state
.session
.abort_if_errors
();
});
...
...
src/interpreter/mod.rs
浏览文件 @
f1f62051
...
...
@@ -6,7 +6,6 @@
use
rustc
::
ty
::
layout
::{
self
,
Layout
,
Size
};
use
rustc
::
ty
::
subst
::{
self
,
Subst
,
Substs
};
use
rustc
::
ty
::{
self
,
Ty
,
TyCtxt
,
TypeFoldable
};
use
rustc
::
session
::
Session
;
use
rustc
::
util
::
nodemap
::
DefIdMap
;
use
rustc_data_structures
::
indexed_vec
::
Idx
;
use
std
::
cell
::
RefCell
;
...
...
@@ -32,10 +31,6 @@ pub struct EvalContext<'a, 'tcx: 'a> {
/// The results of the type checker, from rustc.
tcx
:
TyCtxt
<
'a
,
'tcx
,
'tcx
>
,
/// The Session, from rustc.
/// Used to extract info from other crates
session
:
&
'a
Session
,
/// A mapping from NodeIds to Mir, from rustc. Only contains MIR for crate-local items.
mir_map
:
&
'a
MirMap
<
'tcx
>
,
...
...
@@ -159,7 +154,7 @@ pub enum StackPopCleanup {
}
impl
<
'a
,
'tcx
>
EvalContext
<
'a
,
'tcx
>
{
pub
fn
new
(
tcx
:
TyCtxt
<
'a
,
'tcx
,
'tcx
>
,
mir_map
:
&
'a
MirMap
<
'tcx
>
,
memory_size
:
usize
,
stack_limit
:
usize
,
session
:
&
'a
Session
)
->
Self
{
pub
fn
new
(
tcx
:
TyCtxt
<
'a
,
'tcx
,
'tcx
>
,
mir_map
:
&
'a
MirMap
<
'tcx
>
,
memory_size
:
usize
,
stack_limit
:
usize
)
->
Self
{
EvalContext
{
tcx
:
tcx
,
mir_map
:
mir_map
,
...
...
@@ -168,7 +163,6 @@ pub fn new(tcx: TyCtxt<'a, 'tcx, 'tcx>, mir_map: &'a MirMap<'tcx>, memory_size:
statics
:
HashMap
::
new
(),
stack
:
Vec
::
new
(),
stack_limit
:
stack_limit
,
session
:
session
,
}
}
...
...
@@ -1197,10 +1191,9 @@ pub fn eval_main<'a, 'tcx: 'a>(
memory_size
:
usize
,
step_limit
:
u64
,
stack_limit
:
usize
,
session
:
&
'a
Session
,
)
{
let
mir
=
mir_map
.map
.get
(
&
def_id
)
.expect
(
"no mir for main function"
);
let
mut
ecx
=
EvalContext
::
new
(
tcx
,
mir_map
,
memory_size
,
stack_limit
,
session
);
let
mut
ecx
=
EvalContext
::
new
(
tcx
,
mir_map
,
memory_size
,
stack_limit
);
let
substs
=
subst
::
Substs
::
empty
(
tcx
);
let
return_ptr
=
ecx
.alloc_ret_ptr
(
mir
.return_ty
,
substs
)
.expect
(
"should at least be able to allocate space for the main function's return value"
);
...
...
src/interpreter/step.rs
浏览文件 @
f1f62051
...
...
@@ -212,7 +212,7 @@ fn visit_lvalue(
bug!
(
"static def id doesn't point to item"
);
}
}
else
{
let
def
=
self
.ecx.
session
.cstore
.describe_def
(
def_id
)
.expect
(
"static not found"
);
let
def
=
self
.ecx.
tcx.sess
.cstore
.describe_def
(
def_id
)
.expect
(
"static not found"
);
if
let
hir
::
def
::
Def
::
Static
(
_
,
mutable
)
=
def
{
self
.global_item
(
def_id
,
substs
,
span
,
!
mutable
);
}
else
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录