Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
b21f37c8
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,发现更多精彩内容 >>
提交
b21f37c8
编写于
5月 08, 2013
作者:
B
bors
浏览文件
操作
浏览文件
下载
差异文件
auto merge of #6323 : brson/rust/nullary, r=thestinger
There's no need to delegate to C to call the Rust main function.
上级
8f94ac61
80061ecb
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
19 addition
and
14 deletion
+19
-14
src/libcore/rt/mod.rs
src/libcore/rt/mod.rs
+19
-6
src/rt/rust_builtin.cpp
src/rt/rust_builtin.cpp
+0
-7
src/rt/rustrt.def.in
src/rt/rustrt.def.in
+0
-1
未找到文件。
src/libcore/rt/mod.rs
浏览文件 @
b21f37c8
...
...
@@ -38,22 +38,35 @@
pub
mod
test
;
pub
fn
start
(
main
:
*
u8
,
_
argc
:
int
,
_
argv
:
**
c_char
,
_
crate_map
:
*
u8
)
->
int
{
use
self
::
sched
::{
Scheduler
,
Task
};
use
self
::
uvio
::
UvEventLoop
;
use
sys
::
Closure
;
use
ptr
;
use
cast
;
let
loop_
=
~
UvEventLoop
::
new
();
let
mut
sched
=
~
Scheduler
::
new
(
loop_
);
let
main_task
=
~
do
Task
::
new
(
&
mut
sched
.stack_pool
)
{
// XXX: Can't call a C function pointer from Rust yet
unsafe
{
rust_call_nullary_fn
(
main
)
};
unsafe
{
// `main` is an `fn() -> ()` that doesn't take an environment
// XXX: Could also call this as an `extern "Rust" fn` once they work
let
main
=
Closure
{
code
:
main
as
*
(),
env
:
ptr
::
null
(),
};
let
mainfn
:
&
fn
()
=
cast
::
transmute
(
main
);
mainfn
();
}
};
sched
.task_queue
.push_back
(
main_task
);
sched
.run
();
return
0
;
extern
{
fn
rust_call_nullary_fn
(
f
:
*
u8
);
}
return
0
;
}
/// Possible contexts in which Rust code may be executing.
...
...
src/rt/rust_builtin.cpp
浏览文件 @
b21f37c8
...
...
@@ -829,13 +829,6 @@ rust_get_rt_env() {
return
task
->
kernel
->
env
;
}
typedef
void
*
(
*
nullary_fn
)();
extern
"C"
CDECL
void
rust_call_nullary_fn
(
nullary_fn
f
)
{
f
();
}
#ifndef _WIN32
pthread_key_t
sched_key
;
#else
...
...
src/rt/rustrt.def.in
浏览文件 @
b21f37c8
...
...
@@ -222,7 +222,6 @@ rust_uv_ip4_addrp
rust_uv_ip6_addrp
rust_uv_free_ip4_addr
rust_uv_free_ip6_addr
rust_call_nullary_fn
rust_initialize_global_state
rust_dbg_next_port
rust_new_memory_region
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录