diff options
| author | bors <bors@rust-lang.org> | 2013-08-23 18:41:30 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-08-23 18:41:30 -0700 |
| commit | f9979247d1d69c1a8fb7cd1d2829a629baf9d965 (patch) | |
| tree | f0113632549a4b009cb8a37cb2ef3de73d69c9cc /src/libstd/rt | |
| parent | 7b5a91f4b346b99b4e9171eb8deb52d9bf2525ea (diff) | |
| parent | 9cdfe1e6039598961838ba2cc88a6ed6aa5449bf (diff) | |
| download | rust-f9979247d1d69c1a8fb7cd1d2829a629baf9d965.tar.gz rust-f9979247d1d69c1a8fb7cd1d2829a629baf9d965.zip | |
auto merge of #8705 : brson/rust/lesscxx, r=graydon
Diffstat (limited to 'src/libstd/rt')
| -rw-r--r-- | src/libstd/rt/local_heap.rs | 7 | ||||
| -rw-r--r-- | src/libstd/rt/mod.rs | 3 | ||||
| -rw-r--r-- | src/libstd/rt/util.rs | 21 |
3 files changed, 7 insertions, 24 deletions
diff --git a/src/libstd/rt/local_heap.rs b/src/libstd/rt/local_heap.rs index bca1b4a70f4..aa8c5dd4674 100644 --- a/src/libstd/rt/local_heap.rs +++ b/src/libstd/rt/local_heap.rs @@ -40,12 +40,10 @@ impl LocalHeap { #[fixed_stack_segment] #[inline(never)] pub fn new() -> LocalHeap { unsafe { - // Don't need synchronization for the single-threaded local heap - let synchronized = false as uintptr_t; // XXX: These usually come from the environment let detailed_leaks = false as uintptr_t; let poison_on_free = false as uintptr_t; - let region = rust_new_memory_region(synchronized, detailed_leaks, poison_on_free); + let region = rust_new_memory_region(detailed_leaks, poison_on_free); assert!(region.is_not_null()); let boxed = rust_new_boxed_region(region, poison_on_free); assert!(boxed.is_not_null()); @@ -109,8 +107,7 @@ pub fn live_allocs() -> *raw::Box<()> { extern { #[fast_ffi] - fn rust_new_memory_region(synchronized: uintptr_t, - detailed_leaks: uintptr_t, + fn rust_new_memory_region(detailed_leaks: uintptr_t, poison_on_free: uintptr_t) -> *MemoryRegion; #[fast_ffi] fn rust_delete_memory_region(region: *MemoryRegion); diff --git a/src/libstd/rt/mod.rs b/src/libstd/rt/mod.rs index 8b3e65b57ab..ead0fb63793 100644 --- a/src/libstd/rt/mod.rs +++ b/src/libstd/rt/mod.rs @@ -224,10 +224,7 @@ pub fn init(argc: int, argv: **u8, crate_map: *u8) { args::init(argc, argv); env::init(); logging::init(crate_map); - rust_update_gc_metadata(crate_map); } - - externfn!(fn rust_update_gc_metadata(crate_map: *u8)); } /// One-time runtime cleanup. diff --git a/src/libstd/rt/util.rs b/src/libstd/rt/util.rs index 1f29830aa04..f2ede8872c2 100644 --- a/src/libstd/rt/util.rs +++ b/src/libstd/rt/util.rs @@ -14,6 +14,7 @@ use libc; use option::{Some, None}; use os; use str::StrSlice; +use unstable::atomics::{AtomicInt, INIT_ATOMIC_INT, SeqCst}; #[cfg(target_os="macos")] use unstable::running_on_valgrind; @@ -129,24 +130,12 @@ memory and partly incapable of presentation to others.", } } -pub fn set_exit_status(code: int) { - #[fixed_stack_segment]; #[inline(never)]; - unsafe { - return rust_set_exit_status_newrt(code as libc::uintptr_t); - } +static mut EXIT_STATUS: AtomicInt = INIT_ATOMIC_INT; - extern { - fn rust_set_exit_status_newrt(code: libc::uintptr_t); - } +pub fn set_exit_status(code: int) { + unsafe { EXIT_STATUS.store(code, SeqCst) } } pub fn get_exit_status() -> int { - #[fixed_stack_segment]; #[inline(never)]; - unsafe { - return rust_get_exit_status_newrt() as int; - } - - extern { - fn rust_get_exit_status_newrt() -> libc::uintptr_t; - } + unsafe { EXIT_STATUS.load(SeqCst) } } |
