diff --git a/Cargo.toml b/Cargo.toml index 79c9b57532d6..9861af1f8eae 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,10 +35,9 @@ smallvec = "1.6.1" #gimli = { path = "../" } [features] -default = ["jit", "inline_asm", "jemalloc"] +default = ["jit", "inline_asm"] jit = ["cranelift-jit", "libloading"] inline_asm = [] -jemalloc = [] [profile.dev] # By compiling dependencies with optimizations, performing tests gets much faster. diff --git a/src/bin/cg_clif.rs b/src/bin/cg_clif.rs index b8d6958b3b25..983839d48d2d 100644 --- a/src/bin/cg_clif.rs +++ b/src/bin/cg_clif.rs @@ -1,7 +1,5 @@ #![feature(rustc_private)] -#[cfg(feature = "jemalloc")] -extern crate jemalloc_sys; extern crate rustc_data_structures; extern crate rustc_driver; extern crate rustc_interface; @@ -35,46 +33,6 @@ impl rustc_driver::Callbacks for CraneliftPassesCallbacks { } fn main() { - // Pull in jemalloc when enabled. - // - // Note that we're pulling in a static copy of jemalloc which means that to - // pull it in we need to actually reference its symbols for it to get - // linked. The two crates we link to here, std and rustc_driver, are both - // dynamic libraries. That means to pull in jemalloc we need to actually - // reference allocation symbols one way or another (as this file is the only - // object code in the rustc executable). - #[cfg(feature = "jemalloc")] - { - use std::os::raw::{c_int, c_void}; - #[used] - static _F1: unsafe extern "C" fn(usize, usize) -> *mut c_void = jemalloc_sys::calloc; - #[used] - static _F2: unsafe extern "C" fn(*mut *mut c_void, usize, usize) -> c_int = - jemalloc_sys::posix_memalign; - #[used] - static _F3: unsafe extern "C" fn(usize, usize) -> *mut c_void = jemalloc_sys::aligned_alloc; - #[used] - static _F4: unsafe extern "C" fn(usize) -> *mut c_void = jemalloc_sys::malloc; - #[used] - static _F5: unsafe extern "C" fn(*mut c_void, usize) -> *mut c_void = jemalloc_sys::realloc; - #[used] - static _F6: unsafe extern "C" fn(*mut c_void) = jemalloc_sys::free; - - // On OSX, jemalloc doesn't directly override malloc/free, but instead - // registers itself with the allocator's zone APIs in a ctor. However, - // the linker doesn't seem to consider ctors as "used" when statically - // linking, so we need to explicitly depend on the function. - #[cfg(target_os = "macos")] - { - extern "C" { - fn _rjem_je_zone_register(); - } - - #[used] - static _F7: unsafe extern "C" fn() = _rjem_je_zone_register; - } - } - let start_time = std::time::Instant::now(); let start_rss = get_resident_set_size(); rustc_driver::init_rustc_env_logger();