From cd0311b26fb320eeb1440744d50349d426815eb2 Mon Sep 17 00:00:00 2001 From: Schrodinger ZHU Yifan Date: Thu, 18 Nov 2021 00:02:47 +0800 Subject: [PATCH] Nits for rust release (#419) * adjust gitignore Signed-off-by: SchrodingerZhu * also add prefix for rust objects Signed-off-by: SchrodingerZhu * export statistics api for rust Signed-off-by: SchrodingerZhu * conform clang-format-9 Signed-off-by: SchrodingerZhu --- .gitignore | 12 ++++++++++++ src/override/rust.cc | 20 +++++++++++++++----- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index f25dbf6..8737c73 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,20 @@ +# conventional build dirs release*/ debug*/ build*/ +cmake-build-*/ + +# cmake intermediate files CMakeFiles/ + +# vscode dirs .vscode/ .vs/ + +# jetbrains IDE dirs +.idea/ + +# special endings *~ *.sw? + diff --git a/src/override/rust.cc b/src/override/rust.cc index 23f0c68..ebce39b 100644 --- a/src/override/rust.cc +++ b/src/override/rust.cc @@ -9,25 +9,26 @@ using namespace snmalloc; -extern "C" SNMALLOC_EXPORT void* rust_alloc(size_t alignment, size_t size) +extern "C" SNMALLOC_EXPORT void* + SNMALLOC_NAME_MANGLE(rust_alloc)(size_t alignment, size_t size) { return ThreadAlloc::get().alloc(aligned_size(alignment, size)); } extern "C" SNMALLOC_EXPORT void* -rust_alloc_zeroed(size_t alignment, size_t size) + SNMALLOC_NAME_MANGLE(rust_alloc_zeroed)(size_t alignment, size_t size) { return ThreadAlloc::get().alloc(aligned_size(alignment, size)); } extern "C" SNMALLOC_EXPORT void -rust_dealloc(void* ptr, size_t alignment, size_t size) + SNMALLOC_NAME_MANGLE(rust_dealloc)(void* ptr, size_t alignment, size_t size) { ThreadAlloc::get().dealloc(ptr, aligned_size(alignment, size)); } -extern "C" SNMALLOC_EXPORT void* -rust_realloc(void* ptr, size_t alignment, size_t old_size, size_t new_size) +extern "C" SNMALLOC_EXPORT void* SNMALLOC_NAME_MANGLE(rust_realloc)( + void* ptr, size_t alignment, size_t old_size, size_t new_size) { size_t aligned_old_size = aligned_size(alignment, old_size), aligned_new_size = aligned_size(alignment, new_size); @@ -43,3 +44,12 @@ rust_realloc(void* ptr, size_t alignment, size_t old_size, size_t new_size) } return p; } + +extern "C" SNMALLOC_EXPORT void SNMALLOC_NAME_MANGLE(rust_statistics)( + size_t* current_memory_usage, size_t* peak_memory_usage) +{ + auto unused_chunks = Globals::get_chunk_allocator_state().unused_memory(); + auto peak = Globals::get_chunk_allocator_state().peak_memory_usage(); + *current_memory_usage = peak - unused_chunks; + *peak_memory_usage = peak; +} \ No newline at end of file