[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:
1 parent
0c10f7aa2a
commit
1da2624b40
1 file changed
+9
-1
+9
-1
@@ -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)
|
||||
|
||||
|
||||
Reference in new issue
Block a user