diff --git a/gdb-port/parser.py b/gdb-port/parser.py index 58cd12e17b6cae37deb237d02de46f82a09750eb..80ae0ffe78d22b00ea423e30f7eeb5599e55679f 100644 --- a/gdb-port/parser.py +++ b/gdb-port/parser.py @@ -132,7 +132,7 @@ class ParserStack: # On a pop() operation, to compute the difference, the code needs to find the corresponding push(), subtract amb_2-amb_1, then from the result, recursively subtract the (amb_2-amb_1) differences of the push()/pop() pairs inbetween # The push/pop operations are implicitly guaranteed to be balanced so long as execution proceeds normally - def push(self, parser): + def push(self, parser, should_commit=False): self.p_stack.append(parser) self.partial_alloc_counts.append(None) if self.top_level_parse.memory_stat_method == HammerMemoryStatisticsMethod.DETAILED_ARENA_STATS: @@ -155,6 +155,8 @@ class ParserStack: # Additionally, it would probably make more sense to store it at the ParserStack, storing (frame, bytes) pairs self.bytes_since_prev_h_do_parse.append(thusfar) # TODO: where should commit_on_push() be called? HDoParseBreakpoint determines whether to stop, which ParserStack doesn't know about. could be a bool parameter to push() + if should_commit: + self.commit_on_push() def pop(self): self.partial_alloc_counts.pop()