diff options
| author | Brian Anderson <banderson@mozilla.com> | 2013-06-19 16:08:07 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2013-06-19 16:08:07 -0700 |
| commit | 5086c0850ebdd8407901d108f312ab141e4a4a18 (patch) | |
| tree | fb43dfb0dbb3a73234f057ca58a46033d6783b95 | |
| parent | e1555f9b5628af2b6c6ed344cad621399cb7684d (diff) | |
| download | rust-5086c0850ebdd8407901d108f312ab141e4a4a18.tar.gz rust-5086c0850ebdd8407901d108f312ab141e4a4a18.zip | |
std::rt: Update GC metadata in init
| -rw-r--r-- | src/libstd/rt/mod.rs | 5 | ||||
| -rw-r--r-- | src/rt/rust_gc_metadata.cpp | 5 | ||||
| -rw-r--r-- | src/rt/rustrt.def.in | 1 |
3 files changed, 11 insertions, 0 deletions
diff --git a/src/libstd/rt/mod.rs b/src/libstd/rt/mod.rs index dd4c71eca74..a80fb15bad7 100644 --- a/src/libstd/rt/mod.rs +++ b/src/libstd/rt/mod.rs @@ -186,6 +186,11 @@ pub fn start(_argc: int, _argv: **u8, crate_map: *u8, main: ~fn()) -> int { /// based on the RUST_LOG environment variable. pub fn init(crate_map: *u8) { logging::init(crate_map); + unsafe { rust_update_gc_metadata(crate_map) } + + extern { + fn rust_update_gc_metadata(crate_map: *u8); + } } /// One-time runtime cleanup. diff --git a/src/rt/rust_gc_metadata.cpp b/src/rt/rust_gc_metadata.cpp index fbf0575b31d..e37856255a7 100644 --- a/src/rt/rust_gc_metadata.cpp +++ b/src/rt/rust_gc_metadata.cpp @@ -79,6 +79,11 @@ rust_gc_metadata() { return (void *)global_safe_points; } +extern "C" CDECL void +rust_update_gc_metadata(const void* map) { + update_gc_metadata(map); +} + // // Local Variables: // mode: C++ diff --git a/src/rt/rustrt.def.in b/src/rt/rustrt.def.in index 9b49583519e..c93d29f6148 100644 --- a/src/rt/rustrt.def.in +++ b/src/rt/rustrt.def.in @@ -178,6 +178,7 @@ rust_call_tydesc_glue tdefl_compress_mem_to_heap tinfl_decompress_mem_to_heap rust_gc_metadata +rust_update_gc_metadata rust_uv_ip4_port rust_uv_ip6_port rust_uv_tcp_getpeername |
