Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
b49bdad4
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,发现更多精彩内容 >>
提交
b49bdad4
编写于
7月 21, 2011
作者:
P
Patrick Walton
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
rustc: Box raw types. Shaves about 5 seconds off compilation.
上级
df90f57a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
17 deletion
+17
-17
src/comp/middle/ty.rs
src/comp/middle/ty.rs
+17
-17
未找到文件。
src/comp/middle/ty.rs
浏览文件 @
b49bdad4
...
...
@@ -352,7 +352,7 @@ fn method_ty_to_fn_ty(&ctxt cx, method m) -> t {
const
uint
idx_first_others
=
21u
;
type
type_store
=
interner
::
interner
[
raw_t
];
type
type_store
=
interner
::
interner
[
@
raw_t
];
type
ty_param_substs_opt_and_ty
=
tup
(
option
::
t
[
ty
::
t
[]],
ty
::
t
);
...
...
@@ -403,7 +403,7 @@ fn mk_ctxt(session::session s, resolve::def_map dm,
let
node_type_table
ntt
=
@
smallintmap
::
mk
[
ty
::
ty_param_substs_opt_and_ty
]();
auto
tcache
=
new_def_hash
[
ty
::
ty_param_count_and_ty
]();
auto
ts
=
@
interner
::
mk
[
raw_t
](
hash_raw_ty
,
eq_raw_ty
);
auto
ts
=
@
interner
::
mk
[
@
raw_t
](
hash_raw_ty
,
eq_raw_ty
);
auto
cx
=
rec
(
ts
=
ts
,
sess
=
s
,
...
...
@@ -428,14 +428,14 @@ fn mk_ctxt(session::session s, resolve::def_map dm,
// Type constructors
fn
mk_raw_ty
(
&
ctxt
cx
,
&
sty
st
,
&
option
::
t
[
str
]
in_cname
)
->
raw_t
{
fn
mk_raw_ty
(
&
ctxt
cx
,
&
sty
st
,
&
option
::
t
[
str
]
in_cname
)
->
@
raw_t
{
auto
cname
=
none
;
auto
h
=
hash_type_info
(
st
,
cname
);
let
bool
has_params
=
false
;
let
bool
has_vars
=
false
;
fn
derive_flags_t
(
&
ctxt
cx
,
&
mutable
bool
has_params
,
&
mutable
bool
has_vars
,
&
t
tt
)
{
auto
rt
=
interner
::
get
[
raw_t
](
*
cx
.ts
,
tt
);
auto
rt
=
interner
::
get
[
@
raw_t
](
*
cx
.ts
,
tt
);
has_params
=
has_params
||
rt
.has_params
;
has_vars
=
has_vars
||
rt
.has_vars
;
}
...
...
@@ -511,20 +511,20 @@ fn derive_flags_sig(&ctxt cx, &mutable bool has_params,
derive_flags_t
(
cx
,
has_params
,
has_vars
,
tt
);
}
}
ret
rec
(
struct
=
st
,
cname
=
cname
,
hash
=
h
,
has_params
=
has_params
,
has_vars
=
has_vars
);
ret
@
rec
(
struct
=
st
,
cname
=
cname
,
hash
=
h
,
has_params
=
has_params
,
has_vars
=
has_vars
);
}
fn
intern
(
&
ctxt
cx
,
&
sty
st
,
&
option
::
t
[
str
]
cname
)
{
interner
::
intern
[
raw_t
]
(
*
cx
.ts
,
mk_raw_ty
(
cx
,
st
,
cname
));
interner
::
intern
(
*
cx
.ts
,
mk_raw_ty
(
cx
,
st
,
cname
));
}
fn
gen_ty_full
(
&
ctxt
cx
,
&
sty
st
,
&
option
::
t
[
str
]
cname
)
->
t
{
auto
raw_type
=
mk_raw_ty
(
cx
,
st
,
cname
);
ret
interner
::
intern
[
raw_t
]
(
*
cx
.ts
,
raw_type
);
ret
interner
::
intern
(
*
cx
.ts
,
raw_type
);
}
...
...
@@ -635,13 +635,13 @@ fn mk_res(&ctxt cx, &ast::def_id did, &t inner, &t[] tps) -> t {
// Returns the one-level-deep type structure of the given type.
fn
struct
(
&
ctxt
cx
,
&
t
typ
)
->
sty
{
ret
interner
::
get
[
raw_t
]
(
*
cx
.ts
,
typ
)
.struct
;
ret
interner
::
get
(
*
cx
.ts
,
typ
)
.struct
;
}
// Returns the canonical name of the given type.
fn
cname
(
&
ctxt
cx
,
&
t
typ
)
->
option
::
t
[
str
]
{
ret
interner
::
get
[
raw_t
]
(
*
cx
.ts
,
typ
)
.cname
;
ret
interner
::
get
(
*
cx
.ts
,
typ
)
.cname
;
}
...
...
@@ -1434,7 +1434,7 @@ fn hash_type_info(&sty st, &option::t[str] cname_opt) -> uint {
ret
h
;
}
fn
hash_raw_ty
(
&
raw_t
rt
)
->
uint
{
ret
rt
.hash
;
}
fn
hash_raw_ty
(
&
@
raw_t
rt
)
->
uint
{
ret
rt
.hash
;
}
fn
hash_ty
(
&
t
typ
)
->
uint
{
ret
typ
;
}
...
...
@@ -1728,7 +1728,7 @@ fn equal_def(&ast::def_id did_a, &ast::def_id did_b) -> bool {
// module.
//
// FIXME: Use structural comparison, but this loops forever and segfaults.
fn
eq_raw_ty
(
&
raw_t
a
,
&
raw_t
b
)
->
bool
{
fn
eq_raw_ty
(
&
@
raw_t
a
,
&@
raw_t
b
)
->
bool
{
// Check hashes (fast path).
if
(
a
.hash
!=
b
.hash
)
{
ret
false
;
}
...
...
@@ -1830,11 +1830,11 @@ fn counter(&ctxt cx, @mutable (uint[]) param_indices, t ty) {
}
fn
type_contains_vars
(
&
ctxt
cx
,
&
t
typ
)
->
bool
{
ret
interner
::
get
[
raw_t
]
(
*
cx
.ts
,
typ
)
.has_vars
;
ret
interner
::
get
(
*
cx
.ts
,
typ
)
.has_vars
;
}
fn
type_contains_params
(
&
ctxt
cx
,
&
t
typ
)
->
bool
{
ret
interner
::
get
[
raw_t
]
(
*
cx
.ts
,
typ
)
.has_params
;
ret
interner
::
get
(
*
cx
.ts
,
typ
)
.has_params
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录