Skip to content

Commit f1e9e38

Browse files
committed
---
yaml --- r: 42636 b: refs/heads/try c: 163b97b h: refs/heads/master v: v3
1 parent 814d994 commit f1e9e38

Some content is hidden

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

44 files changed

+653
-547
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
refs/heads/master: 19dfec2aaf746535de1521f68421f9980dbf25de
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 2f46b763da2c098913884f101b6d71d69af41b49
5-
refs/heads/try: e43cff6657b5ba4245480ede5230e3f00aa52185
5+
refs/heads/try: 163b97b7bb53b7a9753b5fbd9b28dc1e09337259
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: a810c03263670238bccd64cabb12a23a46e3a278

branches/try/src/libcore/pipes.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -280,17 +280,23 @@ extern mod rusti {
280280
// I get link errors. This is a bug that needs investigated more.
281281
#[doc(hidden)]
282282
pub fn atomic_xchng_rel(dst: &mut int, src: int) -> int {
283-
rusti::atomic_xchg_rel(dst, src)
283+
unsafe {
284+
rusti::atomic_xchg_rel(dst, src)
285+
}
284286
}
285287

286288
#[doc(hidden)]
287289
pub fn atomic_add_acq(dst: &mut int, src: int) -> int {
288-
rusti::atomic_xadd_acq(dst, src)
290+
unsafe {
291+
rusti::atomic_xadd_acq(dst, src)
292+
}
289293
}
290294

291295
#[doc(hidden)]
292296
pub fn atomic_sub_rel(dst: &mut int, src: int) -> int {
293-
rusti::atomic_xsub_rel(dst, src)
297+
unsafe {
298+
rusti::atomic_xsub_rel(dst, src)
299+
}
294300
}
295301

296302
#[doc(hidden)]

branches/try/src/libcore/private.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,10 @@ type rust_port_id = uint;
9393
type GlobalPtr = *libc::uintptr_t;
9494

9595
fn compare_and_swap(address: &mut int, oldval: int, newval: int) -> bool {
96-
let old = rusti::atomic_cxchg(address, oldval, newval);
97-
old == oldval
96+
unsafe {
97+
let old = rusti::atomic_cxchg(address, oldval, newval);
98+
old == oldval
99+
}
98100
}
99101

100102
/**

branches/try/src/libcore/repr.rs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -201,10 +201,12 @@ impl ReprVisitor {
201201

202202
#[inline(always)]
203203
fn visit_ptr_inner(ptr: *c_void, inner: *TyDesc) -> bool {
204-
let mut u = ReprVisitor(ptr, self.writer);
205-
let v = reflect::MovePtrAdaptor(move u);
206-
visit_tydesc(inner, (move v) as @TyVisitor);
207-
true
204+
unsafe {
205+
let mut u = ReprVisitor(ptr, self.writer);
206+
let v = reflect::MovePtrAdaptor(move u);
207+
visit_tydesc(inner, (move v) as @TyVisitor);
208+
true
209+
}
208210
}
209211

210212
#[inline(always)]
@@ -558,11 +560,13 @@ impl ReprVisitor : TyVisitor {
558560
}
559561

560562
pub fn write_repr<T>(writer: @Writer, object: &T) {
561-
let ptr = ptr::to_unsafe_ptr(object) as *c_void;
562-
let tydesc = intrinsic::get_tydesc::<T>();
563-
let mut u = ReprVisitor(ptr, writer);
564-
let v = reflect::MovePtrAdaptor(move u);
565-
visit_tydesc(tydesc, (move v) as @TyVisitor)
563+
unsafe {
564+
let ptr = ptr::to_unsafe_ptr(object) as *c_void;
565+
let tydesc = intrinsic::get_tydesc::<T>();
566+
let mut u = ReprVisitor(ptr, writer);
567+
let v = reflect::MovePtrAdaptor(move u);
568+
visit_tydesc(tydesc, (move v) as @TyVisitor)
569+
}
566570
}
567571

568572
#[test]

branches/try/src/libcore/task/mod.rs

Lines changed: 91 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -571,23 +571,29 @@ pub fn try<T:Owned>(f: fn~() -> T) -> Result<T,()> {
571571
pub fn yield() {
572572
//! Yield control to the task scheduler
573573
574-
let task_ = rt::rust_get_task();
575-
let killed = rt::rust_task_yield(task_);
576-
if killed && !failing() {
577-
fail ~"killed";
574+
unsafe {
575+
let task_ = rt::rust_get_task();
576+
let killed = rt::rust_task_yield(task_);
577+
if killed && !failing() {
578+
fail ~"killed";
579+
}
578580
}
579581
}
580582

581583
pub fn failing() -> bool {
582584
//! True if the running task has failed
583585
584-
rt::rust_task_is_unwinding(rt::rust_get_task())
586+
unsafe {
587+
rt::rust_task_is_unwinding(rt::rust_get_task())
588+
}
585589
}
586590

587591
pub fn get_task() -> Task {
588592
//! Get a handle to the running task
589593
590-
TaskHandle(rt::get_task_id())
594+
unsafe {
595+
TaskHandle(rt::get_task_id())
596+
}
591597
}
592598

593599
/**
@@ -608,7 +614,11 @@ pub fn get_task() -> Task {
608614
pub unsafe fn unkillable<U>(f: fn() -> U) -> U {
609615
struct AllowFailure {
610616
t: *rust_task,
611-
drop { rt::rust_task_allow_kill(self.t); }
617+
drop {
618+
unsafe {
619+
rt::rust_task_allow_kill(self.t);
620+
}
621+
}
612622
}
613623

614624
fn AllowFailure(t: *rust_task) -> AllowFailure{
@@ -617,17 +627,23 @@ pub unsafe fn unkillable<U>(f: fn() -> U) -> U {
617627
}
618628
}
619629

620-
let t = rt::rust_get_task();
621-
let _allow_failure = AllowFailure(t);
622-
rt::rust_task_inhibit_kill(t);
623-
f()
630+
unsafe {
631+
let t = rt::rust_get_task();
632+
let _allow_failure = AllowFailure(t);
633+
rt::rust_task_inhibit_kill(t);
634+
f()
635+
}
624636
}
625637

626638
/// The inverse of unkillable. Only ever to be used nested in unkillable().
627639
pub unsafe fn rekillable<U>(f: fn() -> U) -> U {
628640
struct DisallowFailure {
629641
t: *rust_task,
630-
drop { rt::rust_task_inhibit_kill(self.t); }
642+
drop {
643+
unsafe {
644+
rt::rust_task_inhibit_kill(self.t);
645+
}
646+
}
631647
}
632648

633649
fn DisallowFailure(t: *rust_task) -> DisallowFailure {
@@ -636,10 +652,12 @@ pub unsafe fn rekillable<U>(f: fn() -> U) -> U {
636652
}
637653
}
638654

639-
let t = rt::rust_get_task();
640-
let _allow_failure = DisallowFailure(t);
641-
rt::rust_task_allow_kill(t);
642-
f()
655+
unsafe {
656+
let t = rt::rust_get_task();
657+
let _allow_failure = DisallowFailure(t);
658+
rt::rust_task_allow_kill(t);
659+
f()
660+
}
643661
}
644662

645663
/**
@@ -650,8 +668,10 @@ pub unsafe fn atomically<U>(f: fn() -> U) -> U {
650668
struct DeferInterrupts {
651669
t: *rust_task,
652670
drop {
653-
rt::rust_task_allow_yield(self.t);
654-
rt::rust_task_allow_kill(self.t);
671+
unsafe {
672+
rt::rust_task_allow_yield(self.t);
673+
rt::rust_task_allow_kill(self.t);
674+
}
655675
}
656676
}
657677

@@ -661,11 +681,13 @@ pub unsafe fn atomically<U>(f: fn() -> U) -> U {
661681
}
662682
}
663683

664-
let t = rt::rust_get_task();
665-
let _interrupts = DeferInterrupts(t);
666-
rt::rust_task_inhibit_kill(t);
667-
rt::rust_task_inhibit_yield(t);
668-
f()
684+
unsafe {
685+
let t = rt::rust_get_task();
686+
let _interrupts = DeferInterrupts(t);
687+
rt::rust_task_inhibit_kill(t);
688+
rt::rust_task_inhibit_yield(t);
689+
f()
690+
}
669691
}
670692

671693
#[test] #[should_fail] #[ignore(cfg(windows))]
@@ -908,18 +930,22 @@ fn test_spawn_sched() {
908930
let ch = oldcomm::Chan(&po);
909931

910932
fn f(i: int, ch: oldcomm::Chan<()>) {
911-
let parent_sched_id = rt::rust_get_sched_id();
933+
unsafe {
934+
let parent_sched_id = rt::rust_get_sched_id();
912935

913-
do spawn_sched(SingleThreaded) {
914-
let child_sched_id = rt::rust_get_sched_id();
915-
assert parent_sched_id != child_sched_id;
916-
917-
if (i == 0) {
918-
oldcomm::send(ch, ());
919-
} else {
920-
f(i - 1, ch);
921-
}
922-
};
936+
do spawn_sched(SingleThreaded) {
937+
unsafe {
938+
let child_sched_id = rt::rust_get_sched_id();
939+
assert parent_sched_id != child_sched_id;
940+
941+
if (i == 0) {
942+
oldcomm::send(ch, ());
943+
} else {
944+
f(i - 1, ch);
945+
}
946+
}
947+
};
948+
}
923949

924950
}
925951
f(10, ch);
@@ -932,13 +958,17 @@ fn test_spawn_sched_childs_on_same_sched() {
932958
let ch = oldcomm::Chan(&po);
933959

934960
do spawn_sched(SingleThreaded) {
935-
let parent_sched_id = rt::rust_get_sched_id();
936-
do spawn {
937-
let child_sched_id = rt::rust_get_sched_id();
938-
// This should be on the same scheduler
939-
assert parent_sched_id == child_sched_id;
940-
oldcomm::send(ch, ());
941-
};
961+
unsafe {
962+
let parent_sched_id = rt::rust_get_sched_id();
963+
do spawn {
964+
unsafe {
965+
let child_sched_id = rt::rust_get_sched_id();
966+
// This should be on the same scheduler
967+
assert parent_sched_id == child_sched_id;
968+
oldcomm::send(ch, ());
969+
}
970+
};
971+
}
942972
};
943973

944974
oldcomm::recv(po);
@@ -1185,10 +1215,12 @@ fn test_sched_thread_per_core() {
11851215
let (port, chan) = pipes::stream();
11861216

11871217
do spawn_sched(ThreadPerCore) |move chan| {
1188-
let cores = rt::rust_num_threads();
1189-
let reported_threads = rt::rust_sched_threads();
1190-
assert(cores as uint == reported_threads as uint);
1191-
chan.send(());
1218+
unsafe {
1219+
let cores = rt::rust_num_threads();
1220+
let reported_threads = rt::rust_sched_threads();
1221+
assert(cores as uint == reported_threads as uint);
1222+
chan.send(());
1223+
}
11921224
}
11931225

11941226
port.recv();
@@ -1199,22 +1231,24 @@ fn test_spawn_thread_on_demand() {
11991231
let (port, chan) = pipes::stream();
12001232

12011233
do spawn_sched(ManualThreads(2)) |move chan| {
1202-
let max_threads = rt::rust_sched_threads();
1203-
assert(max_threads as int == 2);
1204-
let running_threads = rt::rust_sched_current_nonlazy_threads();
1205-
assert(running_threads as int == 1);
1234+
unsafe {
1235+
let max_threads = rt::rust_sched_threads();
1236+
assert(max_threads as int == 2);
1237+
let running_threads = rt::rust_sched_current_nonlazy_threads();
1238+
assert(running_threads as int == 1);
12061239

1207-
let (port2, chan2) = pipes::stream();
1240+
let (port2, chan2) = pipes::stream();
12081241

1209-
do spawn() |move chan2| {
1210-
chan2.send(());
1211-
}
1242+
do spawn() |move chan2| {
1243+
chan2.send(());
1244+
}
12121245

1213-
let running_threads2 = rt::rust_sched_current_nonlazy_threads();
1214-
assert(running_threads2 as int == 2);
1246+
let running_threads2 = rt::rust_sched_current_nonlazy_threads();
1247+
assert(running_threads2 as int == 2);
12151248

1216-
port2.recv();
1217-
chan.send(());
1249+
port2.recv();
1250+
chan.send(());
1251+
}
12181252
}
12191253

12201254
port.recv();

0 commit comments

Comments
 (0)