提交 b1832044 编写于 作者: T Tim Chevalier

Move over to calling ptr::addr_of

Everything should now call ptr::addr_of instead of
ptr::p2::addr_of. Only the pipes macro code when compiled
by stage0 will call ptr::p2::addr_of. Needs a snapshot to get
rid of that.
上级 72ae4262
...@@ -231,7 +231,7 @@ fn unix_time_in_microseconds() -> u64 unsafe { ...@@ -231,7 +231,7 @@ fn unix_time_in_microseconds() -> u64 unsafe {
mut tv_sec: 0 as c_ulonglong, mut tv_sec: 0 as c_ulonglong,
mut tv_usec: 0 as c_ulonglong mut tv_usec: 0 as c_ulonglong
}; };
lib_c::gettimeofday(ptr::addr_of(x), ptr::null()); lib_c::gettimeofday(ptr::addr_of(&x), ptr::null());
return (x.tv_sec as u64) * 1000_000_u64 + (x.tv_usec as u64); return (x.tv_sec as u64) * 1000_000_u64 + (x.tv_usec as u64);
} }
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#[forbid(deprecated_pattern)]; #[forbid(deprecated_pattern)];
use cast::transmute; use cast::transmute;
use ptr::p2::addr_of; use ptr::addr_of;
/// Code for dealing with @-vectors. This is pretty incomplete, and /// Code for dealing with @-vectors. This is pretty incomplete, and
/// contains a bunch of duplication from the code for ~-vectors. /// contains a bunch of duplication from the code for ~-vectors.
......
...@@ -24,7 +24,7 @@ pub struct BoxRepr { ...@@ -24,7 +24,7 @@ pub struct BoxRepr {
pub pure fn ptr_eq<T>(a: @T, b: @T) -> bool { pub pure fn ptr_eq<T>(a: @T, b: @T) -> bool {
//! Determine if two shared boxes point to the same object //! Determine if two shared boxes point to the same object
unsafe { ptr::p2::addr_of(&(*a)) == ptr::p2::addr_of(&(*b)) } unsafe { ptr::addr_of(&(*a)) == ptr::addr_of(&(*b)) }
} }
impl<T:Eq> @const T : Eq { impl<T:Eq> @const T : Eq {
......
...@@ -103,7 +103,7 @@ struct PortPtr<T:Send> { ...@@ -103,7 +103,7 @@ struct PortPtr<T:Send> {
// Once the port is detached it's guaranteed not to receive further // Once the port is detached it's guaranteed not to receive further
// messages // messages
let yield = 0; let yield = 0;
let yieldp = ptr::p2::addr_of(&yield); let yieldp = ptr::addr_of(&yield);
rustrt::rust_port_begin_detach(self.po, yieldp); rustrt::rust_port_begin_detach(self.po, yieldp);
if yield != 0 { if yield != 0 {
// Need to wait for the port to be detached // Need to wait for the port to be detached
...@@ -176,7 +176,7 @@ pub fn Chan<T: Send>(p: Port<T>) -> Chan<T> { ...@@ -176,7 +176,7 @@ pub fn Chan<T: Send>(p: Port<T>) -> Chan<T> {
*/ */
pub fn send<T: Send>(ch: Chan<T>, +data: T) { pub fn send<T: Send>(ch: Chan<T>, +data: T) {
let Chan_(p) = ch; let Chan_(p) = ch;
let data_ptr = ptr::p2::addr_of(&data) as *(); let data_ptr = ptr::addr_of(&data) as *();
let res = rustrt::rust_port_id_send(p, data_ptr); let res = rustrt::rust_port_id_send(p, data_ptr);
if res != 0 unsafe { if res != 0 unsafe {
// Data sent successfully // Data sent successfully
...@@ -206,10 +206,10 @@ fn peek_chan<T: Send>(ch: comm::Chan<T>) -> bool { ...@@ -206,10 +206,10 @@ fn peek_chan<T: Send>(ch: comm::Chan<T>) -> bool {
/// Receive on a raw port pointer /// Receive on a raw port pointer
fn recv_<T: Send>(p: *rust_port) -> T { fn recv_<T: Send>(p: *rust_port) -> T {
let yield = 0; let yield = 0;
let yieldp = ptr::p2::addr_of(&yield); let yieldp = ptr::addr_of(&yield);
let mut res; let mut res;
res = rusti::init::<T>(); res = rusti::init::<T>();
rustrt::port_recv(ptr::p2::addr_of(&res) as *uint, p, yieldp); rustrt::port_recv(ptr::addr_of(&res) as *uint, p, yieldp);
if yield != 0 { if yield != 0 {
// Data isn't available yet, so res has not been initialized. // Data isn't available yet, so res has not been initialized.
...@@ -233,12 +233,12 @@ fn peek_(p: *rust_port) -> bool { ...@@ -233,12 +233,12 @@ fn peek_(p: *rust_port) -> bool {
pub fn select2<A: Send, B: Send>(p_a: Port<A>, p_b: Port<B>) pub fn select2<A: Send, B: Send>(p_a: Port<A>, p_b: Port<B>)
-> Either<A, B> { -> Either<A, B> {
let ports = ~[(**p_a).po, (**p_b).po]; let ports = ~[(**p_a).po, (**p_b).po];
let yield = 0, yieldp = ptr::p2::addr_of(&yield); let yield = 0, yieldp = ptr::addr_of(&yield);
let mut resport: *rust_port; let mut resport: *rust_port;
resport = rusti::init::<*rust_port>(); resport = rusti::init::<*rust_port>();
do vec::as_imm_buf(ports) |ports, n_ports| { do vec::as_imm_buf(ports) |ports, n_ports| {
rustrt::rust_port_select(ptr::p2::addr_of(&resport), ports, rustrt::rust_port_select(ptr::addr_of(&resport), ports,
n_ports as size_t, yieldp); n_ports as size_t, yieldp);
} }
......
...@@ -34,7 +34,7 @@ pub fn deflate_bytes(bytes: &[const u8]) -> ~[u8] { ...@@ -34,7 +34,7 @@ pub fn deflate_bytes(bytes: &[const u8]) -> ~[u8] {
let res = let res =
rustrt::tdefl_compress_mem_to_heap(b as *c_void, rustrt::tdefl_compress_mem_to_heap(b as *c_void,
len as size_t, len as size_t,
ptr::addr_of(outsz), ptr::addr_of(&outsz),
lz_norm); lz_norm);
assert res as int != 0; assert res as int != 0;
let out = vec::raw::from_buf(res as *u8, let out = vec::raw::from_buf(res as *u8,
...@@ -52,7 +52,7 @@ pub fn inflate_bytes(bytes: &[const u8]) -> ~[u8] { ...@@ -52,7 +52,7 @@ pub fn inflate_bytes(bytes: &[const u8]) -> ~[u8] {
let res = let res =
rustrt::tinfl_decompress_mem_to_heap(b as *c_void, rustrt::tinfl_decompress_mem_to_heap(b as *c_void,
len as size_t, len as size_t,
ptr::addr_of(outsz), ptr::addr_of(&outsz),
0); 0);
assert res as int != 0; assert res as int != 0;
let out = vec::raw::from_buf(res as *u8, let out = vec::raw::from_buf(res as *u8,
......
...@@ -316,7 +316,7 @@ pub fn cleanup_stack_for_failure() { ...@@ -316,7 +316,7 @@ pub fn cleanup_stack_for_failure() {
// own stack roots on the stack anyway. // own stack roots on the stack anyway.
let sentinel_box = ~0; let sentinel_box = ~0;
let sentinel: **Word = if expect_sentinel() { let sentinel: **Word = if expect_sentinel() {
cast::reinterpret_cast(&ptr::p2::addr_of(&sentinel_box)) cast::reinterpret_cast(&ptr::addr_of(&sentinel_box))
} else { } else {
ptr::null() ptr::null()
}; };
......
...@@ -85,7 +85,7 @@ ...@@ -85,7 +85,7 @@
const SPIN_COUNT: uint = 0; const SPIN_COUNT: uint = 0;
macro_rules! move_it ( macro_rules! move_it (
{ $x:expr } => { unsafe { let y <- *ptr::addr_of($x); move y } } { $x:expr } => { unsafe { let y <- *ptr::addr_of(&($x)); move y } }
) )
#[doc(hidden)] #[doc(hidden)]
...@@ -219,7 +219,7 @@ fn unibuffer<T: Send>() -> ~Buffer<Packet<T>> { ...@@ -219,7 +219,7 @@ fn unibuffer<T: Send>() -> ~Buffer<Packet<T>> {
#[doc(hidden)] #[doc(hidden)]
pub fn packet<T: Send>() -> *Packet<T> { pub fn packet<T: Send>() -> *Packet<T> {
let b = unibuffer(); let b = unibuffer();
let p = ptr::p2::addr_of(&(b.data)); let p = ptr::addr_of(&(b.data));
// We'll take over memory management from here. // We'll take over memory management from here.
unsafe { forget(move b) } unsafe { forget(move b) }
p p
...@@ -359,7 +359,7 @@ pub fn send<T: Send, Tbuffer: Send>(+p: SendPacketBuffered<T, Tbuffer>, ...@@ -359,7 +359,7 @@ pub fn send<T: Send, Tbuffer: Send>(+p: SendPacketBuffered<T, Tbuffer>,
let header = p.header(); let header = p.header();
let p_ = p.unwrap(); let p_ = p.unwrap();
let p = unsafe { &*p_ }; let p = unsafe { &*p_ };
assert ptr::p2::addr_of(&(p.header)) == header; assert ptr::addr_of(&(p.header)) == header;
assert p.payload.is_none(); assert p.payload.is_none();
p.payload <- Some(move payload); p.payload <- Some(move payload);
let old_state = swap_state_rel(&mut p.header.state, Full); let old_state = swap_state_rel(&mut p.header.state, Full);
...@@ -377,7 +377,7 @@ pub fn send<T: Send, Tbuffer: Send>(+p: SendPacketBuffered<T, Tbuffer>, ...@@ -377,7 +377,7 @@ pub fn send<T: Send, Tbuffer: Send>(+p: SendPacketBuffered<T, Tbuffer>,
let old_task = swap_task(&mut p.header.blocked_task, ptr::null()); let old_task = swap_task(&mut p.header.blocked_task, ptr::null());
if !old_task.is_null() { if !old_task.is_null() {
rustrt::task_signal_event( rustrt::task_signal_event(
old_task, ptr::p2::addr_of(&(p.header)) as *libc::c_void); old_task, ptr::addr_of(&(p.header)) as *libc::c_void);
rustrt::rust_task_deref(old_task); rustrt::rust_task_deref(old_task);
} }
...@@ -529,7 +529,7 @@ fn sender_terminate<T: Send>(p: *Packet<T>) { ...@@ -529,7 +529,7 @@ fn sender_terminate<T: Send>(p: *Packet<T>) {
if !old_task.is_null() { if !old_task.is_null() {
rustrt::task_signal_event( rustrt::task_signal_event(
old_task, old_task,
ptr::p2::addr_of(&(p.header)) as *libc::c_void); ptr::addr_of(&(p.header)) as *libc::c_void);
rustrt::rust_task_deref(old_task); rustrt::rust_task_deref(old_task);
} }
// The receiver will eventually clean up. // The receiver will eventually clean up.
...@@ -744,7 +744,7 @@ pub fn SendPacketBuffered<T: Send, Tbuffer: Send>(p: *Packet<T>) ...@@ -744,7 +744,7 @@ pub fn SendPacketBuffered<T: Send, Tbuffer: Send>(p: *Packet<T>)
p: Some(p), p: Some(p),
buffer: unsafe { buffer: unsafe {
Some(BufferResource( Some(BufferResource(
get_buffer(ptr::p2::addr_of(&((*p).header))))) get_buffer(ptr::addr_of(&((*p).header)))))
} }
} }
} }
...@@ -760,7 +760,7 @@ fn unwrap() -> *Packet<T> { ...@@ -760,7 +760,7 @@ fn unwrap() -> *Packet<T> {
match self.p { match self.p {
Some(packet) => unsafe { Some(packet) => unsafe {
let packet = &*packet; let packet = &*packet;
let header = ptr::p2::addr_of(&(packet.header)); let header = ptr::addr_of(&(packet.header));
//forget(packet); //forget(packet);
header header
}, },
...@@ -815,7 +815,7 @@ fn unwrap() -> *Packet<T> { ...@@ -815,7 +815,7 @@ fn unwrap() -> *Packet<T> {
match self.p { match self.p {
Some(packet) => unsafe { Some(packet) => unsafe {
let packet = &*packet; let packet = &*packet;
let header = ptr::p2::addr_of(&(packet.header)); let header = ptr::addr_of(&(packet.header));
//forget(packet); //forget(packet);
header header
}, },
...@@ -838,7 +838,7 @@ pub fn RecvPacketBuffered<T: Send, Tbuffer: Send>(p: *Packet<T>) ...@@ -838,7 +838,7 @@ pub fn RecvPacketBuffered<T: Send, Tbuffer: Send>(p: *Packet<T>)
p: Some(p), p: Some(p),
buffer: unsafe { buffer: unsafe {
Some(BufferResource( Some(BufferResource(
get_buffer(ptr::p2::addr_of(&((*p).header))))) get_buffer(ptr::addr_of(&((*p).header)))))
} }
} }
} }
......
...@@ -24,12 +24,9 @@ fn memset(dest: *mut c_void, c: libc::c_int, ...@@ -24,12 +24,9 @@ fn memset(dest: *mut c_void, c: libc::c_int,
fn addr_of<T>(val: T) -> *T; fn addr_of<T>(val: T) -> *T;
} }
/*
Remove this after snapshot; make p2::addr_of addr_of
*/
/// Get an unsafe pointer to a value /// Get an unsafe pointer to a value
#[inline(always)] #[inline(always)]
pub pure fn addr_of<T>(val: T) -> *T { unsafe { rusti::addr_of(val) } } pub pure fn addr_of<T>(val: &T) -> *T { unsafe { rusti::addr_of(*val) } }
pub mod p2 { pub mod p2 {
/// Get an unsafe pointer to a value /// Get an unsafe pointer to a value
......
...@@ -1780,7 +1780,7 @@ fn is_alphanumeric(s: &str) -> bool { ...@@ -1780,7 +1780,7 @@ fn is_alphanumeric(s: &str) -> bool {
#[inline(always)] #[inline(always)]
pub pure fn as_buf<T>(s: &str, f: fn(*u8, uint) -> T) -> T { pub pure fn as_buf<T>(s: &str, f: fn(*u8, uint) -> T) -> T {
unsafe { unsafe {
let v : *(*u8,uint) = ::cast::reinterpret_cast(&ptr::p2::addr_of(&s)); let v : *(*u8,uint) = ::cast::reinterpret_cast(&ptr::addr_of(&s));
let (buf,len) = *v; let (buf,len) = *v;
f(buf, len) f(buf, len)
} }
......
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
use rt::rust_closure; use rt::rust_closure;
macro_rules! move_it ( macro_rules! move_it (
{ $x:expr } => { unsafe { let y <- *ptr::p2::addr_of(&($x)); move y } } { $x:expr } => { unsafe { let y <- *ptr::addr_of(&($x)); move y } }
) )
type TaskSet = send_map::linear::LinearMap<*rust_task,()>; type TaskSet = send_map::linear::LinearMap<*rust_task,()>;
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
use cmp::{Eq, Ord}; use cmp::{Eq, Ord};
use option::{Some, None}; use option::{Some, None};
use ptr::p2::addr_of; use ptr::addr_of;
use libc::size_t; use libc::size_t;
export append; export append;
......
...@@ -21,19 +21,19 @@ pub fn debug_tydesc<T>() { ...@@ -21,19 +21,19 @@ pub fn debug_tydesc<T>() {
} }
pub fn debug_opaque<T>(+x: T) { pub fn debug_opaque<T>(+x: T) {
rustrt::debug_opaque(sys::get_type_desc::<T>(), ptr::addr_of(x) as *()); rustrt::debug_opaque(sys::get_type_desc::<T>(), ptr::addr_of(&x) as *());
} }
pub fn debug_box<T>(x: @T) { pub fn debug_box<T>(x: @T) {
rustrt::debug_box(sys::get_type_desc::<T>(), ptr::addr_of(x) as *()); rustrt::debug_box(sys::get_type_desc::<T>(), ptr::addr_of(&x) as *());
} }
pub fn debug_tag<T>(+x: T) { pub fn debug_tag<T>(+x: T) {
rustrt::debug_tag(sys::get_type_desc::<T>(), ptr::addr_of(x) as *()); rustrt::debug_tag(sys::get_type_desc::<T>(), ptr::addr_of(&x) as *());
} }
pub fn debug_fn<T>(+x: T) { pub fn debug_fn<T>(+x: T) {
rustrt::debug_fn(sys::get_type_desc::<T>(), ptr::addr_of(x) as *()); rustrt::debug_fn(sys::get_type_desc::<T>(), ptr::addr_of(&x) as *());
} }
pub unsafe fn ptr_cast<T, U>(x: @T) -> @U { pub unsafe fn ptr_cast<T, U>(x: @T) -> @U {
......
...@@ -89,11 +89,11 @@ fn get_addr(node: &str, iotask: iotask) ...@@ -89,11 +89,11 @@ fn get_addr(node: &str, iotask: iotask)
do str::as_buf(node) |node_ptr, len| unsafe { do str::as_buf(node) |node_ptr, len| unsafe {
log(debug, fmt!("slice len %?", len)); log(debug, fmt!("slice len %?", len));
let handle = create_uv_getaddrinfo_t(); let handle = create_uv_getaddrinfo_t();
let handle_ptr = ptr::addr_of(handle); let handle_ptr = ptr::addr_of(&handle);
let handle_data: GetAddrData = { let handle_data: GetAddrData = {
output_ch: output_ch output_ch: output_ch
}; };
let handle_data_ptr = ptr::addr_of(handle_data); let handle_data_ptr = ptr::addr_of(&handle_data);
do interact(iotask) |loop_ptr| unsafe { do interact(iotask) |loop_ptr| unsafe {
let result = uv_getaddrinfo( let result = uv_getaddrinfo(
loop_ptr, loop_ptr,
...@@ -150,7 +150,7 @@ trait AsUnsafeU32 { ...@@ -150,7 +150,7 @@ trait AsUnsafeU32 {
impl Ipv4Rep: AsUnsafeU32 { impl Ipv4Rep: AsUnsafeU32 {
// this is pretty dastardly, i know // this is pretty dastardly, i know
unsafe fn as_u32() -> u32 { unsafe fn as_u32() -> u32 {
*((ptr::addr_of(self)) as *u32) *((ptr::addr_of(&self)) as *u32)
} }
} }
fn parse_to_ipv4_rep(ip: &str) -> result::Result<Ipv4Rep, ~str> { fn parse_to_ipv4_rep(ip: &str) -> result::Result<Ipv4Rep, ~str> {
......
...@@ -138,7 +138,7 @@ fn connect(+input_ip: ip::IpAddr, port: uint, ...@@ -138,7 +138,7 @@ fn connect(+input_ip: ip::IpAddr, port: uint,
result_ch: core::comm::Chan(result_po), result_ch: core::comm::Chan(result_po),
closed_signal_ch: core::comm::Chan(closed_signal_po) closed_signal_ch: core::comm::Chan(closed_signal_po)
}; };
let conn_data_ptr = ptr::addr_of(conn_data); let conn_data_ptr = ptr::addr_of(&conn_data);
let reader_po = core::comm::Port::<result::Result<~[u8], TcpErrData>>(); let reader_po = core::comm::Port::<result::Result<~[u8], TcpErrData>>();
let stream_handle_ptr = malloc_uv_tcp_t(); let stream_handle_ptr = malloc_uv_tcp_t();
*(stream_handle_ptr as *mut uv::ll::uv_tcp_t) = uv::ll::tcp_t(); *(stream_handle_ptr as *mut uv::ll::uv_tcp_t) = uv::ll::tcp_t();
...@@ -150,7 +150,7 @@ fn connect(+input_ip: ip::IpAddr, port: uint, ...@@ -150,7 +150,7 @@ fn connect(+input_ip: ip::IpAddr, port: uint,
write_req: uv::ll::write_t(), write_req: uv::ll::write_t(),
iotask: iotask iotask: iotask
}; };
let socket_data_ptr = ptr::addr_of(*socket_data); let socket_data_ptr = ptr::addr_of(&(*socket_data));
log(debug, fmt!("tcp_connect result_ch %?", conn_data.result_ch)); log(debug, fmt!("tcp_connect result_ch %?", conn_data.result_ch));
// get an unsafe representation of our stream_handle_ptr that // get an unsafe representation of our stream_handle_ptr that
// we can send into the interact cb to be handled in libuv.. // we can send into the interact cb to be handled in libuv..
...@@ -165,7 +165,7 @@ fn connect(+input_ip: ip::IpAddr, port: uint, ...@@ -165,7 +165,7 @@ fn connect(+input_ip: ip::IpAddr, port: uint,
log(debug, ~"tcp_init successful"); log(debug, ~"tcp_init successful");
log(debug, ~"dealing w/ ipv4 connection.."); log(debug, ~"dealing w/ ipv4 connection..");
let connect_req_ptr = let connect_req_ptr =
ptr::addr_of((*socket_data_ptr).connect_req); ptr::addr_of(&((*socket_data_ptr).connect_req));
let addr_str = ip::format_addr(&input_ip); let addr_str = ip::format_addr(&input_ip);
let connect_result = match input_ip { let connect_result = match input_ip {
ip::Ipv4(ref addr) => { ip::Ipv4(ref addr) => {
...@@ -179,7 +179,7 @@ fn connect(+input_ip: ip::IpAddr, port: uint, ...@@ -179,7 +179,7 @@ fn connect(+input_ip: ip::IpAddr, port: uint,
uv::ll::tcp_connect( uv::ll::tcp_connect(
connect_req_ptr, connect_req_ptr,
stream_handle_ptr, stream_handle_ptr,
ptr::addr_of(in_addr), ptr::addr_of(&in_addr),
tcp_connect_on_connect_cb) tcp_connect_on_connect_cb)
} }
ip::Ipv6(ref addr) => { ip::Ipv6(ref addr) => {
...@@ -188,7 +188,7 @@ fn connect(+input_ip: ip::IpAddr, port: uint, ...@@ -188,7 +188,7 @@ fn connect(+input_ip: ip::IpAddr, port: uint,
uv::ll::tcp_connect6( uv::ll::tcp_connect6(
connect_req_ptr, connect_req_ptr,
stream_handle_ptr, stream_handle_ptr,
ptr::addr_of(in_addr), ptr::addr_of(&in_addr),
tcp_connect_on_connect_cb) tcp_connect_on_connect_cb)
} }
}; };
...@@ -264,7 +264,7 @@ fn connect(+input_ip: ip::IpAddr, port: uint, ...@@ -264,7 +264,7 @@ fn connect(+input_ip: ip::IpAddr, port: uint,
*/ */
fn write(sock: &TcpSocket, raw_write_data: ~[u8]) fn write(sock: &TcpSocket, raw_write_data: ~[u8])
-> result::Result<(), TcpErrData> unsafe { -> result::Result<(), TcpErrData> unsafe {
let socket_data_ptr = ptr::addr_of(*(sock.socket_data)); let socket_data_ptr = ptr::addr_of(&(*(sock.socket_data)));
write_common_impl(socket_data_ptr, raw_write_data) write_common_impl(socket_data_ptr, raw_write_data)
} }
...@@ -301,7 +301,7 @@ fn write(sock: &TcpSocket, raw_write_data: ~[u8]) ...@@ -301,7 +301,7 @@ fn write(sock: &TcpSocket, raw_write_data: ~[u8])
*/ */
fn write_future(sock: &TcpSocket, raw_write_data: ~[u8]) fn write_future(sock: &TcpSocket, raw_write_data: ~[u8])
-> future::Future<result::Result<(), TcpErrData>> unsafe { -> future::Future<result::Result<(), TcpErrData>> unsafe {
let socket_data_ptr = ptr::addr_of(*(sock.socket_data)); let socket_data_ptr = ptr::addr_of(&(*(sock.socket_data)));
do future_spawn { do future_spawn {
let data_copy = copy(raw_write_data); let data_copy = copy(raw_write_data);
write_common_impl(socket_data_ptr, data_copy) write_common_impl(socket_data_ptr, data_copy)
...@@ -326,7 +326,7 @@ fn write_future(sock: &TcpSocket, raw_write_data: ~[u8]) ...@@ -326,7 +326,7 @@ fn write_future(sock: &TcpSocket, raw_write_data: ~[u8])
fn read_start(sock: &TcpSocket) fn read_start(sock: &TcpSocket)
-> result::Result<comm::Port< -> result::Result<comm::Port<
result::Result<~[u8], TcpErrData>>, TcpErrData> unsafe { result::Result<~[u8], TcpErrData>>, TcpErrData> unsafe {
let socket_data = ptr::addr_of(*(sock.socket_data)); let socket_data = ptr::addr_of(&(*(sock.socket_data)));
read_start_common_impl(socket_data) read_start_common_impl(socket_data)
} }
...@@ -341,7 +341,7 @@ fn read_stop(sock: &TcpSocket, ...@@ -341,7 +341,7 @@ fn read_stop(sock: &TcpSocket,
+read_port: comm::Port<result::Result<~[u8], TcpErrData>>) -> +read_port: comm::Port<result::Result<~[u8], TcpErrData>>) ->
result::Result<(), TcpErrData> unsafe { result::Result<(), TcpErrData> unsafe {
log(debug, fmt!("taking the read_port out of commission %?", read_port)); log(debug, fmt!("taking the read_port out of commission %?", read_port));
let socket_data = ptr::addr_of(*sock.socket_data); let socket_data = ptr::addr_of(&(*sock.socket_data));
read_stop_common_impl(socket_data) read_stop_common_impl(socket_data)
} }
...@@ -362,7 +362,7 @@ fn read_stop(sock: &TcpSocket, ...@@ -362,7 +362,7 @@ fn read_stop(sock: &TcpSocket,
*/ */
fn read(sock: &TcpSocket, timeout_msecs: uint) fn read(sock: &TcpSocket, timeout_msecs: uint)
-> result::Result<~[u8],TcpErrData> { -> result::Result<~[u8],TcpErrData> {
let socket_data = ptr::addr_of(*(sock.socket_data)); let socket_data = ptr::addr_of(&(*(sock.socket_data)));
read_common_impl(socket_data, timeout_msecs) read_common_impl(socket_data, timeout_msecs)
} }
...@@ -397,7 +397,7 @@ fn read(sock: &TcpSocket, timeout_msecs: uint) ...@@ -397,7 +397,7 @@ fn read(sock: &TcpSocket, timeout_msecs: uint)
*/ */
fn read_future(sock: &TcpSocket, timeout_msecs: uint) fn read_future(sock: &TcpSocket, timeout_msecs: uint)
-> future::Future<result::Result<~[u8],TcpErrData>> { -> future::Future<result::Result<~[u8],TcpErrData>> {
let socket_data = ptr::addr_of(*(sock.socket_data)); let socket_data = ptr::addr_of(&(*(sock.socket_data)));
do future_spawn { do future_spawn {
read_common_impl(socket_data, timeout_msecs) read_common_impl(socket_data, timeout_msecs)
} }
...@@ -491,7 +491,7 @@ fn accept(new_conn: TcpNewConnection) ...@@ -491,7 +491,7 @@ fn accept(new_conn: TcpNewConnection)
write_req : uv::ll::write_t(), write_req : uv::ll::write_t(),
iotask : iotask iotask : iotask
}; };
let client_socket_data_ptr = ptr::addr_of(*client_socket_data); let client_socket_data_ptr = ptr::addr_of(&(*client_socket_data));
let client_stream_handle_ptr = let client_stream_handle_ptr =
(*client_socket_data_ptr).stream_handle_ptr; (*client_socket_data_ptr).stream_handle_ptr;
...@@ -596,7 +596,7 @@ fn listen_common(+host_ip: ip::IpAddr, port: uint, backlog: uint, ...@@ -596,7 +596,7 @@ fn listen_common(+host_ip: ip::IpAddr, port: uint, backlog: uint,
let kill_po = core::comm::Port::<Option<TcpErrData>>(); let kill_po = core::comm::Port::<Option<TcpErrData>>();
let kill_ch = core::comm::Chan(kill_po); let kill_ch = core::comm::Chan(kill_po);
let server_stream = uv::ll::tcp_t(); let server_stream = uv::ll::tcp_t();
let server_stream_ptr = ptr::addr_of(server_stream); let server_stream_ptr = ptr::addr_of(&server_stream);
let server_data = { let server_data = {
server_stream_ptr: server_stream_ptr, server_stream_ptr: server_stream_ptr,
stream_closed_ch: core::comm::Chan(stream_closed_po), stream_closed_ch: core::comm::Chan(stream_closed_po),
...@@ -605,7 +605,7 @@ fn listen_common(+host_ip: ip::IpAddr, port: uint, backlog: uint, ...@@ -605,7 +605,7 @@ fn listen_common(+host_ip: ip::IpAddr, port: uint, backlog: uint,
iotask: iotask, iotask: iotask,
mut active: true mut active: true
}; };
let server_data_ptr = ptr::addr_of(server_data); let server_data_ptr = ptr::addr_of(&server_data);
let setup_result = do core::comm::listen |setup_ch| { let setup_result = do core::comm::listen |setup_ch| {
// this is to address a compiler warning about // this is to address a compiler warning about
...@@ -627,13 +627,13 @@ fn listen_common(+host_ip: ip::IpAddr, port: uint, backlog: uint, ...@@ -627,13 +627,13 @@ fn listen_common(+host_ip: ip::IpAddr, port: uint, backlog: uint,
log(debug, fmt!("addr: %?", addr)); log(debug, fmt!("addr: %?", addr));
let in_addr = uv::ll::ip4_addr(addr_str, port as int); let in_addr = uv::ll::ip4_addr(addr_str, port as int);
uv::ll::tcp_bind(server_stream_ptr, uv::ll::tcp_bind(server_stream_ptr,
ptr::addr_of(in_addr)) ptr::addr_of(&in_addr))
} }
ip::Ipv6(ref addr) => { ip::Ipv6(ref addr) => {
log(debug, fmt!("addr: %?", addr)); log(debug, fmt!("addr: %?", addr));
let in_addr = uv::ll::ip6_addr(addr_str, port as int); let in_addr = uv::ll::ip6_addr(addr_str, port as int);
uv::ll::tcp_bind6(server_stream_ptr, uv::ll::tcp_bind6(server_stream_ptr,
ptr::addr_of(in_addr)) ptr::addr_of(&in_addr))
} }
}; };
match bind_result { match bind_result {
...@@ -818,7 +818,7 @@ fn tell() -> uint { ...@@ -818,7 +818,7 @@ fn tell() -> uint {
impl TcpSocketBuf: io::Writer { impl TcpSocketBuf: io::Writer {
fn write(data: &[const u8]) unsafe { fn write(data: &[const u8]) unsafe {
let socket_data_ptr = let socket_data_ptr =
ptr::addr_of(*((*(self.data)).sock).socket_data); ptr::addr_of(&(*((*(self.data)).sock).socket_data));
let w_result = write_common_impl(socket_data_ptr, let w_result = write_common_impl(socket_data_ptr,
vec::slice(data, 0, vec::len(data))); vec::slice(data, 0, vec::len(data)));
if w_result.is_err() { if w_result.is_err() {
...@@ -850,7 +850,7 @@ fn tear_down_socket_data(socket_data: @TcpSocketData) unsafe { ...@@ -850,7 +850,7 @@ fn tear_down_socket_data(socket_data: @TcpSocketData) unsafe {
let close_data = { let close_data = {
closed_ch: closed_ch closed_ch: closed_ch
}; };
let close_data_ptr = ptr::addr_of(close_data); let close_data_ptr = ptr::addr_of(&close_data);
let stream_handle_ptr = (*socket_data).stream_handle_ptr; let stream_handle_ptr = (*socket_data).stream_handle_ptr;
do iotask::interact((*socket_data).iotask) |loop_ptr| unsafe { do iotask::interact((*socket_data).iotask) |loop_ptr| unsafe {
log(debug, fmt!("interact dtor for tcp_socket stream %? loop %?", log(debug, fmt!("interact dtor for tcp_socket stream %? loop %?",
...@@ -966,18 +966,18 @@ fn read_start_common_impl(socket_data: *TcpSocketData) ...@@ -966,18 +966,18 @@ fn read_start_common_impl(socket_data: *TcpSocketData)
fn write_common_impl(socket_data_ptr: *TcpSocketData, fn write_common_impl(socket_data_ptr: *TcpSocketData,
raw_write_data: ~[u8]) raw_write_data: ~[u8])
-> result::Result<(), TcpErrData> unsafe { -> result::Result<(), TcpErrData> unsafe {
let write_req_ptr = ptr::addr_of((*socket_data_ptr).write_req); let write_req_ptr = ptr::addr_of(&((*socket_data_ptr).write_req));
let stream_handle_ptr = let stream_handle_ptr =
(*socket_data_ptr).stream_handle_ptr; (*socket_data_ptr).stream_handle_ptr;
let write_buf_vec = ~[ uv::ll::buf_init( let write_buf_vec = ~[ uv::ll::buf_init(
vec::raw::to_ptr(raw_write_data), vec::raw::to_ptr(raw_write_data),
vec::len(raw_write_data)) ]; vec::len(raw_write_data)) ];
let write_buf_vec_ptr = ptr::addr_of(write_buf_vec); let write_buf_vec_ptr = ptr::addr_of(&write_buf_vec);
let result_po = core::comm::Port::<TcpWriteResult>(); let result_po = core::comm::Port::<TcpWriteResult>();
let write_data = { let write_data = {
result_ch: core::comm::Chan(result_po) result_ch: core::comm::Chan(result_po)
}; };
let write_data_ptr = ptr::addr_of(write_data); let write_data_ptr = ptr::addr_of(&write_data);
do iotask::interact((*socket_data_ptr).iotask) |loop_ptr| unsafe { do iotask::interact((*socket_data_ptr).iotask) |loop_ptr| unsafe {
log(debug, fmt!("in interact cb for tcp::write %?", loop_ptr)); log(debug, fmt!("in interact cb for tcp::write %?", loop_ptr));
match uv::ll::write(write_req_ptr, match uv::ll::write(write_req_ptr,
......
...@@ -773,7 +773,7 @@ fn test_mutex_lock() { ...@@ -773,7 +773,7 @@ fn test_mutex_lock() {
let m = ~Mutex(); let m = ~Mutex();
let m2 = ~m.clone(); let m2 = ~m.clone();
let mut sharedstate = ~0; let mut sharedstate = ~0;
let ptr = ptr::addr_of(*sharedstate); let ptr = ptr::p2::addr_of(&(*sharedstate));
do task::spawn { do task::spawn {
let sharedstate: &mut int = let sharedstate: &mut int =
unsafe { cast::reinterpret_cast(&ptr) }; unsafe { cast::reinterpret_cast(&ptr) };
...@@ -1045,7 +1045,7 @@ fn test_rwlock_exclusion(+x: ~RWlock, mode1: RWlockMode, ...@@ -1045,7 +1045,7 @@ fn test_rwlock_exclusion(+x: ~RWlock, mode1: RWlockMode,
let (c,p) = pipes::stream(); let (c,p) = pipes::stream();
let x2 = ~x.clone(); let x2 = ~x.clone();
let mut sharedstate = ~0; let mut sharedstate = ~0;
let ptr = ptr::addr_of(*sharedstate); let ptr = ptr::p2::addr_of(&(*sharedstate));
do task::spawn { do task::spawn {
let sharedstate: &mut int = let sharedstate: &mut int =
unsafe { cast::reinterpret_cast(&ptr) }; unsafe { cast::reinterpret_cast(&ptr) };
......
...@@ -28,9 +28,9 @@ pub fn delayed_send<T: Copy Send>(iotask: IoTask, ...@@ -28,9 +28,9 @@ pub fn delayed_send<T: Copy Send>(iotask: IoTask,
unsafe { unsafe {
let timer_done_po = core::comm::Port::<()>(); let timer_done_po = core::comm::Port::<()>();
let timer_done_ch = core::comm::Chan(timer_done_po); let timer_done_ch = core::comm::Chan(timer_done_po);
let timer_done_ch_ptr = ptr::addr_of(timer_done_ch); let timer_done_ch_ptr = ptr::addr_of(&timer_done_ch);
let timer = uv::ll::timer_t(); let timer = uv::ll::timer_t();
let timer_ptr = ptr::addr_of(timer); let timer_ptr = ptr::addr_of(&timer);
do iotask::interact(iotask) |loop_ptr| unsafe { do iotask::interact(iotask) |loop_ptr| unsafe {
let init_result = uv::ll::timer_init(loop_ptr, timer_ptr); let init_result = uv::ll::timer_init(loop_ptr, timer_ptr);
if (init_result == 0i32) { if (init_result == 0i32) {
......
...@@ -138,11 +138,11 @@ mod test { ...@@ -138,11 +138,11 @@ mod test {
fn impl_uv_hl_simple_timer(iotask: IoTask) unsafe { fn impl_uv_hl_simple_timer(iotask: IoTask) unsafe {
let exit_po = core::comm::Port::<bool>(); let exit_po = core::comm::Port::<bool>();
let exit_ch = core::comm::Chan(exit_po); let exit_ch = core::comm::Chan(exit_po);
let exit_ch_ptr = ptr::addr_of(exit_ch); let exit_ch_ptr = ptr::p2::addr_of(&exit_ch);
log(debug, fmt!("EXIT_CH_PTR newly created exit_ch_ptr: %?", log(debug, fmt!("EXIT_CH_PTR newly created exit_ch_ptr: %?",
exit_ch_ptr)); exit_ch_ptr));
let timer_handle = ll::timer_t(); let timer_handle = ll::timer_t();
let timer_ptr = ptr::addr_of(timer_handle); let timer_ptr = ptr::p2::addr_of(&timer_handle);
do iotask::interact(iotask) |loop_ptr| unsafe { do iotask::interact(iotask) |loop_ptr| unsafe {
log(debug, ~"user code inside interact loop!!!"); log(debug, ~"user code inside interact loop!!!");
let init_status = ll::timer_init(loop_ptr, timer_ptr); let init_status = ll::timer_init(loop_ptr, timer_ptr);
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
export exit; export exit;
use libc::c_void; use libc::c_void;
use ptr::addr_of; use ptr::p2::addr_of;
use comm = core::comm; use comm = core::comm;
use comm::{Port, Chan, listen}; use comm::{Port, Chan, listen};
use task::TaskBuilder; use task::TaskBuilder;
...@@ -96,7 +96,7 @@ fn run_loop(iotask_ch: Chan<IoTask>) unsafe { ...@@ -96,7 +96,7 @@ fn run_loop(iotask_ch: Chan<IoTask>) unsafe {
// set up the special async handle we'll use to allow multi-task // set up the special async handle we'll use to allow multi-task
// communication with this loop // communication with this loop
let async = ll::async_t(); let async = ll::async_t();
let async_handle = addr_of(async); let async_handle = addr_of(&async);
// associate the async handle with the loop // associate the async handle with the loop
ll::async_init(loop_ptr, async_handle, wake_up_cb); ll::async_init(loop_ptr, async_handle, wake_up_cb);
...@@ -106,7 +106,7 @@ fn run_loop(iotask_ch: Chan<IoTask>) unsafe { ...@@ -106,7 +106,7 @@ fn run_loop(iotask_ch: Chan<IoTask>) unsafe {
async_handle: async_handle, async_handle: async_handle,
msg_po: Port() msg_po: Port()
}; };
ll::set_data_for_uv_handle(async_handle, addr_of(data)); ll::set_data_for_uv_handle(async_handle, addr_of(&data));
// Send out a handle through which folks can talk to us // Send out a handle through which folks can talk to us
// while we dwell in the I/O loop // while we dwell in the I/O loop
...@@ -188,14 +188,14 @@ mod test { ...@@ -188,14 +188,14 @@ mod test {
}; };
fn impl_uv_iotask_async(iotask: IoTask) unsafe { fn impl_uv_iotask_async(iotask: IoTask) unsafe {
let async_handle = ll::async_t(); let async_handle = ll::async_t();
let ah_ptr = ptr::addr_of(async_handle); let ah_ptr = ptr::addr_of(&async_handle);
let exit_po = core::comm::Port::<()>(); let exit_po = core::comm::Port::<()>();
let exit_ch = core::comm::Chan(exit_po); let exit_ch = core::comm::Chan(exit_po);
let ah_data = { let ah_data = {
iotask: iotask, iotask: iotask,
exit_ch: exit_ch exit_ch: exit_ch
}; };
let ah_data_ptr = ptr::addr_of(ah_data); let ah_data_ptr = ptr::addr_of(&ah_data);
do interact(iotask) |loop_ptr| unsafe { do interact(iotask) |loop_ptr| unsafe {
ll::async_init(loop_ptr, ah_ptr, async_handle_cb); ll::async_init(loop_ptr, ah_ptr, async_handle_cb);
ll::set_data_for_uv_handle(ah_ptr, ah_data_ptr as *libc::c_void); ll::set_data_for_uv_handle(ah_ptr, ah_data_ptr as *libc::c_void);
......
...@@ -796,7 +796,7 @@ unsafe fn async_send(async_handle: *uv_async_t) { ...@@ -796,7 +796,7 @@ unsafe fn async_send(async_handle: *uv_async_t) {
} }
unsafe fn buf_init(input: *u8, len: uint) -> uv_buf_t { unsafe fn buf_init(input: *u8, len: uint) -> uv_buf_t {
let out_buf = { base: ptr::null(), len: 0 as libc::size_t }; let out_buf = { base: ptr::null(), len: 0 as libc::size_t };
let out_buf_ptr = ptr::addr_of(out_buf); let out_buf_ptr = ptr::addr_of(&out_buf);
log(debug, fmt!("buf_init - input %u len %u out_buf: %u", log(debug, fmt!("buf_init - input %u len %u out_buf: %u",
input as uint, input as uint,
len as uint, len as uint,
...@@ -968,7 +968,7 @@ unsafe fn free_base_of_buf(buf: uv_buf_t) { ...@@ -968,7 +968,7 @@ unsafe fn free_base_of_buf(buf: uv_buf_t) {
unsafe fn get_last_err_info(uv_loop: *libc::c_void) -> ~str { unsafe fn get_last_err_info(uv_loop: *libc::c_void) -> ~str {
let err = last_error(uv_loop); let err = last_error(uv_loop);
let err_ptr = ptr::addr_of(err); let err_ptr = ptr::addr_of(&err);
let err_name = str::raw::from_c_str(err_name(err_ptr)); let err_name = str::raw::from_c_str(err_name(err_ptr));
let err_msg = str::raw::from_c_str(strerror(err_ptr)); let err_msg = str::raw::from_c_str(strerror(err_ptr));
return fmt!("LIBUV ERROR: name: %s msg: %s", return fmt!("LIBUV ERROR: name: %s msg: %s",
...@@ -977,7 +977,7 @@ unsafe fn get_last_err_info(uv_loop: *libc::c_void) -> ~str { ...@@ -977,7 +977,7 @@ unsafe fn get_last_err_info(uv_loop: *libc::c_void) -> ~str {
unsafe fn get_last_err_data(uv_loop: *libc::c_void) -> uv_err_data { unsafe fn get_last_err_data(uv_loop: *libc::c_void) -> uv_err_data {
let err = last_error(uv_loop); let err = last_error(uv_loop);
let err_ptr = ptr::addr_of(err); let err_ptr = ptr::addr_of(&err);
let err_name = str::raw::from_c_str(err_name(err_ptr)); let err_name = str::raw::from_c_str(err_name(err_ptr));
let err_msg = str::raw::from_c_str(strerror(err_ptr)); let err_msg = str::raw::from_c_str(strerror(err_ptr));
{ err_name: err_name, err_msg: err_msg } { err_name: err_name, err_msg: err_msg }
...@@ -1120,9 +1120,9 @@ fn impl_uv_tcp_request(ip: &str, port: int, req_str: &str, ...@@ -1120,9 +1120,9 @@ fn impl_uv_tcp_request(ip: &str, port: int, req_str: &str,
client_chan: *comm::Chan<~str>) unsafe { client_chan: *comm::Chan<~str>) unsafe {
let test_loop = loop_new(); let test_loop = loop_new();
let tcp_handle = tcp_t(); let tcp_handle = tcp_t();
let tcp_handle_ptr = ptr::addr_of(tcp_handle); let tcp_handle_ptr = ptr::addr_of(&tcp_handle);
let connect_handle = connect_t(); let connect_handle = connect_t();
let connect_req_ptr = ptr::addr_of(connect_handle); let connect_req_ptr = ptr::addr_of(&connect_handle);
// this is the persistent payload of data that we // this is the persistent payload of data that we
// need to pass around to get this example to work. // need to pass around to get this example to work.
...@@ -1138,12 +1138,12 @@ fn impl_uv_tcp_request(ip: &str, port: int, req_str: &str, ...@@ -1138,12 +1138,12 @@ fn impl_uv_tcp_request(ip: &str, port: int, req_str: &str,
// this is the enclosing record, we'll pass a ptr to // this is the enclosing record, we'll pass a ptr to
// this to C.. // this to C..
let write_handle = write_t(); let write_handle = write_t();
let write_handle_ptr = ptr::addr_of(write_handle); let write_handle_ptr = ptr::addr_of(&write_handle);
log(debug, fmt!("tcp req: tcp stream: %d write_handle: %d", log(debug, fmt!("tcp req: tcp stream: %d write_handle: %d",
tcp_handle_ptr as int, tcp_handle_ptr as int,
write_handle_ptr as int)); write_handle_ptr as int));
let client_data = { writer_handle: write_handle_ptr, let client_data = { writer_handle: write_handle_ptr,
req_buf: ptr::addr_of(req_msg), req_buf: ptr::addr_of(&req_msg),
read_chan: client_chan }; read_chan: client_chan };
let tcp_init_result = tcp_init( let tcp_init_result = tcp_init(
...@@ -1154,7 +1154,7 @@ fn impl_uv_tcp_request(ip: &str, port: int, req_str: &str, ...@@ -1154,7 +1154,7 @@ fn impl_uv_tcp_request(ip: &str, port: int, req_str: &str,
log(debug, ~"building addr..."); log(debug, ~"building addr...");
let addr = ip4_addr(ip, port); let addr = ip4_addr(ip, port);
// FIXME ref #2064 // FIXME ref #2064
let addr_ptr = ptr::addr_of(addr); let addr_ptr = ptr::addr_of(&addr);
log(debug, fmt!("after build addr in rust. port: %u", log(debug, fmt!("after build addr in rust. port: %u",
addr.sin_port as uint)); addr.sin_port as uint));
...@@ -1169,10 +1169,10 @@ fn impl_uv_tcp_request(ip: &str, port: int, req_str: &str, ...@@ -1169,10 +1169,10 @@ fn impl_uv_tcp_request(ip: &str, port: int, req_str: &str,
// until its initialized // until its initialized
set_data_for_req( set_data_for_req(
connect_req_ptr as *libc::c_void, connect_req_ptr as *libc::c_void,
ptr::addr_of(client_data) as *libc::c_void); ptr::addr_of(&client_data) as *libc::c_void);
set_data_for_uv_handle( set_data_for_uv_handle(
tcp_handle_ptr as *libc::c_void, tcp_handle_ptr as *libc::c_void,
ptr::addr_of(client_data) as *libc::c_void); ptr::addr_of(&client_data) as *libc::c_void);
log(debug, ~"before run tcp req loop"); log(debug, ~"before run tcp req loop");
run(test_loop); run(test_loop);
log(debug, ~"after run tcp req loop"); log(debug, ~"after run tcp req loop");
...@@ -1369,13 +1369,13 @@ fn impl_uv_tcp_server(server_ip: &str, ...@@ -1369,13 +1369,13 @@ fn impl_uv_tcp_server(server_ip: &str,
continue_chan: *comm::Chan<bool>) unsafe { continue_chan: *comm::Chan<bool>) unsafe {
let test_loop = loop_new(); let test_loop = loop_new();
let tcp_server = tcp_t(); let tcp_server = tcp_t();
let tcp_server_ptr = ptr::addr_of(tcp_server); let tcp_server_ptr = ptr::addr_of(&tcp_server);
let tcp_client = tcp_t(); let tcp_client = tcp_t();
let tcp_client_ptr = ptr::addr_of(tcp_client); let tcp_client_ptr = ptr::addr_of(&tcp_client);
let server_write_req = write_t(); let server_write_req = write_t();
let server_write_req_ptr = ptr::addr_of(server_write_req); let server_write_req_ptr = ptr::addr_of(&server_write_req);
let resp_str_bytes = str::to_bytes(server_resp_msg); let resp_str_bytes = str::to_bytes(server_resp_msg);
let resp_msg_ptr: *u8 = vec::raw::to_ptr(resp_str_bytes); let resp_msg_ptr: *u8 = vec::raw::to_ptr(resp_str_bytes);
...@@ -1386,20 +1386,20 @@ fn impl_uv_tcp_server(server_ip: &str, ...@@ -1386,20 +1386,20 @@ fn impl_uv_tcp_server(server_ip: &str,
let continue_async_handle = async_t(); let continue_async_handle = async_t();
let continue_async_handle_ptr = let continue_async_handle_ptr =
ptr::addr_of(continue_async_handle); ptr::addr_of(&continue_async_handle);
let async_data = let async_data =
{ continue_chan: continue_chan }; { continue_chan: continue_chan };
let async_data_ptr = ptr::addr_of(async_data); let async_data_ptr = ptr::addr_of(&async_data);
let server_data: tcp_server_data = { let server_data: tcp_server_data = {
client: tcp_client_ptr, client: tcp_client_ptr,
server: tcp_server_ptr, server: tcp_server_ptr,
server_kill_msg: kill_server_msg, server_kill_msg: kill_server_msg,
server_resp_buf: ptr::addr_of(resp_msg), server_resp_buf: ptr::addr_of(&resp_msg),
server_chan: server_chan, server_chan: server_chan,
server_write_req: server_write_req_ptr server_write_req: server_write_req_ptr
}; };
let server_data_ptr = ptr::addr_of(server_data); let server_data_ptr = ptr::addr_of(&server_data);
set_data_for_uv_handle(tcp_server_ptr as *libc::c_void, set_data_for_uv_handle(tcp_server_ptr as *libc::c_void,
server_data_ptr as *libc::c_void); server_data_ptr as *libc::c_void);
...@@ -1409,7 +1409,7 @@ fn impl_uv_tcp_server(server_ip: &str, ...@@ -1409,7 +1409,7 @@ fn impl_uv_tcp_server(server_ip: &str,
if (tcp_init_result == 0i32) { if (tcp_init_result == 0i32) {
let server_addr = ip4_addr(server_ip, server_port); let server_addr = ip4_addr(server_ip, server_port);
// FIXME ref #2064 // FIXME ref #2064
let server_addr_ptr = ptr::addr_of(server_addr); let server_addr_ptr = ptr::addr_of(&server_addr);
// uv_tcp_bind() // uv_tcp_bind()
let bind_result = tcp_bind(tcp_server_ptr, let bind_result = tcp_bind(tcp_server_ptr,
...@@ -1478,13 +1478,13 @@ fn impl_uv_tcp_server_and_request() unsafe { ...@@ -1478,13 +1478,13 @@ fn impl_uv_tcp_server_and_request() unsafe {
let continue_port = core::comm::Port::<bool>(); let continue_port = core::comm::Port::<bool>();
let continue_chan = core::comm::Chan::<bool>(continue_port); let continue_chan = core::comm::Chan::<bool>(continue_port);
let continue_chan_ptr = ptr::addr_of(continue_chan); let continue_chan_ptr = ptr::addr_of(&continue_chan);
do task::spawn_sched(task::ManualThreads(1u)) { do task::spawn_sched(task::ManualThreads(1)) {
impl_uv_tcp_server(bind_ip, port, impl_uv_tcp_server(bind_ip, port,
kill_server_msg, kill_server_msg,
server_resp_msg, server_resp_msg,
ptr::addr_of(server_chan), ptr::addr_of(&server_chan),
continue_chan_ptr); continue_chan_ptr);
}; };
...@@ -1496,7 +1496,7 @@ fn impl_uv_tcp_server_and_request() unsafe { ...@@ -1496,7 +1496,7 @@ fn impl_uv_tcp_server_and_request() unsafe {
do task::spawn_sched(task::ManualThreads(1u)) { do task::spawn_sched(task::ManualThreads(1u)) {
impl_uv_tcp_request(request_ip, port, impl_uv_tcp_request(request_ip, port,
kill_server_msg, kill_server_msg,
ptr::addr_of(client_chan)); ptr::addr_of(&client_chan));
}; };
let msg_from_client = core::comm::recv(server_port); let msg_from_client = core::comm::recv(server_port);
......
...@@ -1094,10 +1094,10 @@ enum ty_ { ...@@ -1094,10 +1094,10 @@ enum ty_ {
// since we only care about this for normalizing them to "real" types. // since we only care about this for normalizing them to "real" types.
impl ty : cmp::Eq { impl ty : cmp::Eq {
pure fn eq(other: &ty) -> bool { pure fn eq(other: &ty) -> bool {
ptr::addr_of(self) == ptr::addr_of((*other)) ptr::addr_of(&self) == ptr::addr_of(&(*other))
} }
pure fn ne(other: &ty) -> bool { pure fn ne(other: &ty) -> bool {
ptr::addr_of(self) != ptr::addr_of((*other)) ptr::addr_of(&self) != ptr::addr_of(&(*other))
} }
} }
......
...@@ -188,7 +188,7 @@ fn is_signed_type(cnv: Conv) -> bool { ...@@ -188,7 +188,7 @@ fn is_signed_type(cnv: Conv) -> bool {
return make_conv_call(cx, arg.span, ~"float", cnv, arg); return make_conv_call(cx, arg.span, ~"float", cnv, arg);
} }
TyPoly => return make_conv_call(cx, arg.span, ~"poly", cnv, TyPoly => return make_conv_call(cx, arg.span, ~"poly", cnv,
mk_addr_of(cx, sp, arg)) mk_addr_of(cx, sp, arg))
} }
} }
fn log_conv(c: Conv) { fn log_conv(c: Conv) {
......
...@@ -71,10 +71,10 @@ fn gen_send(cx: ext_ctxt, try: bool) -> @ast::item { ...@@ -71,10 +71,10 @@ fn gen_send(cx: ext_ctxt, try: bool) -> @ast::item {
body += ~"let b = pipe.reuse_buffer();\n"; body += ~"let b = pipe.reuse_buffer();\n";
body += fmt!("let %s = pipes::SendPacketBuffered(\ body += fmt!("let %s = pipes::SendPacketBuffered(\
ptr::p2::addr_of(&(b.buffer.data.%s)));\n", ptr::addr_of(&(b.buffer.data.%s)));\n",
sp, next.name); sp, next.name);
body += fmt!("let %s = pipes::RecvPacketBuffered(\ body += fmt!("let %s = pipes::RecvPacketBuffered(\
ptr::p2::addr_of(&(b.buffer.data.%s)));\n", ptr::addr_of(&(b.buffer.data.%s)));\n",
rp, next.name); rp, next.name);
} }
else { else {
...@@ -351,7 +351,7 @@ fn gen_init_bounded(ext_cx: ext_ctxt) -> @ast::expr { ...@@ -351,7 +351,7 @@ fn gen_init_bounded(ext_cx: ext_ctxt) -> @ast::expr {
fmt!("data.%s.set_buffer_(buffer)", fmt!("data.%s.set_buffer_(buffer)",
s.name))), s.name))),
ext_cx.parse_expr( ext_cx.parse_expr(
fmt!("ptr::p2::addr_of(&(data.%s))", fmt!("ptr::addr_of(&(data.%s))",
self.states[0].name)))); self.states[0].name))));
#ast {{ #ast {{
......
...@@ -179,7 +179,7 @@ fn match_and_collect_item(item_def_id: def_id, key: ~str, value: ~str) { ...@@ -179,7 +179,7 @@ fn match_and_collect_item(item_def_id: def_id, key: ~str, value: ~str) {
} }
fn collect_local_language_items() { fn collect_local_language_items() {
let this = unsafe { ptr::addr_of(self) }; let this = unsafe { ptr::addr_of(&self) };
visit_crate(*self.crate, (), mk_simple_visitor(@{ visit_crate(*self.crate, (), mk_simple_visitor(@{
visit_item: |item| { visit_item: |item| {
for item.attrs.each |attribute| { for item.attrs.each |attribute| {
......
...@@ -416,7 +416,7 @@ fn visit_fn(fk: visit::fn_kind, decl: fn_decl, body: blk, ...@@ -416,7 +416,7 @@ fn visit_fn(fk: visit::fn_kind, decl: fn_decl, body: blk,
let fn_maps = @IrMaps(self.tcx, self.method_map, let fn_maps = @IrMaps(self.tcx, self.method_map,
self.last_use_map); self.last_use_map);
debug!("creating fn_maps: %x", ptr::addr_of(*fn_maps) as uint); debug!("creating fn_maps: %x", ptr::addr_of(&(*fn_maps)) as uint);
for decl.inputs.each |arg| { for decl.inputs.each |arg| {
debug!("adding argument %d", arg.id); debug!("adding argument %d", arg.id);
......
...@@ -134,7 +134,7 @@ fn IndirectBr(cx: block, Addr: ValueRef, NumDests: uint) { ...@@ -134,7 +134,7 @@ fn IndirectBr(cx: block, Addr: ValueRef, NumDests: uint) {
// lot more efficient) than doing str::as_c_str("", ...) every time. // lot more efficient) than doing str::as_c_str("", ...) every time.
fn noname() -> *libc::c_char unsafe { fn noname() -> *libc::c_char unsafe {
const cnull: uint = 0u; const cnull: uint = 0u;
return cast::reinterpret_cast(&ptr::addr_of(cnull)); return cast::reinterpret_cast(&ptr::addr_of(&cnull));
} }
fn Invoke(cx: block, Fn: ValueRef, Args: ~[ValueRef], fn Invoke(cx: block, Fn: ValueRef, Args: ~[ValueRef],
...@@ -629,8 +629,8 @@ fn Phi(cx: block, Ty: TypeRef, vals: ~[ValueRef], bbs: ~[BasicBlockRef]) ...@@ -629,8 +629,8 @@ fn Phi(cx: block, Ty: TypeRef, vals: ~[ValueRef], bbs: ~[BasicBlockRef])
fn AddIncomingToPhi(phi: ValueRef, val: ValueRef, bb: BasicBlockRef) { fn AddIncomingToPhi(phi: ValueRef, val: ValueRef, bb: BasicBlockRef) {
if llvm::LLVMIsUndef(phi) == lib::llvm::True { return; } if llvm::LLVMIsUndef(phi) == lib::llvm::True { return; }
unsafe { unsafe {
let valptr = cast::reinterpret_cast(&ptr::addr_of(val)); let valptr = cast::reinterpret_cast(&ptr::addr_of(&val));
let bbptr = cast::reinterpret_cast(&ptr::addr_of(bb)); let bbptr = cast::reinterpret_cast(&ptr::addr_of(&bb));
llvm::LLVMAddIncoming(phi, valptr, bbptr, 1 as c_uint); llvm::LLVMAddIncoming(phi, valptr, bbptr, 1 as c_uint);
} }
} }
......
...@@ -645,7 +645,7 @@ fn to_str() -> ~str { ...@@ -645,7 +645,7 @@ fn to_str() -> ~str {
fmt!("[block %d]", node_info.id) fmt!("[block %d]", node_info.id)
} }
None => { None => {
fmt!("[block %x]", ptr::addr_of(*self) as uint) fmt!("[block %x]", ptr::addr_of(&(*self)) as uint)
} }
} }
} }
......
...@@ -605,7 +605,7 @@ fn named_region(_span: span, id: ast::ident) -> Result<ty::region, ~str> { ...@@ -605,7 +605,7 @@ fn named_region(_span: span, id: ast::ident) -> Result<ty::region, ~str> {
} }
impl @fn_ctxt { impl @fn_ctxt {
fn tag() -> ~str { fmt!("%x", ptr::addr_of(*self) as uint) } fn tag() -> ~str { fmt!("%x", ptr::addr_of(&(*self)) as uint) }
fn expr_to_str(expr: @ast::expr) -> ~str { fn expr_to_str(expr: @ast::expr) -> ~str {
fmt!("expr(%?:%s)", expr.id, fmt!("expr(%?:%s)", expr.id,
......
...@@ -34,7 +34,7 @@ struct port_ptr<T:Send> { ...@@ -34,7 +34,7 @@ struct port_ptr<T:Send> {
debug!("in the port_ptr destructor"); debug!("in the port_ptr destructor");
do task::unkillable { do task::unkillable {
let yield = 0u; let yield = 0u;
let yieldp = ptr::addr_of(yield); let yieldp = ptr::addr_of(&yield);
rustrt::rust_port_begin_detach(self.po, yieldp); rustrt::rust_port_begin_detach(self.po, yieldp);
if yield != 0u { if yield != 0u {
task::yield(); task::yield();
...@@ -66,10 +66,10 @@ fn recv<T: Send>(p: port<T>) -> T { recv_((**p).po) } ...@@ -66,10 +66,10 @@ fn recv<T: Send>(p: port<T>) -> T { recv_((**p).po) }
/// Receive on a raw port pointer /// Receive on a raw port pointer
fn recv_<T: Send>(p: *rust_port) -> T { fn recv_<T: Send>(p: *rust_port) -> T {
let yield = 0u; let yield = 0u;
let yieldp = ptr::addr_of(yield); let yieldp = ptr::addr_of(&yield);
let mut res; let mut res;
res = rusti::init::<T>(); res = rusti::init::<T>();
rustrt::port_recv(ptr::addr_of(res) as *uint, p, yieldp); rustrt::port_recv(ptr::addr_of(&res) as *uint, p, yieldp);
if yield != 0u { if yield != 0u {
// Data isn't available yet, so res has not been initialized. // Data isn't available yet, so res has not been initialized.
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
use pipes::{Port, Chan, SharedChan}; use pipes::{Port, Chan, SharedChan};
macro_rules! move_out ( macro_rules! move_out (
{ $x:expr } => { unsafe { let y <- *ptr::addr_of($x); y } } { $x:expr } => { unsafe { let y <- *ptr::addr_of(&($x)); y } }
) )
enum request { enum request {
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
use pipes::{Port, PortSet, Chan}; use pipes::{Port, PortSet, Chan};
macro_rules! move_out ( macro_rules! move_out (
{ $x:expr } => { unsafe { let y <- *ptr::addr_of($x); y } } { $x:expr } => { unsafe { let y <- *ptr::addr_of(&($x)); y } }
) )
enum request { enum request {
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
fn macros() { fn macros() {
#macro[ #macro[
[#move_out[x], [#move_out[x],
unsafe { let y <- *ptr::addr_of(x); y }] unsafe { let y <- *ptr::addr_of(&x); y }]
]; ];
} }
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
// This stuff should go in libcore::pipes // This stuff should go in libcore::pipes
macro_rules! move_it ( macro_rules! move_it (
{ $x:expr } => { let t <- *ptr::addr_of($x); t } { $x:expr } => { let t <- *ptr::addr_of(&($x)); t }
) )
macro_rules! follow ( macro_rules! follow (
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
use to_bytes::IterBytes; use to_bytes::IterBytes;
macro_rules! move_out ( macro_rules! move_out (
{ $x:expr } => { unsafe { let y <- *ptr::addr_of($x); y } } { $x:expr } => { unsafe { let y <- *ptr::addr_of(&($x)); y } }
) )
trait word_reader { trait word_reader {
......
...@@ -103,8 +103,8 @@ fn test_class() { ...@@ -103,8 +103,8 @@ fn test_class() {
unsafe { unsafe {
error!("q = %x, r = %x", error!("q = %x, r = %x",
(cast::reinterpret_cast::<*p, uint>(&ptr::addr_of(q))), (cast::reinterpret_cast::<*p, uint>(&ptr::addr_of(&q))),
(cast::reinterpret_cast::<*p, uint>(&ptr::addr_of(r)))); (cast::reinterpret_cast::<*p, uint>(&ptr::addr_of(&r))));
} }
assert(q == r); assert(q == r);
r.y = 17; r.y = 17;
......
...@@ -7,7 +7,7 @@ fn borrow(x: &int, f: fn(x: &int)) { ...@@ -7,7 +7,7 @@ fn borrow(x: &int, f: fn(x: &int)) {
fn test1(x: @~int) { fn test1(x: @~int) {
// Right now, at least, this induces a copy of the unique pointer: // Right now, at least, this induces a copy of the unique pointer:
do borrow({*x}) |p| { do borrow({*x}) |p| {
let x_a = ptr::addr_of(**x); let x_a = ptr::addr_of(&(**x));
assert (x_a as uint) != to_uint(p); assert (x_a as uint) != to_uint(p);
assert unsafe{*x_a} == *p; assert unsafe{*x_a} == *p;
} }
......
...@@ -5,13 +5,13 @@ fn main() { ...@@ -5,13 +5,13 @@ fn main() {
match *x { match *x {
{f: b_x} => { {f: b_x} => {
assert *b_x == 3; assert *b_x == 3;
assert ptr::addr_of(*x.f) == ptr::addr_of(*b_x); assert ptr::addr_of(&(*x.f)) == ptr::addr_of(&(*b_x));
x = @{f: ~4}; x = @{f: ~4};
debug!("ptr::addr_of(*b_x) = %x", ptr::addr_of(*b_x) as uint); debug!("ptr::addr_of(*b_x) = %x", ptr::addr_of(&(*b_x)) as uint);
assert *b_x == 3; assert *b_x == 3;
assert ptr::addr_of(*x.f) != ptr::addr_of(*b_x); assert ptr::addr_of(&(*x.f)) != ptr::addr_of(&(*b_x));
} }
} }
} }
\ No newline at end of file
...@@ -11,11 +11,11 @@ fn main() { ...@@ -11,11 +11,11 @@ fn main() {
let mut x = @{f: ~3}; let mut x = @{f: ~3};
do borrow(x.f) |b_x| { do borrow(x.f) |b_x| {
assert *b_x == 3; assert *b_x == 3;
assert ptr::addr_of(*x.f) == ptr::addr_of(*b_x); assert ptr::addr_of(&(*x.f)) == ptr::addr_of(&(*b_x));
x = @{f: ~4}; x = @{f: ~4};
debug!("ptr::addr_of(*b_x) = %x", ptr::addr_of(*b_x) as uint); debug!("ptr::addr_of(*b_x) = %x", ptr::addr_of(&(*b_x)) as uint);
assert *b_x == 3; assert *b_x == 3;
assert ptr::addr_of(*x.f) != ptr::addr_of(*b_x); assert ptr::addr_of(&(*x.f)) != ptr::addr_of(&(*b_x));
} }
} }
\ No newline at end of file
...@@ -5,13 +5,13 @@ fn main() { ...@@ -5,13 +5,13 @@ fn main() {
match x { match x {
@@{f: b_x} => { @@{f: b_x} => {
assert *b_x == 3; assert *b_x == 3;
assert ptr::addr_of(x.f) == ptr::addr_of(b_x); assert ptr::addr_of(&(x.f)) == ptr::addr_of(&(b_x));
*x = @{f: ~4}; *x = @{f: ~4};
debug!("ptr::addr_of(*b_x) = %x", ptr::addr_of(*b_x) as uint); debug!("ptr::addr_of(*b_x) = %x", ptr::addr_of(&(*b_x)) as uint);
assert *b_x == 3; assert *b_x == 3;
assert ptr::addr_of(*x.f) != ptr::addr_of(*b_x); assert ptr::addr_of(&(*x.f)) != ptr::addr_of(&(*b_x));
} }
} }
} }
...@@ -11,11 +11,11 @@ fn main() { ...@@ -11,11 +11,11 @@ fn main() {
let mut x = ~mut @{f: ~3}; let mut x = ~mut @{f: ~3};
do borrow(x.f) |b_x| { do borrow(x.f) |b_x| {
assert *b_x == 3; assert *b_x == 3;
assert ptr::addr_of(*x.f) == ptr::addr_of(*b_x); assert ptr::addr_of(&(*x.f)) == ptr::addr_of(&(*b_x));
*x = @{f: ~4}; *x = @{f: ~4};
debug!("ptr::addr_of(*b_x) = %x", ptr::addr_of(*b_x) as uint); debug!("ptr::addr_of(*b_x) = %x", ptr::addr_of(&(*b_x)) as uint);
assert *b_x == 3; assert *b_x == 3;
assert ptr::addr_of(*x.f) != ptr::addr_of(*b_x); assert ptr::addr_of(&(*x.f)) != ptr::addr_of(&(*b_x));
} }
} }
\ No newline at end of file
...@@ -11,11 +11,11 @@ fn main() { ...@@ -11,11 +11,11 @@ fn main() {
let mut x = @3; let mut x = @3;
do borrow(x) |b_x| { do borrow(x) |b_x| {
assert *b_x == 3; assert *b_x == 3;
assert ptr::addr_of(*x) == ptr::addr_of(*b_x); assert ptr::addr_of(&(*x)) == ptr::addr_of(&(*b_x));
x = @22; x = @22;
debug!("ptr::addr_of(*b_x) = %x", ptr::addr_of(*b_x) as uint); debug!("ptr::addr_of(*b_x) = %x", ptr::addr_of(&(*b_x)) as uint);
assert *b_x == 3; assert *b_x == 3;
assert ptr::addr_of(*x) != ptr::addr_of(*b_x); assert ptr::addr_of(&(*x)) != ptr::addr_of(&(*b_x));
} }
} }
\ No newline at end of file
...@@ -11,11 +11,11 @@ fn main() { ...@@ -11,11 +11,11 @@ fn main() {
let mut x = @{f: ~3}; let mut x = @{f: ~3};
do borrow((*x).f) |b_x| { do borrow((*x).f) |b_x| {
assert *b_x == 3; assert *b_x == 3;
assert ptr::addr_of(*x.f) == ptr::addr_of(*b_x); assert ptr::addr_of(&(*x.f)) == ptr::addr_of(&(*b_x));
x = @{f: ~4}; x = @{f: ~4};
debug!("ptr::addr_of(*b_x) = %x", ptr::addr_of(*b_x) as uint); debug!("ptr::addr_of(*b_x) = %x", ptr::addr_of(&(*b_x)) as uint);
assert *b_x == 3; assert *b_x == 3;
assert ptr::addr_of(*x.f) != ptr::addr_of(*b_x); assert ptr::addr_of(&(*x.f)) != ptr::addr_of(&(*b_x));
} }
} }
fn main() { fn main() {
let x = ~1; let x = ~1;
let y = ptr::addr_of(*x) as uint; let y = ptr::addr_of(&(*x)) as uint;
let lam_copy = fn@(copy x) -> uint { ptr::addr_of(*x) as uint }; let lam_copy = fn@(copy x) -> uint { ptr::addr_of(&(*x)) as uint };
let lam_move = fn@(move x) -> uint { ptr::addr_of(*x) as uint }; let lam_move = fn@(move x) -> uint { ptr::addr_of(&(*x)) as uint };
assert lam_copy() != y; assert lam_copy() != y;
assert lam_move() == y; assert lam_move() == y;
let x = ~2; let x = ~2;
let y = ptr::addr_of(*x) as uint; let y = ptr::addr_of(&(*x)) as uint;
let lam_copy: fn@() -> uint = |copy x| ptr::addr_of(*x) as uint; let lam_copy: fn@() -> uint = |copy x| ptr::addr_of(&(*x)) as uint;
let lam_move: fn@() -> uint = |move x| ptr::addr_of(*x) as uint; let lam_move: fn@() -> uint = |move x| ptr::addr_of(&(*x)) as uint;
assert lam_copy() != y; assert lam_copy() != y;
assert lam_move() == y; assert lam_move() == y;
let x = ~3; let x = ~3;
let y = ptr::addr_of(*x) as uint; let y = ptr::addr_of(&(*x)) as uint;
let snd_copy = fn~(copy x) -> uint { ptr::addr_of(*x) as uint }; let snd_copy = fn~(copy x) -> uint { ptr::addr_of(&(*x)) as uint };
let snd_move = fn~(move x) -> uint { ptr::addr_of(*x) as uint }; let snd_move = fn~(move x) -> uint { ptr::addr_of(&(*x)) as uint };
assert snd_copy() != y; assert snd_copy() != y;
assert snd_move() == y; assert snd_move() == y;
let x = ~4; let x = ~4;
let y = ptr::addr_of(*x) as uint; let y = ptr::addr_of(&(*x)) as uint;
let lam_copy: fn~() -> uint = |copy x| ptr::addr_of(*x) as uint; let lam_copy: fn~() -> uint = |copy x| ptr::addr_of(&(*x)) as uint;
let lam_move: fn~() -> uint = |move x| ptr::addr_of(*x) as uint; let lam_move: fn~() -> uint = |move x| ptr::addr_of(&(*x)) as uint;
assert lam_copy() != y; assert lam_copy() != y;
assert lam_move() == y; assert lam_move() == y;
} }
...@@ -201,7 +201,7 @@ mod pingpong { ...@@ -201,7 +201,7 @@ mod pingpong {
fn liberate_ping(-p: ping) -> pipes::send_packet<pong> unsafe { fn liberate_ping(-p: ping) -> pipes::send_packet<pong> unsafe {
let addr : *pipes::send_packet<pong> = match p { let addr : *pipes::send_packet<pong> = match p {
ping(x) => { cast::transmute(ptr::addr_of(x)) } ping(x) => { cast::transmute(ptr::addr_of(&x)) }
}; };
let liberated_value <- *addr; let liberated_value <- *addr;
cast::forget(p); cast::forget(p);
...@@ -210,7 +210,7 @@ fn liberate_ping(-p: ping) -> pipes::send_packet<pong> unsafe { ...@@ -210,7 +210,7 @@ fn liberate_ping(-p: ping) -> pipes::send_packet<pong> unsafe {
fn liberate_pong(-p: pong) -> pipes::send_packet<ping> unsafe { fn liberate_pong(-p: pong) -> pipes::send_packet<ping> unsafe {
let addr : *pipes::send_packet<ping> = match p { let addr : *pipes::send_packet<ping> = match p {
pong(x) => { cast::transmute(ptr::addr_of(x)) } pong(x) => { cast::transmute(ptr::addr_of(&x)) }
}; };
let liberated_value <- *addr; let liberated_value <- *addr;
cast::forget(p); cast::forget(p);
......
...@@ -4,14 +4,14 @@ ...@@ -4,14 +4,14 @@
fn main() { fn main() {
// Make sure closing over can be a last use // Make sure closing over can be a last use
let q = ~10; let q = ~10;
let addr = ptr::addr_of(*q); let addr = ptr::addr_of(&(*q));
let f = fn@() -> *int { ptr::addr_of(*q) }; let f = fn@() -> *int { ptr::addr_of(&(*q)) };
assert addr == f(); assert addr == f();
// But only when it really is the last use // But only when it really is the last use
let q = ~20; let q = ~20;
let f = fn@() -> *int { ptr::addr_of(*q) }; let f = fn@() -> *int { ptr::addr_of(&(*q)) };
assert ptr::addr_of(*q) != f(); assert ptr::addr_of(&(*q)) != f();
// Ensure function arguments and box arguments interact sanely. // Ensure function arguments and box arguments interact sanely.
fn call_me(x: fn() -> int, y: ~int) { assert x() == *y; } fn call_me(x: fn() -> int, y: ~int) { assert x() == *y; }
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
) )
macro_rules! move_it ( macro_rules! move_it (
{ $x:expr } => { unsafe { let y <- *ptr::addr_of($x); y } } { $x:expr } => { unsafe { let y <- *ptr::addr_of(&($x)); y } }
) )
fn switch<T: Send, U>(+endp: pipes::RecvPacket<T>, fn switch<T: Send, U>(+endp: pipes::RecvPacket<T>,
......
...@@ -28,7 +28,7 @@ fn init() -> (client::ping, server::ping) { ...@@ -28,7 +28,7 @@ fn init() -> (client::ping, server::ping) {
do pipes::entangle_buffer(buffer) |buffer, data| { do pipes::entangle_buffer(buffer) |buffer, data| {
data.ping.set_buffer_(buffer); data.ping.set_buffer_(buffer);
data.pong.set_buffer_(buffer); data.pong.set_buffer_(buffer);
ptr::addr_of(data.ping) ptr::addr_of(&(data.ping))
} }
} }
enum ping = server::pong; enum ping = server::pong;
...@@ -38,8 +38,8 @@ mod client { ...@@ -38,8 +38,8 @@ mod client {
fn ping(+pipe: ping) -> pong { fn ping(+pipe: ping) -> pong {
{ {
let b = pipe.reuse_buffer(); let b = pipe.reuse_buffer();
let s = SendPacketBuffered(ptr::addr_of(b.buffer.data.pong)); let s = SendPacketBuffered(ptr::addr_of(&(b.buffer.data.pong)));
let c = RecvPacketBuffered(ptr::addr_of(b.buffer.data.pong)); let c = RecvPacketBuffered(ptr::addr_of(&(b.buffer.data.pong)));
let message = pingpong::ping(s); let message = pingpong::ping(s);
pipes::send(pipe, message); pipes::send(pipe, message);
c c
...@@ -57,8 +57,8 @@ mod server { ...@@ -57,8 +57,8 @@ mod server {
fn pong(+pipe: pong) -> ping { fn pong(+pipe: pong) -> ping {
{ {
let b = pipe.reuse_buffer(); let b = pipe.reuse_buffer();
let s = SendPacketBuffered(ptr::addr_of(b.buffer.data.ping)); let s = SendPacketBuffered(ptr::addr_of(&(b.buffer.data.ping)));
let c = RecvPacketBuffered(ptr::addr_of(b.buffer.data.ping)); let c = RecvPacketBuffered(ptr::addr_of(&(b.buffer.data.ping)));
let message = pingpong::pong(s); let message = pingpong::pong(s);
pipes::send(pipe, message); pipes::send(pipe, message);
c c
......
...@@ -612,7 +612,7 @@ fn get_tydesc_for<T>(&&_t: T) -> *TyDesc { ...@@ -612,7 +612,7 @@ fn get_tydesc_for<T>(&&_t: T) -> *TyDesc {
fn main() { fn main() {
let r = (1,2,3,true,false,{x:5,y:4,z:3}); let r = (1,2,3,true,false,{x:5,y:4,z:3});
let p = ptr::addr_of(r) as *c_void; let p = ptr::addr_of(&r) as *c_void;
let u = my_visitor(@{mut ptr1: p, let u = my_visitor(@{mut ptr1: p,
mut ptr2: p, mut ptr2: p,
mut vals: ~[]}); mut vals: ~[]});
......
...@@ -4,8 +4,8 @@ struct r { ...@@ -4,8 +4,8 @@ struct r {
v: *int, v: *int,
drop unsafe { drop unsafe {
debug!("r's dtor: self = %x, self.v = %x, self.v's value = %x", debug!("r's dtor: self = %x, self.v = %x, self.v's value = %x",
cast::reinterpret_cast::<*r, uint>(&ptr::addr_of(self)), cast::reinterpret_cast::<*r, uint>(&ptr::addr_of(&self)),
cast::reinterpret_cast::<**int, uint>(&ptr::addr_of(self.v)), cast::reinterpret_cast::<**int, uint>(&ptr::addr_of(&(self.v))),
cast::reinterpret_cast::<*int, uint>(&self.v)); cast::reinterpret_cast::<*int, uint>(&self.v));
let v2: ~int = cast::reinterpret_cast(&self.v); } let v2: ~int = cast::reinterpret_cast(&self.v); }
} }
...@@ -34,27 +34,27 @@ fn main() unsafe { ...@@ -34,27 +34,27 @@ fn main() unsafe {
r: { r: {
let rs = r(i1p); let rs = r(i1p);
debug!("r = %x", debug!("r = %x",
cast::reinterpret_cast::<*r, uint>(&ptr::addr_of(rs))); cast::reinterpret_cast::<*r, uint>(&ptr::addr_of(&rs)));
rs } rs }
}); });
debug!("x1 = %x, x1.r = %x", debug!("x1 = %x, x1.r = %x",
cast::reinterpret_cast::<@t, uint>(&x1), cast::reinterpret_cast::<@t, uint>(&x1),
cast::reinterpret_cast::<*r, uint>(&ptr::addr_of(x1.r))); cast::reinterpret_cast::<*r, uint>(&ptr::addr_of(&(x1.r))));
let x2 = @t({ let x2 = @t({
mut next: None, mut next: None,
r: { r: {
let rs = r(i2p); let rs = r(i2p);
debug!("r2 = %x", debug!("r2 = %x",
cast::reinterpret_cast::<*r, uint>(&ptr::addr_of(rs))); cast::reinterpret_cast::<*r, uint>(&ptr::addr_of(&rs)));
rs rs
} }
}); });
debug!("x2 = %x, x2.r = %x", debug!("x2 = %x, x2.r = %x",
cast::reinterpret_cast::<@t, uint>(&x2), cast::reinterpret_cast::<@t, uint>(&x2),
cast::reinterpret_cast::<*r, uint>(&ptr::addr_of(x2.r))); cast::reinterpret_cast::<*r, uint>(&ptr::addr_of(&(x2.r))));
x1.next = Some(x2); x1.next = Some(x2);
x2.next = Some(x1); x2.next = Some(x1);
......
...@@ -33,7 +33,7 @@ fn main() unsafe { ...@@ -33,7 +33,7 @@ fn main() unsafe {
assert child_sched_id == new_sched_id; assert child_sched_id == new_sched_id;
comm::send(ch, ()); comm::send(ch, ());
}; };
let fptr = cast::reinterpret_cast(&ptr::addr_of(f)); let fptr = cast::reinterpret_cast(&ptr::addr_of(&f));
rustrt::start_task(new_task_id, fptr); rustrt::start_task(new_task_id, fptr);
cast::forget(f); cast::forget(f);
comm::recv(po); comm::recv(po);
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
match move pipes::try_recv($port) { match move pipes::try_recv($port) {
$(Some($message($($(ref $x,)+)* ref next)) => { $(Some($message($($(ref $x,)+)* ref next)) => {
// FIXME (#2329) we really want move out of enum here. // FIXME (#2329) we really want move out of enum here.
let $next = unsafe { let x <- *ptr::addr_of(*next); x }; let $next = unsafe { let x <- *ptr::addr_of(&(*next)); x };
$e $e
})+ })+
_ => fail _ => fail
......
...@@ -2,5 +2,5 @@ ...@@ -2,5 +2,5 @@
fn main() { fn main() {
let foo = 1; let foo = 1;
assert ptr::addr_of(foo) == ptr::addr_of(foo); assert ptr::addr_of(&foo) == ptr::addr_of(&foo);
} }
...@@ -10,7 +10,7 @@ struct notify { ...@@ -10,7 +10,7 @@ struct notify {
drop { drop {
error!("notify: task=%? v=%x unwinding=%b b=%b", error!("notify: task=%? v=%x unwinding=%b b=%b",
task::get_task(), task::get_task(),
ptr::addr_of(*(self.v)) as uint, ptr::addr_of(&(*(self.v))) as uint,
task::failing(), task::failing(),
*(self.v)); *(self.v));
let b = *(self.v); let b = *(self.v);
...@@ -30,7 +30,7 @@ fn wrapper(+c: comm::Chan<bool>, +f: fn()) { ...@@ -30,7 +30,7 @@ fn wrapper(+c: comm::Chan<bool>, +f: fn()) {
let b = @mut false; let b = @mut false;
error!("wrapper: task=%? allocated v=%x", error!("wrapper: task=%? allocated v=%x",
task::get_task(), task::get_task(),
ptr::addr_of(*b) as uint); ptr::addr_of(&(*b)) as uint);
let _r = notify(c, b); let _r = notify(c, b);
f(); f();
*b = true; *b = true;
......
...@@ -3,16 +3,16 @@ fn main() { ...@@ -3,16 +3,16 @@ fn main() {
let ch = comm::Chan(p); let ch = comm::Chan(p);
let x = ~1; let x = ~1;
let x_in_parent = ptr::addr_of(*x) as uint; let x_in_parent = ptr::addr_of(&(*x)) as uint;
let y = ~2; let y = ~2;
let y_in_parent = ptr::addr_of(*y) as uint; let y_in_parent = ptr::addr_of(&(*y)) as uint;
task::spawn(fn~(copy ch, copy y, move x) { task::spawn(fn~(copy ch, copy y, move x) {
let x_in_child = ptr::addr_of(*x) as uint; let x_in_child = ptr::addr_of(&(*x)) as uint;
comm::send(ch, x_in_child); comm::send(ch, x_in_child);
let y_in_child = ptr::addr_of(*y) as uint; let y_in_child = ptr::addr_of(&(*y)) as uint;
comm::send(ch, y_in_child); comm::send(ch, y_in_child);
}); });
// Ensure last-use analysis doesn't move y to child. // Ensure last-use analysis doesn't move y to child.
......
...@@ -9,7 +9,7 @@ enum maybe_pointy { ...@@ -9,7 +9,7 @@ enum maybe_pointy {
}; };
fn make_uniq_closure<A:Send Copy>(a: A) -> fn~() -> uint { fn make_uniq_closure<A:Send Copy>(a: A) -> fn~() -> uint {
fn~() -> uint { ptr::addr_of(a) as uint } fn~() -> uint { ptr::addr_of(&a) as uint }
} }
fn empty_pointy() -> @pointy { fn empty_pointy() -> @pointy {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册