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):