Skip to content

Commit

Permalink
rt: Remove rust_call_nullary_fn
Browse files Browse the repository at this point in the history
There's no need to delegate to C to call the Rust main function.
  • Loading branch information
brson committed May 8, 2013
1 parent 3c4b32c commit 80061ec
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 14 deletions.
25 changes: 19 additions & 6 deletions src/libcore/rt/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,22 +38,35 @@ mod local_heap;
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.
Expand Down
7 changes: 0 additions & 7 deletions src/rt/rust_builtin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -830,13 +830,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
Expand Down
1 change: 0 additions & 1 deletion src/rt/rustrt.def.in
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

5 comments on commit 80061ec

@bors
Copy link
Contributor

@bors bors commented on 80061ec May 8, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

saw approval from thestinger
at brson@80061ec

@bors
Copy link
Contributor

@bors bors commented on 80061ec May 8, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

merging brson/rust/nullary = 80061ec into auto

@bors
Copy link
Contributor

@bors bors commented on 80061ec May 8, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

brson/rust/nullary = 80061ec merged ok, testing candidate = b21f37c

@bors
Copy link
Contributor

@bors bors commented on 80061ec May 8, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bors
Copy link
Contributor

@bors bors commented on 80061ec May 8, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fast-forwarding incoming to auto = b21f37c

Please sign in to comment.