diff --git a/src/libcore/sys.rs b/src/libcore/sys.rs index 05616b0dcf3..c90b48a9342 100644 --- a/src/libcore/sys.rs +++ b/src/libcore/sys.rs @@ -20,7 +20,6 @@ type rust_cond_lock = *libc::c_void; #[abi = "cdecl"] native mod rustrt { - pure fn refcount(t: *()) -> libc::intptr_t; fn unsupervise(); pure fn shape_log_str(t: *sys::type_desc, data: *()) -> str; @@ -71,10 +70,11 @@ pure fn pref_align_of() -> uint { unchecked { rusti::pref_align_of::() } } -#[doc = "Returns the refcount of a shared box"] -pure fn refcount(t: @T) -> uint { +#[doc = "Returns the refcount of a shared box (as just before calling this)"] +pure fn refcount(+t: @T) -> uint { unsafe { - ret rustrt::refcount(unsafe::reinterpret_cast(t)) as uint; + let ref_ptr: *uint = unsafe::reinterpret_cast(t); + *ref_ptr - 1 } } diff --git a/src/libstd/dbg.rs b/src/libstd/dbg.rs index b0abd8cb73a..39746eae55e 100644 --- a/src/libstd/dbg.rs +++ b/src/libstd/dbg.rs @@ -8,7 +8,6 @@ export debug_box; export debug_tag; export debug_fn; export ptr_cast; -export refcount; export breakpoint; #[abi = "cdecl"] @@ -48,11 +47,6 @@ unsafe fn ptr_cast(x: @T) -> @U { reinterpret_cast(x))) } -fn refcount(a: @T) -> uint unsafe { - let p: *uint = unsafe::reinterpret_cast(a); - ret *p; -} - #[doc = "Triggers a debugger breakpoint"] fn breakpoint() { rustrt::rust_dbg_breakpoint(); diff --git a/src/rt/rust_builtin.cpp b/src/rt/rust_builtin.cpp index 7ffaccece64..04d11e020ea 100644 --- a/src/rt/rust_builtin.cpp +++ b/src/rt/rust_builtin.cpp @@ -127,13 +127,6 @@ rust_env_pairs() { } #endif -extern "C" CDECL intptr_t -refcount(intptr_t *v) { - // Passed-in value has refcount 1 too high - // because it was ref'ed while making the call. - return (*v) - 1; -} - extern "C" CDECL void unsupervise() { rust_task *task = rust_get_current_task(); diff --git a/src/rt/rustrt.def.in b/src/rt/rustrt.def.in index 78ee8e41944..0be74d20e24 100644 --- a/src/rt/rustrt.def.in +++ b/src/rt/rustrt.def.in @@ -29,7 +29,6 @@ rand_new rand_new_seeded rand_next rand_seed -refcount rust_get_sched_id rust_new_sched rust_new_task_in_sched diff --git a/src/test/run-pass/alt-pattern-drop.rs b/src/test/run-pass/alt-pattern-drop.rs index 0af65bd1827..caa2223671c 100644 --- a/src/test/run-pass/alt-pattern-drop.rs +++ b/src/test/run-pass/alt-pattern-drop.rs @@ -1,14 +1,12 @@ // -*- rust -*- -use std; - -import std::dbg; +import core::sys; enum t { make_t(@int), clam, } fn foo(s: @int) { - let count = dbg::refcount(s); + let count = sys::refcount(s); let x: t = make_t(s); // ref up alt x { @@ -18,17 +16,17 @@ fn foo(s: @int) { } _ { #debug("?"); fail; } } - log(debug, dbg::refcount(s)); - assert (dbg::refcount(s) == count + 1u); + log(debug, sys::refcount(s)); + assert (sys::refcount(s) == count + 1u); } fn main() { let s: @int = @0; // ref up - let count = dbg::refcount(s); + let count = sys::refcount(s); foo(s); // ref up then down - log(debug, dbg::refcount(s)); - assert (dbg::refcount(s) == count); + log(debug, sys::refcount(s)); + assert (sys::refcount(s) == count); } diff --git a/src/test/run-pass/morestack6.rs b/src/test/run-pass/morestack6.rs index 10fe6d9a340..3b0195511ef 100644 --- a/src/test/run-pass/morestack6.rs +++ b/src/test/run-pass/morestack6.rs @@ -11,7 +11,6 @@ native mod rustrt { fn unsupervise(); fn last_os_error() -> str; fn rust_getcwd() -> str; - fn refcount(box: @int); fn get_task_id(); fn sched_threads(); fn rust_get_task(); @@ -20,7 +19,6 @@ native mod rustrt { fn calllink01() { rustrt::unsupervise(); } fn calllink02() { rustrt::last_os_error(); } fn calllink03() { rustrt::rust_getcwd(); } -fn calllink04() { rustrt::refcount(@0); } fn calllink08() { rustrt::get_task_id(); } fn calllink09() { rustrt::sched_threads(); } fn calllink10() { rustrt::rust_get_task(); } @@ -52,7 +50,6 @@ fn main() { calllink01, calllink02, calllink03, - calllink04, calllink08, calllink09, calllink10 @@ -63,4 +60,4 @@ fn main() { let frame_backoff = rng.next() % 10u32 + 1u32; task::try {|| runtest(f, frame_backoff) }; } -} \ No newline at end of file +}