Skip to content

Commit 4856dba

Browse files
committed
---
yaml --- r: 65148 b: refs/heads/master c: 2460967 h: refs/heads/master v: v3
1 parent 00ac2c3 commit 4856dba

30 files changed

+441
-591
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 29d83002a27e6f47759b4a3bfe741fb061107816
2+
refs/heads/master: 24609675ebeff66f6299e98e4687618a48cf47e7
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 18e3db7392d2d0697b7e27d6d986139960144d85
55
refs/heads/try: 7b78b52e602bb3ea8174f9b2006bff3315f03ef9

trunk/src/libcore/cast.rs

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,26 +12,17 @@
1212
1313
use sys;
1414
use unstable;
15-
16-
pub mod rusti {
17-
#[abi = "rust-intrinsic"]
18-
#[link_name = "rusti"]
19-
pub extern "rust-intrinsic" {
20-
fn forget<T>(x: T);
21-
22-
fn transmute<T,U>(e: T) -> U;
23-
}
24-
}
15+
use unstable::intrinsics;
2516

2617
/// Casts the value at `src` to U. The two types must have the same length.
2718
pub unsafe fn transmute_copy<T, U>(src: &T) -> U {
28-
let mut dest: U = unstable::intrinsics::init();
19+
let mut dest: U = intrinsics::init();
2920
{
30-
let dest_ptr: *mut u8 = rusti::transmute(&mut dest);
31-
let src_ptr: *u8 = rusti::transmute(src);
32-
unstable::intrinsics::memmove64(dest_ptr,
33-
src_ptr,
34-
sys::size_of::<U>() as u64);
21+
let dest_ptr: *mut u8 = transmute(&mut dest);
22+
let src_ptr: *u8 = transmute(src);
23+
intrinsics::memmove64(dest_ptr,
24+
src_ptr,
25+
sys::size_of::<U>() as u64);
3526
}
3627
dest
3728
}
@@ -45,7 +36,7 @@ pub unsafe fn transmute_copy<T, U>(src: &T) -> U {
4536
* reinterpret_cast on pointer types.
4637
*/
4738
#[inline(always)]
48-
pub unsafe fn forget<T>(thing: T) { rusti::forget(thing); }
39+
pub unsafe fn forget<T>(thing: T) { intrinsics::forget(thing); }
4940

5041
/**
5142
* Force-increment the reference count on a shared box. If used
@@ -65,7 +56,7 @@ pub unsafe fn bump_box_refcount<T>(t: @T) { forget(t); }
6556
*/
6657
#[inline(always)]
6758
pub unsafe fn transmute<L, G>(thing: L) -> G {
68-
rusti::transmute(thing)
59+
intrinsics::transmute(thing)
6960
}
7061

7162
/// Coerce an immutable reference to be mutable.

trunk/src/libcore/clone.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@ by convention implementing the `Clone` trait and calling the
2525
use core::kinds::Const;
2626

2727
pub trait Clone {
28-
/// Return a deep copy of the owned object tree. Types with shared ownership like managed boxes
29-
/// are cloned with a shallow copy.
28+
/// Returns a copy of the value. The contents of owned pointers
29+
/// are copied to maintain uniqueness, while the contents of
30+
/// managed pointers are not copied.
3031
fn clone(&self) -> Self;
3132
}
3233

@@ -85,8 +86,9 @@ clone_impl!(bool)
8586
clone_impl!(char)
8687

8788
pub trait DeepClone {
88-
/// Return a deep copy of the object tree. Types with shared ownership are also copied via a
89-
/// deep copy, unlike `Clone`.
89+
/// Return a deep copy of the value. Unlike `Clone`, the contents of shared pointer types
90+
/// *are* copied. Note that this is currently unimplemented for managed boxes, as
91+
/// it would need to handle cycles, but it is implemented for other smart-pointer types.
9092
fn deep_clone(&self) -> Self;
9193
}
9294

trunk/src/libcore/logging.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,8 @@ pub fn log_type<T>(level: u32, object: &T) {
6666
}
6767

6868
fn newsched_log_str(msg: ~str) {
69-
use rt::task::Task;
70-
use rt::local::Local;
71-
7269
unsafe {
73-
match Local::try_unsafe_borrow::<Task>() {
70+
match rt::local_services::unsafe_try_borrow_local_services() {
7471
Some(local) => {
7572
// Use the available logger
7673
(*local).logger.log(Left(msg));

trunk/src/libcore/rt/comm.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ use cast;
2020
use util;
2121
use ops::Drop;
2222
use kinds::Owned;
23-
use rt::sched::{Scheduler, Coroutine};
24-
use rt::local::Local;
23+
use rt::sched::Coroutine;
24+
use rt::local_sched;
2525
use unstable::intrinsics::{atomic_xchg, atomic_load};
2626
use util::Void;
2727
use comm::{GenericChan, GenericSmartChan, GenericPort, Peekable};
@@ -127,7 +127,7 @@ impl<T> ChanOne<T> {
127127
task_as_state => {
128128
// Port is blocked. Wake it up.
129129
let recvr: ~Coroutine = cast::transmute(task_as_state);
130-
let sched = Local::take::<Scheduler>();
130+
let sched = local_sched::take();
131131
sched.schedule_task(recvr);
132132
}
133133
}
@@ -157,7 +157,7 @@ impl<T> PortOne<T> {
157157
// XXX: Optimize this to not require the two context switches when data is available
158158

159159
// Switch to the scheduler to put the ~Task into the Packet state.
160-
let sched = Local::take::<Scheduler>();
160+
let sched = local_sched::take();
161161
do sched.deschedule_running_task_and_then |task| {
162162
unsafe {
163163
// Atomically swap the task pointer into the Packet state, issuing
@@ -173,7 +173,7 @@ impl<T> PortOne<T> {
173173
STATE_ONE => {
174174
// Channel is closed. Switch back and check the data.
175175
let task: ~Coroutine = cast::transmute(task_as_state);
176-
let sched = Local::take::<Scheduler>();
176+
let sched = local_sched::take();
177177
sched.resume_task_immediately(task);
178178
}
179179
_ => util::unreachable()
@@ -239,7 +239,7 @@ impl<T> Drop for ChanOneHack<T> {
239239
// The port is blocked waiting for a message we will never send. Wake it.
240240
assert!((*this.packet()).payload.is_none());
241241
let recvr: ~Coroutine = cast::transmute(task_as_state);
242-
let sched = Local::take::<Scheduler>();
242+
let sched = local_sched::take();
243243
sched.schedule_task(recvr);
244244
}
245245
}

trunk/src/libcore/rt/io/net/tcp.rs

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

1111
use option::{Option, Some, None};
1212
use result::{Ok, Err};
13+
use rt::sched::local_sched::unsafe_borrow_io;
1314
use rt::io::net::ip::IpAddr;
1415
use rt::io::{Reader, Writer, Listener};
1516
use rt::io::{io_error, read_error, EndOfFile};
16-
use rt::rtio::{IoFactory, IoFactoryObject,
17+
use rt::rtio::{IoFactory,
1718
RtioTcpListener, RtioTcpListenerObject,
1819
RtioTcpStream, RtioTcpStreamObject};
19-
use rt::local::Local;
2020

2121
pub struct TcpStream {
2222
rtstream: ~RtioTcpStreamObject
@@ -32,7 +32,7 @@ impl TcpStream {
3232
pub fn connect(addr: IpAddr) -> Option<TcpStream> {
3333
let stream = unsafe {
3434
rtdebug!("borrowing io to connect");
35-
let io = Local::unsafe_borrow::<IoFactoryObject>();
35+
let io = unsafe_borrow_io();
3636
rtdebug!("about to connect");
3737
(*io).tcp_connect(addr)
3838
};
@@ -88,10 +88,7 @@ pub struct TcpListener {
8888

8989
impl TcpListener {
9090
pub fn bind(addr: IpAddr) -> Option<TcpListener> {
91-
let listener = unsafe {
92-
let io = Local::unsafe_borrow::<IoFactoryObject>();
93-
(*io).tcp_bind(addr)
94-
};
91+
let listener = unsafe { (*unsafe_borrow_io()).tcp_bind(addr) };
9592
match listener {
9693
Ok(l) => {
9794
Some(TcpListener {

trunk/src/libcore/rt/local.rs

Lines changed: 0 additions & 118 deletions
This file was deleted.

0 commit comments

Comments
 (0)