From 6268758374064edcae96ceffd70c2afe0408f938 Mon Sep 17 00:00:00 2001
From: pompolic <pompolic@special-circumstanc.es>
Date: Mon, 27 Mar 2023 15:50:28 +0200
Subject: [PATCH] (WIP commit) Error messages seemingly fixed

TODO: document the TopLevelParse api (GDBValue vs. int)
TODO: remove redundant variables
TODO: integration tests for TopLevelParse
---
 gdb-port/hammer-breakpoints.py | 2 +-
 gdb-port/parser.py             | 1 +
 gdb-port/top-level-parse.py    | 7 +++++--
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/gdb-port/hammer-breakpoints.py b/gdb-port/hammer-breakpoints.py
index 95035d5..410c847 100644
--- a/gdb-port/hammer-breakpoints.py
+++ b/gdb-port/hammer-breakpoints.py
@@ -27,7 +27,7 @@ class HDoParseBreakpoint(gdb.Breakpoint):
 		token_start = index
 
 		#top_level_parse.enter_h_do_parse(parse_state, None, parser) # Note for the future: passing it as int is intended here, memory stats' keys turn into gdb values too
-		top_level_parse.enter_h_do_parse(state, arena, parser)
+		top_level_parse.enter_h_do_parse(parse_state, arena, parser)
 
 		input_chunk = input_ptr + index
 		#print(input_chunk.string('ascii','backslashreplace',10))
diff --git a/gdb-port/parser.py b/gdb-port/parser.py
index 636cb59..a1ce40b 100644
--- a/gdb-port/parser.py
+++ b/gdb-port/parser.py
@@ -114,6 +114,7 @@ class ParserStack:
 
 	def pop(self):
 		self.partial_alloc_counts.pop()
+		parser_obj = self.peek()
 
 		if self.top_level_parse.memory_stat_method == HammerMemoryStatisticsMethod.DETAILED_ARENA_STATS:
 		#if self.extended_arena_stats_available(): # DEBUG
diff --git a/gdb-port/top-level-parse.py b/gdb-port/top-level-parse.py
index 1d22941..53fdae6 100644
--- a/gdb-port/top-level-parse.py
+++ b/gdb-port/top-level-parse.py
@@ -59,7 +59,10 @@ class TopLevelParse:
 		return 0
 
 	def enter_h_do_parse(self, parse_state, arena, parser):
+		#TODO: consistency in expecting GDBValues or ints
 		parser_stack = self.peek_parserstack()
+		arena_int = int(arena)
+		parse_state_int = int(parse_state)
 		if parser_stack.arena is None:
 			parser_stack.arena_gdbval = arena
 		if parser_stack.parse_state is None:
@@ -74,8 +77,8 @@ class TopLevelParse:
 		parser_stack = self.peek_parserstack()
 		parser_stack.push(parser_obj)
 		parser_obj.increment_apply_count(int(arena))
-		if parser_stack.parse_state is None and parser_stack.parse_state != parse_state:
-			self.first_h_do_parse_after_packrat_parse(parse_state, arena)
+		if parser_stack.parse_state is None and parser_stack.parse_state != parse_state_int:
+			self.first_h_do_parse_after_packrat_parse(parse_state_int, arena_int)
 
 	def return_from_h_do_parse(self, parse_state, parser, ret_val):
 		parser_stack = self.peek_parserstack()
-- 
GitLab