From a457b90733475acf9ba755c1741763879f718445 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 9 Mar 2021 12:00:22 +0100 Subject: [PATCH] UserspaceEmulator: Tidy up the MallocRegionMetadata construction a bit Use designated initializers to make it very obvious what's being set, and also give the metadata a backpointer to the region for convenience. --- Userland/DevTools/UserspaceEmulator/MallocTracer.cpp | 12 ++++++++---- Userland/DevTools/UserspaceEmulator/MallocTracer.h | 1 + 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Userland/DevTools/UserspaceEmulator/MallocTracer.cpp b/Userland/DevTools/UserspaceEmulator/MallocTracer.cpp index de663ea6a0..3016527d3d 100644 --- a/Userland/DevTools/UserspaceEmulator/MallocTracer.cpp +++ b/Userland/DevTools/UserspaceEmulator/MallocTracer.cpp @@ -80,11 +80,15 @@ void MallocTracer::target_did_malloc(Badge, FlatPtr address, size_t si } if (!mmap_region.is_malloc_block()) { - auto new_malloc_data = make(); - mmap_region.set_malloc_metadata({}, move(new_malloc_data)); + auto chunk_size = mmap_region.read32(offsetof(CommonHeader, m_size)).value(); + mmap_region.set_malloc_metadata({}, + adopt_own(*new MallocRegionMetadata { + .region = mmap_region, + .address = mmap_region.base(), + .chunk_size = chunk_size, + .mallocations = {}, + })); auto& malloc_data = *mmap_region.malloc_metadata(); - malloc_data.address = region->base(); - malloc_data.chunk_size = mmap_region.read32(offsetof(CommonHeader, m_size)).value(); bool is_chunked_block = malloc_data.chunk_size <= size_classes[num_size_classes - 1]; if (is_chunked_block) diff --git a/Userland/DevTools/UserspaceEmulator/MallocTracer.h b/Userland/DevTools/UserspaceEmulator/MallocTracer.h index 90585e523c..6329e66da9 100644 --- a/Userland/DevTools/UserspaceEmulator/MallocTracer.h +++ b/Userland/DevTools/UserspaceEmulator/MallocTracer.h @@ -56,6 +56,7 @@ struct Mallocation { class MallocRegionMetadata { public: + MmapRegion& region; FlatPtr address { 0 }; size_t chunk_size { 0 };