From 4c07550d466c1856c25073d7d65c2302780e84ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Mon, 8 May 2023 20:42:34 +0200 Subject: [PATCH] Revert "perf(core): use jemalloc for V8 array buffer allocator (#18875)" (#19046) This reverts commit 022aae9854bed6219d75eeb82fcf46652c21050d. --- Cargo.lock | 1 - core/Cargo.toml | 3 --- core/runtime.rs | 64 ------------------------------------------------- 3 files changed, 68 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c07936bd1a..cee7665d72 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -876,7 +876,6 @@ dependencies = [ "serde_v8", "smallvec", "sourcemap", - "tikv-jemalloc-sys", "tokio", "url", "v8", diff --git a/core/Cargo.toml b/core/Cargo.toml index 77a1ca1a21..0bdac5703f 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -39,9 +39,6 @@ sourcemap = "6.1" url.workspace = true v8.workspace = true -[target.'cfg(not(target_env = "msvc"))'.dependencies] -tikv-jemalloc-sys.workspace = true - [[example]] name = "http_bench_json_ops" path = "examples/http_bench_json_ops/main.rs" diff --git a/core/runtime.rs b/core/runtime.rs index bb77bb25a8..fb4716e7ca 100644 --- a/core/runtime.rs +++ b/core/runtime.rs @@ -72,48 +72,6 @@ struct IsolateAllocations { Option<(Box>, v8::NearHeapLimitCallback)>, } -/// A custom allocator for array buffers for V8. It uses `jemalloc` so it's -/// not available on Windows. -#[cfg(not(target_env = "msvc"))] -mod custom_allocator { - use std::ffi::c_void; - - pub struct RustAllocator; - - pub unsafe extern "C" fn allocate( - _alloc: &RustAllocator, - n: usize, - ) -> *mut c_void { - tikv_jemalloc_sys::calloc(1, n) - } - - pub unsafe extern "C" fn allocate_uninitialized( - _alloc: &RustAllocator, - n: usize, - ) -> *mut c_void { - tikv_jemalloc_sys::malloc(n) - } - - pub unsafe extern "C" fn free( - _alloc: &RustAllocator, - data: *mut c_void, - _n: usize, - ) { - tikv_jemalloc_sys::free(data) - } - - pub unsafe extern "C" fn reallocate( - _alloc: &RustAllocator, - prev: *mut c_void, - _oldlen: usize, - newlen: usize, - ) -> *mut c_void { - tikv_jemalloc_sys::realloc(prev, newlen) - } - - pub unsafe extern "C" fn drop(_alloc: *const RustAllocator) {} -} - /// A single execution context of JavaScript. Corresponds roughly to the "Web /// Worker" concept in the DOM. A JsRuntime is a Future that can be used with /// an event loop (Tokio, async_std). @@ -435,20 +393,6 @@ impl JsRuntime { } isolate } else { - #[cfg(not(target_env = "msvc"))] - let vtable: &'static v8::RustAllocatorVtable< - custom_allocator::RustAllocator, - > = &v8::RustAllocatorVtable { - allocate: custom_allocator::allocate, - allocate_uninitialized: custom_allocator::allocate_uninitialized, - free: custom_allocator::free, - reallocate: custom_allocator::reallocate, - drop: custom_allocator::drop, - }; - #[cfg(not(target_env = "msvc"))] - let allocator = Arc::new(custom_allocator::RustAllocator); - - #[allow(unused_mut)] let mut params = options .create_params .take() @@ -460,14 +404,6 @@ impl JsRuntime { }) .external_references(&**refs); - #[cfg(not(target_env = "msvc"))] - // SAFETY: We are leaking the created `allocator` variable so we're sure - // it will outlive the created isolate. We also made sure that the vtable - // is correct. - let mut params = params.array_buffer_allocator(unsafe { - v8::new_rust_allocator(Arc::into_raw(allocator), vtable) - }); - if let Some(snapshot) = options.startup_snapshot { params = match snapshot { Snapshot::Static(data) => params.snapshot_blob(data),