Skip to content

Refactored the TLS use of the new runtime #7915

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions src/libstd/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,14 @@ macro_rules! rtdebug_ (
} )
)

// An alternate version with no output, for turning off logging
// An alternate version with no output, for turning off logging. An
// earlier attempt that did not call the fmt! macro was insufficient,
// as a case of the "let bind each variable" approach eventually
// failed without an error message describing the invocation site.
macro_rules! rtdebug (
($( $arg:expr),+) => ( $(let _ = $arg)*; )
($( $arg:expr),+) => ( {
let _x = fmt!( $($arg),+ );
})
)

macro_rules! rtassert (
Expand Down
5 changes: 2 additions & 3 deletions src/libstd/rt/comm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -639,7 +639,7 @@ mod test {
do run_in_newsched_task {
let (port, chan) = oneshot::<~int>();
let port_cell = Cell::new(port);
do spawntask_immediately {
do spawntask {
assert!(port_cell.take().recv() == ~10);
}

Expand All @@ -653,7 +653,7 @@ mod test {
let (port, chan) = oneshot::<~int>();
let port_cell = Cell::new(port);
let chan_cell = Cell::new(chan);
do spawntask_later {
do spawntask {
let _cell = chan_cell.take();
}
let res = do spawntask_try {
Expand Down Expand Up @@ -908,5 +908,4 @@ mod test {
}
}
}

}
6 changes: 3 additions & 3 deletions src/libstd/rt/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,11 @@ impl Context {
let argp: *c_void = unsafe { transmute::<&~fn(), *c_void>(&*start) };
let sp: *uint = stack.end();
let sp: *mut uint = unsafe { transmute_mut_unsafe(sp) };

// Save and then immediately load the current context,
// which we will then modify to call the given function when restored
let mut regs = new_regs();
unsafe {
swap_registers(transmute_mut_region(&mut *regs), transmute_region(&*regs))
swap_registers(transmute_mut_region(&mut *regs), transmute_region(&*regs));
};

initialize_call_frame(&mut *regs, fp, argp, sp);
Expand All @@ -72,13 +71,14 @@ impl Context {
then loading the registers from a previously saved Context.
*/
pub fn swap(out_context: &mut Context, in_context: &Context) {
rtdebug!("swapping contexts");
let out_regs: &mut Registers = match out_context {
&Context { regs: ~ref mut r, _ } => r
};
let in_regs: &Registers = match in_context {
&Context { regs: ~ref r, _ } => r
};

rtdebug!("doing raw swap");
unsafe { swap_registers(out_regs, in_regs) };
}
}
Expand Down
60 changes: 30 additions & 30 deletions src/libstd/rt/io/net/tcp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -152,15 +152,15 @@ mod test {
do run_in_newsched_task {
let addr = next_test_ip4();

do spawntask_immediately {
do spawntask {
let mut listener = TcpListener::bind(addr);
let mut stream = listener.accept();
let mut buf = [0];
stream.read(buf);
assert!(buf[0] == 99);
}

do spawntask_immediately {
do spawntask {
let mut stream = TcpStream::connect(addr);
stream.write([99]);
}
Expand All @@ -172,15 +172,15 @@ mod test {
do run_in_newsched_task {
let addr = next_test_ip6();

do spawntask_immediately {
do spawntask {
let mut listener = TcpListener::bind(addr);
let mut stream = listener.accept();
let mut buf = [0];
stream.read(buf);
assert!(buf[0] == 99);
}

do spawntask_immediately {
do spawntask {
let mut stream = TcpStream::connect(addr);
stream.write([99]);
}
Expand All @@ -192,15 +192,15 @@ mod test {
do run_in_newsched_task {
let addr = next_test_ip4();

do spawntask_immediately {
do spawntask {
let mut listener = TcpListener::bind(addr);
let mut stream = listener.accept();
let mut buf = [0];
let nread = stream.read(buf);
assert!(nread.is_none());
}

do spawntask_immediately {
do spawntask {
let _stream = TcpStream::connect(addr);
// Close
}
Expand All @@ -212,15 +212,15 @@ mod test {
do run_in_newsched_task {
let addr = next_test_ip6();

do spawntask_immediately {
do spawntask {
let mut listener = TcpListener::bind(addr);
let mut stream = listener.accept();
let mut buf = [0];
let nread = stream.read(buf);
assert!(nread.is_none());
}

do spawntask_immediately {
do spawntask {
let _stream = TcpStream::connect(addr);
// Close
}
Expand All @@ -232,7 +232,7 @@ mod test {
do run_in_newsched_task {
let addr = next_test_ip4();

do spawntask_immediately {
do spawntask {
let mut listener = TcpListener::bind(addr);
let mut stream = listener.accept();
let mut buf = [0];
Expand All @@ -242,7 +242,7 @@ mod test {
assert!(nread.is_none());
}

do spawntask_immediately {
do spawntask {
let _stream = TcpStream::connect(addr);
// Close
}
Expand All @@ -254,7 +254,7 @@ mod test {
do run_in_newsched_task {
let addr = next_test_ip6();

do spawntask_immediately {
do spawntask {
let mut listener = TcpListener::bind(addr);
let mut stream = listener.accept();
let mut buf = [0];
Expand All @@ -264,7 +264,7 @@ mod test {
assert!(nread.is_none());
}

do spawntask_immediately {
do spawntask {
let _stream = TcpStream::connect(addr);
// Close
}
Expand All @@ -276,7 +276,7 @@ mod test {
do run_in_newsched_task {
let addr = next_test_ip4();

do spawntask_immediately {
do spawntask {
let mut listener = TcpListener::bind(addr);
let mut stream = listener.accept();
let buf = [0];
Expand All @@ -293,7 +293,7 @@ mod test {
}
}

do spawntask_immediately {
do spawntask {
let _stream = TcpStream::connect(addr);
// Close
}
Expand All @@ -305,7 +305,7 @@ mod test {
do run_in_newsched_task {
let addr = next_test_ip6();

do spawntask_immediately {
do spawntask {
let mut listener = TcpListener::bind(addr);
let mut stream = listener.accept();
let buf = [0];
Expand All @@ -322,7 +322,7 @@ mod test {
}
}

do spawntask_immediately {
do spawntask {
let _stream = TcpStream::connect(addr);
// Close
}
Expand All @@ -335,7 +335,7 @@ mod test {
let addr = next_test_ip4();
let max = 10;

do spawntask_immediately {
do spawntask {
let mut listener = TcpListener::bind(addr);
for max.times {
let mut stream = listener.accept();
Expand All @@ -345,7 +345,7 @@ mod test {
}
}

do spawntask_immediately {
do spawntask {
for max.times {
let mut stream = TcpStream::connect(addr);
stream.write([99]);
Expand All @@ -360,7 +360,7 @@ mod test {
let addr = next_test_ip6();
let max = 10;

do spawntask_immediately {
do spawntask {
let mut listener = TcpListener::bind(addr);
for max.times {
let mut stream = listener.accept();
Expand All @@ -370,7 +370,7 @@ mod test {
}
}

do spawntask_immediately {
do spawntask {
for max.times {
let mut stream = TcpStream::connect(addr);
stream.write([99]);
Expand All @@ -385,13 +385,13 @@ mod test {
let addr = next_test_ip4();
static MAX: int = 10;

do spawntask_immediately {
do spawntask {
let mut listener = TcpListener::bind(addr);
for int::range(0, MAX) |i| {
let stream = Cell::new(listener.accept());
rtdebug!("accepted");
// Start another task to handle the connection
do spawntask_immediately {
do spawntask {
let mut stream = stream.take();
let mut buf = [0];
stream.read(buf);
Expand All @@ -406,7 +406,7 @@ mod test {
fn connect(i: int, addr: IpAddr) {
if i == MAX { return }

do spawntask_immediately {
do spawntask {
rtdebug!("connecting");
let mut stream = TcpStream::connect(addr);
// Connect again before writing
Expand All @@ -424,13 +424,13 @@ mod test {
let addr = next_test_ip6();
static MAX: int = 10;

do spawntask_immediately {
do spawntask {
let mut listener = TcpListener::bind(addr);
for int::range(0, MAX) |i| {
let stream = Cell::new(listener.accept());
rtdebug!("accepted");
// Start another task to handle the connection
do spawntask_immediately {
do spawntask {
let mut stream = stream.take();
let mut buf = [0];
stream.read(buf);
Expand All @@ -445,7 +445,7 @@ mod test {
fn connect(i: int, addr: IpAddr) {
if i == MAX { return }

do spawntask_immediately {
do spawntask {
rtdebug!("connecting");
let mut stream = TcpStream::connect(addr);
// Connect again before writing
Expand All @@ -463,13 +463,13 @@ mod test {
let addr = next_test_ip4();
static MAX: int = 10;

do spawntask_immediately {
do spawntask {
let mut listener = TcpListener::bind(addr);
for int::range(0, MAX) |_| {
let stream = Cell::new(listener.accept());
rtdebug!("accepted");
// Start another task to handle the connection
do spawntask_later {
do spawntask {
let mut stream = stream.take();
let mut buf = [0];
stream.read(buf);
Expand All @@ -484,7 +484,7 @@ mod test {
fn connect(i: int, addr: IpAddr) {
if i == MAX { return }

do spawntask_later {
do spawntask {
rtdebug!("connecting");
let mut stream = TcpStream::connect(addr);
// Connect again before writing
Expand All @@ -501,7 +501,7 @@ mod test {
let addr = next_test_ip6();
static MAX: int = 10;

do spawntask_immediately {
do spawntask {
let mut listener = TcpListener::bind(addr);
for int::range(0, MAX) |_| {
let stream = Cell::new(listener.accept());
Expand Down
Loading