diff options
author | Simon Sapin <simon.sapin@exyr.org> | 2017-10-18 13:38:07 +0200 |
---|---|---|
committer | Simon Sapin <simon.sapin@exyr.org> | 2017-10-19 09:52:50 +0200 |
commit | 959ce482dd9f2f8c469964b8c258bd3e45f7ca2b (patch) | |
tree | b20d798d3ee0f78ba2f95012e111aaf17bb56462 /components/script | |
parent | 4c538b642e4bdfbf42c522c5a59c258a6d14546e (diff) | |
download | servo-959ce482dd9f2f8c469964b8c258bd3e45f7ca2b.tar.gz servo-959ce482dd9f2f8c469964b8c258bd3e45f7ca2b.zip |
Stop relying on linking details of std’s default allocator
We’ve been bitten before by symbol names changing:
https://github.com/servo/heapsize/pull/46
and upstream is planning to stop using jemalloc by default:
https://github.com/rust-lang/rust/issues/33082#issuecomment-309781465
So use the (relatively) new `#[global_allocator]` attribute
to explicitly select the system allocator on Windows
and jemalloc (now in an external crate) on other platforms.
This choice matches current defaults.
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/Cargo.toml | 3 | ||||
-rw-r--r-- | components/script/lib.rs | 1 | ||||
-rw-r--r-- | components/script/script_thread.rs | 4 |
3 files changed, 5 insertions, 3 deletions
diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml index 8c9e9613ede..191a325f60a 100644 --- a/components/script/Cargo.toml +++ b/components/script/Cargo.toml @@ -13,7 +13,7 @@ path = "lib.rs" [features] debugmozjs = ['js/debugmozjs'] -unstable = [] +unstable = ["servo_allocator/unstable"] [build-dependencies] cmake = "0.1" @@ -77,6 +77,7 @@ script_plugins = {path = "../script_plugins"} script_traits = {path = "../script_traits"} selectors = { path = "../selectors" } serde = "1.0" +servo_allocator = {path = "../allocator"} servo_arc = {path = "../servo_arc"} servo_atoms = {path = "../atoms"} servo_config = {path = "../config"} diff --git a/components/script/lib.rs b/components/script/lib.rs index edf954d4c96..df9679bcaf2 100644 --- a/components/script/lib.rs +++ b/components/script/lib.rs @@ -78,6 +78,7 @@ extern crate script_layout_interface; extern crate script_traits; extern crate selectors; extern crate serde; +extern crate servo_allocator; extern crate servo_arc; #[macro_use] extern crate servo_atoms; extern crate servo_config; diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs index e5a9a0401aa..991ec777315 100644 --- a/components/script/script_thread.rs +++ b/components/script/script_thread.rs @@ -73,7 +73,7 @@ use js::jsapi::{JSAutoCompartment, JSContext, JS_SetWrapObjectCallbacks}; use js::jsapi::{JSTracer, SetWindowProxyClass}; use js::jsval::UndefinedValue; use js::rust::Runtime; -use malloc_size_of::{malloc_size_of, MallocSizeOfOps}; +use malloc_size_of::MallocSizeOfOps; use mem::malloc_size_of_including_self; use metrics::PaintTimeMetrics; use microtask::{MicrotaskQueue, Microtask}; @@ -1506,7 +1506,7 @@ impl ScriptThread { let mut reports = vec![]; // Servo uses vanilla jemalloc, which doesn't have a // malloc_enclosing_size_of function. - let mut ops = MallocSizeOfOps::new(malloc_size_of, None, None); + let mut ops = MallocSizeOfOps::new(::servo_allocator::usable_size, None, None); for (_, document) in self.documents.borrow().iter() { let current_url = document.url(); |