[tools] Make grokdump robust against non-readable fields

Change-Id: Idb96a923e5cdb250c0b0e3240316cbcfab963108
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/6586929
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#100497}
This commit is contained in:
Leszek Swirski authored and V8 LUCI CQ committed 2025-05-26 08:51:58 -07:00
1 parent 0c10f7aa2a
commit 1da2624b40
1 file changed
+9 -1
+9 -1
View File
@@ -1225,16 +1225,22 @@ class HeapObject(object):
instance_type)
def ObjectField(self, offset):
if not self.heap.reader.IsValidAddress(self.address + offset):
return None
field_value = self.heap.reader.ReadTagged(self.address + offset)
return self.heap.FindObjectOrSmi(field_value)
def SmiField(self, offset):
if not self.heap.reader.IsValidAddress(self.address + offset):
return None
field_value = self.heap.reader.ReadTagged(self.address + offset)
if self.heap.IsSmi(field_value):
return self.heap.SmiUntag(field_value)
return None
def Uint32Field(self, offset):
if not self.heap.reader.IsValidAddress(self.address + offset):
return None
return self.heap.reader.ReadU32(self.address + offset)
@@ -1428,7 +1434,9 @@ class ConsString(String):
def GetChars(self):
try:
return self.left.GetChars() + self.right.GetChars()
left = self.left.GetChars() if self.left is not None else "<lhs>"
right = self.right.GetChars() if self.right is not None else "<rhs>"
return left + right
except Exception as e:
return "***CAUGHT EXCEPTION IN GROKDUMP***: " + str(e)