Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
582c7173
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,发现更多精彩内容 >>
提交
582c7173
编写于
4月 25, 2012
作者:
B
Brian Anderson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
rustc: Clean up some enum code
上级
dfc81dfa
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
5 addition
and
16 deletion
+5
-16
src/rustc/middle/trans/common.rs
src/rustc/middle/trans/common.rs
+2
-13
src/rustc/middle/trans/shape.rs
src/rustc/middle/trans/shape.rs
+1
-1
src/rustc/middle/trans/type_of.rs
src/rustc/middle/trans/type_of.rs
+2
-2
未找到文件。
src/rustc/middle/trans/common.rs
浏览文件 @
582c7173
...
...
@@ -680,25 +680,14 @@ fn T_opaque_cbox_ptr(cx: @crate_ctxt) -> TypeRef {
ret
T_opaque_box_ptr
(
cx
);
}
fn
T_enum_
variant
(
cx
:
@
crate_ctxt
)
->
TypeRef
{
fn
T_enum_
discrim
(
cx
:
@
crate_ctxt
)
->
TypeRef
{
ret
cx
.int_type
;
}
fn
T_enum
(
cx
:
@
crate_ctxt
,
size
:
uint
)
->
TypeRef
{
let
s
=
"enum_"
+
uint
::
to_str
(
size
,
10u
);
alt
name_has_type
(
cx
.tn
,
s
)
{
some
(
t
)
{
ret
t
;
}
_
{}
}
let
t
=
if
size
==
0u
{
T_struct
([
T_enum_variant
(
cx
)])
}
else
{
T_struct
([
T_enum_variant
(
cx
),
T_array
(
T_i8
(),
size
)])
};
associate_type
(
cx
.tn
,
s
,
t
);
ret
t
;
}
fn
T_opaque_enum
(
cx
:
@
crate_ctxt
)
->
TypeRef
{
let
s
=
"opaque_enum"
;
alt
name_has_type
(
cx
.tn
,
s
)
{
some
(
t
)
{
ret
t
;
}
_
{}
}
let
t
=
T_struct
([
T_enum_
variant
(
cx
),
T_i8
()]);
let
t
=
T_struct
([
T_enum_
discrim
(
cx
),
T_i8
()]);
associate_type
(
cx
.tn
,
s
,
t
);
ret
t
;
}
...
...
src/rustc/middle/trans/shape.rs
浏览文件 @
582c7173
...
...
@@ -200,7 +200,7 @@ fn compute_static_enum_size(ccx: @crate_ctxt, largest_variants: [uint],
// FIXME (issue #792): This is wrong. If the enum starts with an 8 byte
// aligned quantity, we don't align it.
if
vec
::
len
(
*
variants
)
>
1u
{
let
variant_t
=
T_enum_
variant
(
ccx
);
let
variant_t
=
T_enum_
discrim
(
ccx
);
max_size
+=
llsize_of_real
(
ccx
,
variant_t
)
as
u16
;
let
align
=
llalign_of_pref
(
ccx
,
variant_t
)
as
u8
;
if
max_align
<
align
{
max_align
=
align
;
}
...
...
src/rustc/middle/trans/type_of.rs
浏览文件 @
582c7173
...
...
@@ -158,10 +158,10 @@ fn type_of_enum(cx: @crate_ctxt, did: ast::def_id, t: ty::t)
let
degen
=
(
*
ty
::
enum_variants
(
cx
.tcx
,
did
))
.len
()
==
1u
;
let
size
=
shape
::
static_size_of_enum
(
cx
,
t
);
if
!
degen
{
[
T_enum_
variant
(
cx
),
T_array
(
T_i8
(),
size
)]
[
T_enum_
discrim
(
cx
),
T_array
(
T_i8
(),
size
)]
}
else
if
size
==
0u
{
[
T_enum_
variant
(
cx
)]
[
T_enum_
discrim
(
cx
)]
}
else
{
[
T_array
(
T_i8
(),
size
)]
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录