Skip to content

Commit 9f12b9d

Browse files
committed
librustc: Remove ptr::addr_of.
1 parent 25129ee commit 9f12b9d

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
@@ -340,7 +340,7 @@ pub fn cleanup_stack_for_failure() {
340340
// own stack roots on the stack anyway.
341341
let sentinel_box = ~0;
342342
let sentinel: **Word = if expect_sentinel() {
343-
cast::transmute(ptr::addr_of(&sentinel_box))
343+
cast::transmute(&sentinel_box)
344344
} else {
345345
ptr::null()
346346
};

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)]
@@ -220,7 +220,7 @@ fn unibuffer<T>() -> ~Buffer<Packet<T>> {
220220

221221
pub fn packet<T>() -> *Packet<T> {
222222
let b = unibuffer();
223-
let p = ptr::addr_of(&(b.data));
223+
let p = ptr::to_unsafe_ptr(&(b.data));
224224
// We'll take over memory management from here.
225225
unsafe { forget(b) }
226226
p
@@ -307,7 +307,7 @@ impl<T> ::ops::Drop for BufferResource<T> {
307307
fn finalize(&self) {
308308
unsafe {
309309
let b = move_it!(self.buffer);
310-
//let p = ptr::addr_of(*b);
310+
//let p = ptr::to_unsafe_ptr(*b);
311311
//error!("drop %?", p);
312312
let old_count = intrinsics::atomic_xsub_rel(&mut b.header.ref_count, 1);
313313
//let old_count = atomic_xchng_rel(b.header.ref_count, 0);
@@ -324,7 +324,7 @@ impl<T> ::ops::Drop for BufferResource<T> {
324324
}
325325
326326
fn BufferResource<T>(b: ~Buffer<T>) -> BufferResource<T> {
327-
//let p = ptr::addr_of(*b);
327+
//let p = ptr::to_unsafe_ptr(*b);
328328
//error!("take %?", p);
329329
unsafe { intrinsics::atomic_xadd_acq(&mut b.header.ref_count, 1) };
330330
@@ -338,7 +338,7 @@ pub fn send<T,Tbuffer>(p: SendPacketBuffered<T,Tbuffer>, payload: T) -> bool {
338338
let header = p.header();
339339
let p_ = p.unwrap();
340340
let p = unsafe { &*p_ };
341-
assert!(ptr::addr_of(&(p.header)) == header);
341+
assert!(ptr::to_unsafe_ptr(&(p.header)) == header);
342342
assert!(p.payload.is_none());
343343
p.payload = Some(payload);
344344
let old_state = swap_state_rel(&mut p.header.state, Full);
@@ -358,7 +358,7 @@ pub fn send<T,Tbuffer>(p: SendPacketBuffered<T,Tbuffer>, payload: T) -> bool {
358358
unsafe {
359359
rustrt::task_signal_event(
360360
old_task,
361-
ptr::addr_of(&(p.header)) as *libc::c_void);
361+
ptr::to_unsafe_ptr(&(p.header)) as *libc::c_void);
362362
rustrt::rust_task_deref(old_task);
363363
}
364364
}
@@ -523,7 +523,7 @@ fn sender_terminate<T:Owned>(p: *Packet<T>) {
523523
unsafe {
524524
rustrt::task_signal_event(
525525
old_task,
526-
ptr::addr_of(&(p.header)) as *libc::c_void);
526+
ptr::to_unsafe_ptr(&(p.header)) as *libc::c_void);
527527
rustrt::rust_task_deref(old_task);
528528
}
529529
}
@@ -667,7 +667,7 @@ pub fn SendPacketBuffered<T,Tbuffer>(p: *Packet<T>)
667667
p: Some(p),
668668
buffer: unsafe {
669669
Some(BufferResource(
670-
get_buffer(ptr::addr_of(&((*p).header)))))
670+
get_buffer(ptr::to_unsafe_ptr(&((*p).header)))))
671671
}
672672
}
673673
}
@@ -683,7 +683,7 @@ pub impl<T,Tbuffer> SendPacketBuffered<T,Tbuffer> {
683683
match self.p {
684684
Some(packet) => unsafe {
685685
let packet = &*packet;
686-
let header = ptr::addr_of(&(packet.header));
686+
let header = ptr::to_unsafe_ptr(&(packet.header));
687687
//forget(packet);
688688
header
689689
},
@@ -749,7 +749,7 @@ impl<T:Owned,Tbuffer:Owned> Selectable for RecvPacketBuffered<T, Tbuffer> {
749749
match self.p {
750750
Some(packet) => unsafe {
751751
let packet = &*packet;
752-
let header = ptr::addr_of(&(packet.header));
752+
let header = ptr::to_unsafe_ptr(&(packet.header));
753753
//forget(packet);
754754
header
755755
},
@@ -765,7 +765,7 @@ pub fn RecvPacketBuffered<T,Tbuffer>(p: *Packet<T>)
765765
p: Some(p),
766766
buffer: unsafe {
767767
Some(BufferResource(
768-
get_buffer(ptr::addr_of(&((*p).header)))))
768+
get_buffer(ptr::to_unsafe_ptr(&((*p).header)))))
769769
}
770770
}
771771
}

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;
@@ -2067,7 +2068,7 @@ pub fn as_c_str<T>(s: &str, f: &fn(*libc::c_char) -> T) -> T {
20672068
#[inline(always)]
20682069
pub fn as_buf<T>(s: &str, f: &fn(*u8, uint) -> T) -> T {
20692070
unsafe {
2070-
let v : *(*u8,uint) = ::cast::transmute(ptr::addr_of(&s));
2071+
let v : *(*u8,uint) = transmute(&s);
20712072
let (buf,len) = *v;
20722073
f(buf, len)
20732074
}

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)