Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
b76a5be1
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,发现更多精彩内容 >>
提交
b76a5be1
编写于
1月 04, 2020
作者:
A
Adam Perry
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Clean up comments in panicking infra.
上级
612c4c6c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
8 addition
and
11 deletion
+8
-11
src/libstd/panicking.rs
src/libstd/panicking.rs
+8
-11
未找到文件。
src/libstd/panicking.rs
浏览文件 @
b76a5be1
...
...
@@ -354,6 +354,9 @@ fn fill(&mut self) -> &mut String {
unsafe
impl
<
'a
>
BoxMeUp
for
PanicPayload
<
'a
>
{
fn
take_box
(
&
mut
self
)
->
*
mut
(
dyn
Any
+
Send
)
{
// We do two allocations here, unfortunately. But (a) they're required with the current
// scheme, and (b) we don't handle panic + OOM properly anyway (see comment in
// begin_panic below).
let
contents
=
mem
::
take
(
self
.fill
());
Box
::
into_raw
(
Box
::
new
(
contents
))
}
...
...
@@ -363,11 +366,6 @@ fn get(&mut self) -> &(dyn Any + Send) {
}
}
// We do two allocations here, unfortunately. But (a) they're
// required with the current scheme, and (b) we don't handle
// panic + OOM properly anyway (see comment in begin_panic
// below).
let
loc
=
info
.location
()
.unwrap
();
// The current implementation always returns Some
let
msg
=
info
.message
()
.unwrap
();
// The current implementation always returns Some
rust_panic_with_hook
(
&
mut
PanicPayload
::
new
(
msg
),
info
.message
(),
loc
);
...
...
@@ -389,12 +387,6 @@ pub fn begin_panic<M: Any + Send>(msg: M, #[cfg(bootstrap)] _: &(&str, u32, u32)
unsafe
{
intrinsics
::
abort
()
}
}
// Note that this should be the only allocation performed in this code path.
// Currently this means that panic!() on OOM will invoke this code path,
// but then again we're not really ready for panic on OOM anyway. If
// we do start doing this, then we should propagate this allocation to
// be performed in the parent of this thread instead of the thread that's
// panicking.
rust_panic_with_hook
(
&
mut
PanicPayload
::
new
(
msg
),
None
,
Location
::
caller
());
struct
PanicPayload
<
A
>
{
...
...
@@ -409,6 +401,11 @@ fn new(inner: A) -> PanicPayload<A> {
unsafe
impl
<
A
:
Send
+
'static
>
BoxMeUp
for
PanicPayload
<
A
>
{
fn
take_box
(
&
mut
self
)
->
*
mut
(
dyn
Any
+
Send
)
{
// Note that this should be the only allocation performed in this code path. Currently
// this means that panic!() on OOM will invoke this code path, but then again we're not
// really ready for panic on OOM anyway. If we do start doing this, then we should
// propagate this allocation to be performed in the parent of this thread instead of the
// thread that's panicking.
let
data
=
match
self
.inner
.take
()
{
Some
(
a
)
=>
Box
::
new
(
a
)
as
Box
<
dyn
Any
+
Send
>
,
None
=>
process
::
abort
(),
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录