Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
e5531504
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,发现更多精彩内容 >>
提交
e5531504
编写于
8月 08, 2011
作者:
P
Patrick Walton
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
rt: Align when comparing the insides of boxes
上级
0459e38b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
10 addition
and
13 deletion
+10
-13
src/rt/rust_shape.cpp
src/rt/rust_shape.cpp
+10
-13
未找到文件。
src/rt/rust_shape.cpp
浏览文件 @
e5531504
...
...
@@ -910,7 +910,9 @@ class copy : public data<copy,uint8_t *> {
class
cmp
:
public
data
<
cmp
,
ptr_pair
>
{
private:
template
<
typename
T
>
int
cmp_number
(
ptr_pair
&
ptrs
);
void
cmp_number
(
const
data_pair
<
T
>
&
nums
)
{
result
=
(
nums
.
fst
<
nums
.
snd
)
?
-
1
:
(
nums
.
fst
==
nums
.
snd
)
?
0
:
1
;
}
public:
int
result
;
...
...
@@ -933,12 +935,12 @@ public:
void
walk_box
(
bool
align
);
void
walk_struct
(
bool
align
,
const
uint8_t
*
end_sp
);
void
walk_tag
(
bool
align
,
tag_info
&
tinfo
,
data_pair
<
uint32_t
>
&
tag_variants
);
const
data_pair
<
uint32_t
>
&
tag_variants
);
void
walk_res
(
bool
align
,
const
rust_fn
*
dtor
,
uint16_t
n_ty_params
,
const
uint8_t
*
ty_params_sp
);
template
<
typename
T
>
void
walk_number
()
{
result
=
cmp_number
<
T
>
(
dp
);
}
void
walk_number
()
{
cmp_number
(
bump_dp
<
T
>
(
dp
)
);
}
};
void
...
...
@@ -946,7 +948,7 @@ cmp::walk_box(bool align) {
data_pair
<
uint8_t
*>
subdp
=
bump_dp
<
uint8_t
*>
(
dp
);
cmp
subcx
(
*
this
,
ptr_pair
::
make
(
subdp
));
subcx
.
dp
+=
sizeof
(
uint32_t
);
// Skip over the reference count.
subcx
.
walk
(
fals
e
);
subcx
.
walk
(
tru
e
);
result
=
subcx
.
result
;
}
...
...
@@ -960,7 +962,10 @@ cmp::walk_struct(bool align, const uint8_t *end_sp) {
void
cmp
::
walk_tag
(
bool
align
,
tag_info
&
tinfo
,
data_pair
<
uint32_t
>
&
tag_variants
)
{
const
data_pair
<
uint32_t
>
&
tag_variants
)
{
cmp_number
(
tag_variants
);
if
(
result
!=
0
)
return
;
abort
();
// TODO
}
...
...
@@ -970,14 +975,6 @@ cmp::walk_res(bool align, const rust_fn *dtor, uint16_t n_ty_params,
abort
();
// TODO
}
template
<
typename
T
>
int
cmp
::
cmp_number
(
ptr_pair
&
ptrs
)
{
T
a
=
*
(
reinterpret_cast
<
T
*>
(
dp
.
fst
));
T
b
=
*
(
reinterpret_cast
<
T
*>
(
dp
.
snd
));
return
(
a
<
b
)
?
-
1
:
(
a
==
b
)
?
0
:
1
;
}
}
// end namespace shape
extern
"C"
void
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录