aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api
diff options
context:
space:
mode:
authorbors[bot] <bors[bot]@users.noreply.github.com>2019-01-28 12:52:45 +0000
committerbors[bot] <bors[bot]@users.noreply.github.com>2019-01-28 12:52:45 +0000
commitebb19bb95c79671d5ef1e21a8fcb4daafc356490 (patch)
treedaa75c52c641577945c44b0d4f9838772341988f /crates/ra_ide_api
parent3432c4366f578b4f0a9a6e0384292d72e43ebf03 (diff)
parent2ee08098a6315aaab07f14c67db024ee0e95af3e (diff)
Merge #697
697: opt-in jemalloc r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates/ra_ide_api')
-rw-r--r--crates/ra_ide_api/Cargo.toml8
-rw-r--r--crates/ra_ide_api/src/lib.rs1
-rw-r--r--crates/ra_ide_api/src/status.rs9
3 files changed, 16 insertions, 2 deletions
diff --git a/crates/ra_ide_api/Cargo.toml b/crates/ra_ide_api/Cargo.toml
index ad9dd2088..908899129 100644
--- a/crates/ra_ide_api/Cargo.toml
+++ b/crates/ra_ide_api/Cargo.toml
@@ -14,8 +14,9 @@ fst = "0.3.1"
14rustc-hash = "1.0" 14rustc-hash = "1.0"
15parking_lot = "0.7.0" 15parking_lot = "0.7.0"
16unicase = "2.2.0" 16unicase = "2.2.0"
17jemallocator = "0.1.9" 17
18jemalloc-ctl = "0.2.0" 18jemallocator = { version = "0.1.9", optional = true }
19jemalloc-ctl = { version = "0.2.0", optional = true }
19 20
20ra_syntax = { path = "../ra_syntax" } 21ra_syntax = { path = "../ra_syntax" }
21ra_ide_api_light = { path = "../ra_ide_api_light" } 22ra_ide_api_light = { path = "../ra_ide_api_light" }
@@ -26,3 +27,6 @@ test_utils = { path = "../test_utils" }
26 27
27[dev-dependencies] 28[dev-dependencies]
28insta = "0.5.1" 29insta = "0.5.1"
30
31[features]
32jemalloc = [ "jemallocator", "jemalloc-ctl" ]
diff --git a/crates/ra_ide_api/src/lib.rs b/crates/ra_ide_api/src/lib.rs
index dc531e068..51947e4cc 100644
--- a/crates/ra_ide_api/src/lib.rs
+++ b/crates/ra_ide_api/src/lib.rs
@@ -61,6 +61,7 @@ pub use ra_db::{
61 61
62// We use jemalloc mainly to get heap usage statistics, actual performance 62// We use jemalloc mainly to get heap usage statistics, actual performance
63// differnece is not measures. 63// differnece is not measures.
64#[cfg(feature = "jemalloc")]
64#[global_allocator] 65#[global_allocator]
65static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc; 66static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;
66 67
diff --git a/crates/ra_ide_api/src/status.rs b/crates/ra_ide_api/src/status.rs
index c3e5745d5..bd355dd78 100644
--- a/crates/ra_ide_api/src/status.rs
+++ b/crates/ra_ide_api/src/status.rs
@@ -133,6 +133,7 @@ struct MemoryStats {
133} 133}
134 134
135impl MemoryStats { 135impl MemoryStats {
136 #[cfg(feature = "jemalloc")]
136 fn current() -> MemoryStats { 137 fn current() -> MemoryStats {
137 jemalloc_ctl::epoch().unwrap(); 138 jemalloc_ctl::epoch().unwrap();
138 MemoryStats { 139 MemoryStats {
@@ -140,6 +141,14 @@ impl MemoryStats {
140 resident: Bytes(jemalloc_ctl::stats::resident().unwrap()), 141 resident: Bytes(jemalloc_ctl::stats::resident().unwrap()),
141 } 142 }
142 } 143 }
144
145 #[cfg(not(feature = "jemalloc"))]
146 fn current() -> MemoryStats {
147 MemoryStats {
148 allocated: Bytes(0),
149 resident: Bytes(0),
150 }
151 }
143} 152}
144 153
145impl fmt::Display for MemoryStats { 154impl fmt::Display for MemoryStats {