diff --git a/gdb-port/top-level-parse.py b/gdb-port/top-level-parse.py index 8b3dd9efe7cc23ee13bf6153adc943acc1191e04..73d78a5fb11ba619a30f7d385653121eed182c9f 100644 --- a/gdb-port/top-level-parse.py +++ b/gdb-port/top-level-parse.py @@ -271,8 +271,12 @@ class TopLevelParse: pending_allocs_by_arena = {} for ps in self.parser_stacks: - allocs = ps.get_pending_allocations() - #pending_allocs_by_arena[ps.arena] = { ps.arena : ps.get_pending_allocations() } + new_allocs_by_arena = ps.get_pending_allocations() + new_allocs = new_allocs_by_arena.get(ps.arena_int, {}) + pending_allocs = self.pending_allocs.get(ps.arena_int, {}) + for addr, alloc in new_allocs: + pending_allocs[addr] = pending_allocs.get(addr, 0) + alloc + pending_allocs_by_arena[ps.arena_int] = pending_allocs # TODO: allocations are grouped by arena, then parser address. we get the arena address from the parser stack, which may be shared between parser stacks # Therefore, it can't just be blindly assigned to a key with the arena's address. the two dicts need to be merged, with the values of duplicate entries added together