diff --git a/src/lib/comm.rs b/src/lib/comm.rs index 07097079c0e..fd8f0981a9d 100644 --- a/src/lib/comm.rs +++ b/src/lib/comm.rs @@ -12,14 +12,14 @@ native "c-stack-cdecl" mod rustrt { type void; type rust_port; - fn chan_id_send<~T>(unused_task: *void, t: *sys::type_desc, + fn chan_id_send<~T>(t: *sys::type_desc, target_task: task::task, target_port: port_id, -data: T); - fn new_port(unused_task: *void, unit_sz: uint) -> *rust_port; - fn del_port(unused_task: *void, po: *rust_port); - fn drop_port(unused_task: *void, po: *rust_port); - fn get_port_id(unused_task: *void, po: *rust_port) -> port_id; + fn new_port(unit_sz: uint) -> *rust_port; + fn del_port(po: *rust_port); + fn drop_port(po: *rust_port); + fn get_port_id(po: *rust_port) -> port_id; } native "rust-intrinsic" mod rusti { @@ -33,20 +33,20 @@ type port_id = int; tag chan<~T> { chan_t(task::task, port_id); } resource port_ptr(po: *rustrt::rust_port) { - rustrt::drop_port(ptr::null(), po); - rustrt::del_port(ptr::null(), po); + rustrt::drop_port(po); + rustrt::del_port(po); } tag port<~T> { port_t(@port_ptr); } fn send<~T>(ch: chan, -data: T) { let chan_t(t, p) = ch; - rustrt::chan_id_send(ptr::null(), sys::get_type_desc::(), t, p, data); + rustrt::chan_id_send(sys::get_type_desc::(), t, p, data); task::yield(); } fn port<~T>() -> port { - let p = rustrt::new_port(ptr::null(), sys::size_of::()); + let p = rustrt::new_port(sys::size_of::()); ret port_t(@port_ptr(p)); } @@ -55,6 +55,6 @@ fn recv<~T>(p: port) -> T { } fn chan<~T>(p: port) -> chan { - let id = rustrt::get_port_id(ptr::null(), ***p); + let id = rustrt::get_port_id(***p); ret chan_t(task::get_task_id(), id); } diff --git a/src/rt/rust_builtin.cpp b/src/rt/rust_builtin.cpp index 310d61b182e..57d682ec497 100644 --- a/src/rt/rust_builtin.cpp +++ b/src/rt/rust_builtin.cpp @@ -559,8 +559,8 @@ void drop_port(rust_port *port) { port->ref_count--; } -extern "C" CDECL void -chan_send(rust_chan *chan, void *sptr) { +extern "C" CDECL +void chan_send(rust_chan *chan, void *sptr) { chan->send(sptr); }