mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:07:35 +00:00
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.
This commit is contained in:
parent
915e8dbe71
commit
a457b90733
2 changed files with 9 additions and 4 deletions
|
@ -80,11 +80,15 @@ void MallocTracer::target_did_malloc(Badge<Emulator>, FlatPtr address, size_t si
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mmap_region.is_malloc_block()) {
|
if (!mmap_region.is_malloc_block()) {
|
||||||
auto new_malloc_data = make<MallocRegionMetadata>();
|
auto chunk_size = mmap_region.read32(offsetof(CommonHeader, m_size)).value();
|
||||||
mmap_region.set_malloc_metadata({}, move(new_malloc_data));
|
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();
|
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];
|
bool is_chunked_block = malloc_data.chunk_size <= size_classes[num_size_classes - 1];
|
||||||
if (is_chunked_block)
|
if (is_chunked_block)
|
||||||
|
|
|
@ -56,6 +56,7 @@ struct Mallocation {
|
||||||
|
|
||||||
class MallocRegionMetadata {
|
class MallocRegionMetadata {
|
||||||
public:
|
public:
|
||||||
|
MmapRegion& region;
|
||||||
FlatPtr address { 0 };
|
FlatPtr address { 0 };
|
||||||
size_t chunk_size { 0 };
|
size_t chunk_size { 0 };
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue