diff --git a/gdb-port/top-level-parse.py b/gdb-port/top-level-parse.py index e8dc13e186489501c6f6908bf86615bae83a133c..6b3fa38d287af6d9268d44f26494e879d12cc884 100644 --- a/gdb-port/top-level-parse.py +++ b/gdb-port/top-level-parse.py @@ -66,7 +66,7 @@ class TopLevelParse: #if self.memory_stat_method == HammerMemoryStatisticsMethod.DETAILED_ARENA_STATS if self.extended_arena_stats_available(): # DEBUG self.bytes_at_enter.append(arena['arena_malloc_bytes']) - self.cumulative_byte_differences = [] + self.cumulative_byte_differences = [] # TODO: direction try: parser_obj = self.parser_objs[parser] @@ -89,6 +89,10 @@ class TopLevelParse: if self.extended_arena_stats_available(): # DEBUG newbytes = parse_state['arena']['arena_malloc_bytes'] self.cumulative_byte_differences.insert(0, newbytes - self.bytes_at_enter[-(len(self.cumulative_byte_differences)+1)]) # TODO: consistency. this is the third way of answering the question, "how deep are we in the stack" + allocated_bytes = self.cumulative_byte_differences[-len(self.cumulative_byte_differences)] - self.cumulative_byte_differences[-(len(self.cumulative_byte_differences)-1)] # NB: len(self.cumulative_byte_differences) changed since the last line + self.total_byte_differences[-len(self.cumulative_byte_differences)] = allocated_bytes + parser_obj.add_mem_use(allocated_bytes) + # TODO: allocations can be attributed to individual h_do_parse(parser) calls, thus the same per-parser per-arena stats tracking can be done # Called from h_do_parse()'s handler, at which point we know the addresses of the state and arena def first_h_do_parse_after_packrat_parse(self, parse_state, arena):