Skip to content

Commit 71a2ee0

Browse files
committed
librustc: Remove ptr::addr_of.
1 parent d72ca65 commit 71a2ee0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+280
-304
lines changed

src/libcore/at_vec.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ use cast::transmute;
1414
use kinds::Copy;
1515
use iter;
1616
use option::Option;
17-
use ptr::addr_of;
1817
use sys;
1918
use uint;
2019
use vec;
@@ -40,8 +39,7 @@ pub mod rustrt {
4039
#[inline(always)]
4140
pub fn capacity<T>(v: @[T]) -> uint {
4241
unsafe {
43-
let repr: **raw::VecRepr =
44-
::cast::transmute(addr_of(&v));
42+
let repr: **raw::VecRepr = transmute(&v);
4543
(**repr).unboxed.alloc / sys::size_of::<T>()
4644
}
4745
}
@@ -189,11 +187,10 @@ pub mod raw {
189187
use at_vec::{capacity, rustrt};
190188
use cast::transmute;
191189
use libc;
192-
use unstable::intrinsics::{move_val_init};
193-
use ptr::addr_of;
194190
use ptr;
195191
use sys;
196192
use uint;
193+
use unstable::intrinsics::{move_val_init};
197194
use vec;
198195

199196
pub type VecRepr = vec::raw::VecRepr;
@@ -208,7 +205,7 @@ pub mod raw {
208205
*/
209206
#[inline(always)]
210207
pub unsafe fn set_len<T>(v: @[T], new_len: uint) {
211-
let repr: **mut VecRepr = ::cast::transmute(addr_of(&v));
208+
let repr: **mut VecRepr = transmute(&v);
212209
(**repr).unboxed.fill = new_len * sys::size_of::<T>();
213210
}
214211

@@ -229,7 +226,7 @@ pub mod raw {
229226
let repr: **mut VecRepr = ::cast::transmute(v);
230227
let fill = (**repr).unboxed.fill;
231228
(**repr).unboxed.fill += sys::size_of::<T>();
232-
let p = addr_of(&((**repr).unboxed.data));
229+
let p = &((**repr).unboxed.data);
233230
let p = ptr::offset(p, fill) as *mut T;
234231
move_val_init(&mut(*p), initval);
235232
}

src/libcore/comm.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,7 @@ impl<T: Owned> ::clone::Clone for SharedChan<T> {
327327
#[allow(non_camel_case_types)]
328328
pub mod oneshot {
329329
priv use core::kinds::Owned;
330+
use ptr::to_unsafe_ptr;
330331
331332
pub fn init<T: Owned>() -> (client::Oneshot<T>, server::Oneshot<T>) {
332333
pub use core::pipes::HasBuffer;
@@ -341,7 +342,7 @@ pub mod oneshot {
341342
do ::core::pipes::entangle_buffer(buffer) |buffer, data| {
342343
{
343344
data.Oneshot.set_buffer(buffer);
344-
::ptr::addr_of(&(data.Oneshot))
345+
to_unsafe_ptr(&data.Oneshot)
345346
}
346347
}
347348
}

src/libcore/flate.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ pub fn deflate_bytes(bytes: &const [u8]) -> ~[u8] {
5353
let res =
5454
rustrt::tdefl_compress_mem_to_heap(b as *c_void,
5555
len as size_t,
56-
ptr::addr_of(&outsz),
56+
&outsz,
5757
lz_norm);
5858
assert!(res as int != 0);
5959
let out = vec::raw::from_buf_raw(res as *u8,
@@ -71,7 +71,7 @@ pub fn inflate_bytes(bytes: &const [u8]) -> ~[u8] {
7171
let res =
7272
rustrt::tinfl_decompress_mem_to_heap(b as *c_void,
7373
len as size_t,
74-
ptr::addr_of(&outsz),
74+
&outsz,
7575
0);
7676
assert!(res as int != 0);
7777
let out = vec::raw::from_buf_raw(res as *u8,

src/libcore/gc.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ pub fn cleanup_stack_for_failure() {
338338
// own stack roots on the stack anyway.
339339
let sentinel_box = ~0;
340340
let sentinel: **Word = if expect_sentinel() {
341-
cast::transmute(ptr::addr_of(&sentinel_box))
341+
cast::transmute(&sentinel_box)
342342
} else {
343343
ptr::null()
344344
};

src/libcore/managed.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
//! Operations on managed box types
1212
13-
use ptr;
13+
use ptr::to_unsafe_ptr;
1414

1515
#[cfg(notest)] use cmp::{Eq, Ord};
1616

@@ -38,13 +38,15 @@ pub mod raw {
3838
#[inline(always)]
3939
pub fn ptr_eq<T>(a: @T, b: @T) -> bool {
4040
//! Determine if two shared boxes point to the same object
41-
ptr::addr_of(&(*a)) == ptr::addr_of(&(*b))
41+
let a_ptr: *T = to_unsafe_ptr(&*a), b_ptr: *T = to_unsafe_ptr(&*b);
42+
a_ptr == b_ptr
4243
}
4344

4445
#[inline(always)]
4546
pub fn mut_ptr_eq<T>(a: @mut T, b: @mut T) -> bool {
4647
//! Determine if two mutable shared boxes point to the same object
47-
ptr::addr_of(&(*a)) == ptr::addr_of(&(*b))
48+
let a_ptr: *T = to_unsafe_ptr(&*a), b_ptr: *T = to_unsafe_ptr(&*b);
49+
a_ptr == b_ptr
4850
}
4951

5052
#[cfg(notest)]

src/libcore/option.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ use num::Zero;
4949
use iter::{BaseIter, MutableIter, ExtendedIter};
5050
use iter;
5151

52-
#[cfg(test)] use ptr;
5352
#[cfg(test)] use str;
5453

5554
/// The option type
@@ -481,12 +480,14 @@ pub impl<T:Copy + Zero> Option<T> {
481480
482481
#[test]
483482
fn test_unwrap_ptr() {
484-
let x = ~0;
485-
let addr_x = ptr::addr_of(&(*x));
486-
let opt = Some(x);
487-
let y = opt.unwrap();
488-
let addr_y = ptr::addr_of(&(*y));
489-
assert!(addr_x == addr_y);
483+
unsafe {
484+
let x = ~0;
485+
let addr_x: *int = transmute(&*x);
486+
let opt = Some(x);
487+
let y = opt.unwrap();
488+
let addr_y: *int = transmute(&*y);
489+
assert!(addr_x == addr_y);
490+
}
490491
}
491492
492493
#[test]

src/libcore/pipes.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ use vec;
9595
static SPIN_COUNT: uint = 0;
9696

9797
macro_rules! move_it (
98-
{ $x:expr } => ( unsafe { let y = *ptr::addr_of(&($x)); y } )
98+
{ $x:expr } => ( unsafe { let y = *ptr::to_unsafe_ptr(&($x)); y } )
9999
)
100100

101101
#[deriving(Eq)]
@@ -218,7 +218,7 @@ fn unibuffer<T>() -> ~Buffer<Packet<T>> {
218218

219219
pub fn packet<T>() -> *Packet<T> {
220220
let b = unibuffer();
221-
let p = ptr::addr_of(&(b.data));
221+
let p = ptr::to_unsafe_ptr(&(b.data));
222222
// We'll take over memory management from here.
223223
unsafe { forget(b) }
224224
p
@@ -305,7 +305,7 @@ impl<T> ::ops::Drop for BufferResource<T> {
305305
fn finalize(&self) {
306306
unsafe {
307307
let b = move_it!(self.buffer);
308-
//let p = ptr::addr_of(*b);
308+
//let p = ptr::to_unsafe_ptr(*b);
309309
//error!("drop %?", p);
310310
let old_count = intrinsics::atomic_xsub_rel(&mut b.header.ref_count, 1);
311311
//let old_count = atomic_xchng_rel(b.header.ref_count, 0);
@@ -322,7 +322,7 @@ impl<T> ::ops::Drop for BufferResource<T> {
322322
}
323323
324324
fn BufferResource<T>(b: ~Buffer<T>) -> BufferResource<T> {
325-
//let p = ptr::addr_of(*b);
325+
//let p = ptr::to_unsafe_ptr(*b);
326326
//error!("take %?", p);
327327
unsafe { intrinsics::atomic_xadd_acq(&mut b.header.ref_count, 1) };
328328
@@ -336,7 +336,7 @@ pub fn send<T,Tbuffer>(p: SendPacketBuffered<T,Tbuffer>, payload: T) -> bool {
336336
let header = p.header();
337337
let p_ = p.unwrap();
338338
let p = unsafe { &*p_ };
339-
assert!(ptr::addr_of(&(p.header)) == header);
339+
assert!(ptr::to_unsafe_ptr(&(p.header)) == header);
340340
assert!(p.payload.is_none());
341341
p.payload = Some(payload);
342342
let old_state = swap_state_rel(&mut p.header.state, Full);
@@ -356,7 +356,7 @@ pub fn send<T,Tbuffer>(p: SendPacketBuffered<T,Tbuffer>, payload: T) -> bool {
356356
unsafe {
357357
rustrt::task_signal_event(
358358
old_task,
359-
ptr::addr_of(&(p.header)) as *libc::c_void);
359+
ptr::to_unsafe_ptr(&(p.header)) as *libc::c_void);
360360
rustrt::rust_task_deref(old_task);
361361
}
362362
}
@@ -521,7 +521,7 @@ fn sender_terminate<T:Owned>(p: *Packet<T>) {
521521
unsafe {
522522
rustrt::task_signal_event(
523523
old_task,
524-
ptr::addr_of(&(p.header)) as *libc::c_void);
524+
ptr::to_unsafe_ptr(&(p.header)) as *libc::c_void);
525525
rustrt::rust_task_deref(old_task);
526526
}
527527
}
@@ -665,7 +665,7 @@ pub fn SendPacketBuffered<T,Tbuffer>(p: *Packet<T>)
665665
p: Some(p),
666666
buffer: unsafe {
667667
Some(BufferResource(
668-
get_buffer(ptr::addr_of(&((*p).header)))))
668+
get_buffer(ptr::to_unsafe_ptr(&((*p).header)))))
669669
}
670670
}
671671
}
@@ -681,7 +681,7 @@ pub impl<T,Tbuffer> SendPacketBuffered<T,Tbuffer> {
681681
match self.p {
682682
Some(packet) => unsafe {
683683
let packet = &*packet;
684-
let header = ptr::addr_of(&(packet.header));
684+
let header = ptr::to_unsafe_ptr(&(packet.header));
685685
//forget(packet);
686686
header
687687
},
@@ -747,7 +747,7 @@ impl<T:Owned,Tbuffer:Owned> Selectable for RecvPacketBuffered<T, Tbuffer> {
747747
match self.p {
748748
Some(packet) => unsafe {
749749
let packet = &*packet;
750-
let header = ptr::addr_of(&(packet.header));
750+
let header = ptr::to_unsafe_ptr(&(packet.header));
751751
//forget(packet);
752752
header
753753
},
@@ -763,7 +763,7 @@ pub fn RecvPacketBuffered<T,Tbuffer>(p: *Packet<T>)
763763
p: Some(p),
764764
buffer: unsafe {
765765
Some(BufferResource(
766-
get_buffer(ptr::addr_of(&((*p).header)))))
766+
get_buffer(ptr::to_unsafe_ptr(&((*p).header)))))
767767
}
768768
}
769769
}

src/libcore/ptr.rs

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,6 @@ pub mod libc_ {
3939
}
4040
}
4141

42-
pub mod rusti {
43-
#[abi = "rust-intrinsic"]
44-
pub extern "rust-intrinsic" {
45-
fn addr_of<T>(&&val: T) -> *T;
46-
}
47-
}
48-
49-
/// Get an unsafe pointer to a value
50-
#[inline(always)]
51-
pub fn addr_of<T>(val: &T) -> *T { unsafe { rusti::addr_of(*val) } }
52-
5342
/// Calculate the offset from a pointer
5443
#[inline(always)]
5544
pub fn offset<T>(ptr: *T, count: uint) -> *T {

src/libcore/rt/uvll.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ pub unsafe fn async_send(async_handle: *uv_async_t) {
252252
}
253253
pub unsafe fn buf_init(input: *u8, len: uint) -> uv_buf_t {
254254
let out_buf = uv_buf_t { base: ptr::null(), len: 0 as size_t };
255-
let out_buf_ptr = ptr::addr_of(&out_buf);
255+
let out_buf_ptr = ptr::to_unsafe_ptr(&out_buf);
256256
rust_uv_buf_init(out_buf_ptr, input, len as size_t);
257257
return out_buf;
258258
}
@@ -330,7 +330,7 @@ pub unsafe fn free_base_of_buf(buf: uv_buf_t) {
330330

331331
pub unsafe fn get_last_err_info(uv_loop: *c_void) -> ~str {
332332
let err = last_error(uv_loop);
333-
let err_ptr = ptr::addr_of(&err);
333+
let err_ptr = ptr::to_unsafe_ptr(&err);
334334
let err_name = str::raw::from_c_str(err_name(err_ptr));
335335
let err_msg = str::raw::from_c_str(strerror(err_ptr));
336336
return fmt!("LIBUV ERROR: name: %s msg: %s",
@@ -339,7 +339,7 @@ pub unsafe fn get_last_err_info(uv_loop: *c_void) -> ~str {
339339

340340
pub unsafe fn get_last_err_data(uv_loop: *c_void) -> uv_err_data {
341341
let err = last_error(uv_loop);
342-
let err_ptr = ptr::addr_of(&err);
342+
let err_ptr = ptr::to_unsafe_ptr(&err);
343343
let err_name = str::raw::from_c_str(err_name(err_ptr));
344344
let err_msg = str::raw::from_c_str(strerror(err_ptr));
345345
uv_err_data { err_name: err_name, err_msg: err_msg }

src/libcore/str.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919

2020
use at_vec;
21+
use cast::transmute;
2122
use cast;
2223
use char;
2324
use clone::Clone;
@@ -2045,7 +2046,7 @@ pub fn as_c_str<T>(s: &str, f: &fn(*libc::c_char) -> T) -> T {
20452046
#[inline(always)]
20462047
pub fn as_buf<T>(s: &str, f: &fn(*u8, uint) -> T) -> T {
20472048
unsafe {
2048-
let v : *(*u8,uint) = ::cast::transmute(ptr::addr_of(&s));
2049+
let v : *(*u8,uint) = transmute(&s);
20492050
let (buf,len) = *v;
20502051
f(buf, len)
20512052
}

src/libcore/task/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1028,10 +1028,10 @@ fn avoid_copying_the_body(spawnfn: &fn(v: ~fn())) {
10281028
let (p, ch) = stream::<uint>();
10291029

10301030
let x = ~1;
1031-
let x_in_parent = ptr::addr_of(&(*x)) as uint;
1031+
let x_in_parent = ptr::to_unsafe_ptr(&*x) as uint;
10321032

10331033
do spawnfn || {
1034-
let x_in_child = ptr::addr_of(&(*x)) as uint;
1034+
let x_in_child = ptr::to_unsafe_ptr(&*x) as uint;
10351035
ch.send(x_in_child);
10361036
}
10371037

src/libcore/task/spawn.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ use util;
9393
#[cfg(test)] use task::default_task_opts;
9494

9595
macro_rules! move_it (
96-
{ $x:expr } => ( unsafe { let y = *ptr::addr_of(&($x)); y } )
96+
{ $x:expr } => ( unsafe { let y = *ptr::to_unsafe_ptr(&($x)); y } )
9797
)
9898

9999
type TaskSet = HashSet<*rust_task>;

src/libcore/unstable/intrinsics.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,6 @@ pub extern "rust-intrinsic" {
4848

4949
// XXX: intrinsic uses legacy modes
5050
fn reinterpret_cast<T,U>(&&src: T) -> U;
51-
// XXX: intrinsic uses legacy modes
52-
fn addr_of<T>(&&scr: T) -> *T;
5351

5452
pub fn needs_drop<T>() -> bool;
5553

0 commit comments

Comments
 (0)