diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2023-05-08 20:42:34 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-09 03:42:34 +0900 |
commit | 7da8b1d9bbc65a1794df4850954d22e654d49aee (patch) | |
tree | 3e03a04fa56dd57e67902a948b02ca31b59a00f3 | |
parent | df1ca4a158eda08846e11ceb03dd68d6fcffda75 (diff) |
Revert "perf(core): use jemalloc for V8 array buffer allocator (#18875)" (#19046)
This reverts commit 022aae9854bed6219d75eeb82fcf46652c21050d.
-rw-r--r-- | Cargo.lock | 1 | ||||
-rw-r--r-- | core/Cargo.toml | 3 | ||||
-rw-r--r-- | core/runtime.rs | 64 |
3 files changed, 0 insertions, 68 deletions
diff --git a/Cargo.lock b/Cargo.lock index c07936bd1..cee7665d7 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 77a1ca1a2..0bdac5703 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 bb77bb25a..fb4716e7c 100644 --- a/core/runtime.rs +++ b/core/runtime.rs @@ -72,48 +72,6 @@ struct IsolateAllocations { Option<(Box<RefCell<dyn Any>>, 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), |