diff --git a/components/profile/Cargo.toml b/components/profile/Cargo.toml index 7fbe3db8bca..a02914db61d 100644 --- a/components/profile/Cargo.toml +++ b/components/profile/Cargo.toml @@ -9,6 +9,9 @@ publish = false name = "profile" path = "lib.rs" +[features] +unstable = [] + [dependencies] profile_traits = {path = "../profile_traits"} influent = "0.4" diff --git a/components/profile/lib.rs b/components/profile/lib.rs index 5573907a1c9..96b8edb7e17 100644 --- a/components/profile/lib.rs +++ b/components/profile/lib.rs @@ -2,16 +2,17 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#![cfg_attr(not(target_os = "windows"), feature(alloc_jemalloc))] +#![cfg_attr(all(feature = "unstable", not(target_os = "windows")), feature(alloc_jemalloc))] #![deny(unsafe_code)] #[allow(unused_extern_crates)] -#[cfg(not(target_os = "windows"))] +#[cfg(all(feature = "unstable", not(target_os = "windows")))] extern crate alloc_jemalloc; extern crate heartbeats_simple; extern crate influent; extern crate ipc_channel; +#[allow(unused_extern_crates)] #[cfg(not(target_os = "windows"))] extern crate libc; #[macro_use] diff --git a/components/profile/mem.rs b/components/profile/mem.rs index 51d51fa23e9..39d3f3ad084 100644 --- a/components/profile/mem.rs +++ b/components/profile/mem.rs @@ -353,14 +353,16 @@ impl ReportsForest { //--------------------------------------------------------------------------- mod system_reporter { - #[cfg(not(target_os = "windows"))] - use libc::{c_char, c_int, c_void, size_t}; + #[cfg(all(feature = "unstable", not(target_os = "windows")))] + use libc::{c_char, c_void, size_t}; + #[cfg(target_os = "linux")] + use libc::c_int; use profile_traits::mem::{Report, ReportKind, ReporterRequest}; - #[cfg(not(target_os = "windows"))] + #[cfg(all(feature = "unstable", not(target_os = "windows")))] use std::ffi::CString; - #[cfg(not(target_os = "windows"))] + #[cfg(all(feature = "unstable", not(target_os = "windows")))] use std::mem::size_of; - #[cfg(not(target_os = "windows"))] + #[cfg(all(feature = "unstable", not(target_os = "windows")))] use std::ptr::null_mut; use super::{JEMALLOC_HEAP_ALLOCATED_STR, SYSTEM_HEAP_ALLOCATED_STR}; #[cfg(target_os = "macos")] @@ -457,14 +459,14 @@ mod system_reporter { None } - #[cfg(not(target_os = "windows"))] + #[cfg(all(feature = "unstable", not(target_os = "windows")))] extern { #[cfg_attr(any(target_os = "macos", target_os = "android"), link_name = "je_mallctl")] fn mallctl(name: *const c_char, oldp: *mut c_void, oldlenp: *mut size_t, - newp: *mut c_void, newlen: size_t) -> c_int; + newp: *mut c_void, newlen: size_t) -> ::libc::c_int; } - #[cfg(not(target_os = "windows"))] + #[cfg(all(feature = "unstable", not(target_os = "windows")))] fn jemalloc_stat(value_name: &str) -> Option { // Before we request the measurement of interest, we first send an "epoch" // request. Without that jemalloc gives cached statistics(!) which can be @@ -500,7 +502,7 @@ mod system_reporter { Some(value as usize) } - #[cfg(target_os = "windows")] + #[cfg(any(target_os = "windows", not(feature = "unstable")))] fn jemalloc_stat(_value_name: &str) -> Option { None } diff --git a/components/servo/Cargo.toml b/components/servo/Cargo.toml index 016ccc43a76..18837d14078 100644 --- a/components/servo/Cargo.toml +++ b/components/servo/Cargo.toml @@ -26,6 +26,7 @@ unstable = [ "compositing/unstable", "constellation/unstable", "gfx/unstable", + "profile/unstable", ] [dependencies]