| 1481 | |
| 1482 | |
| 1483 | class FixedArray(HeapObject): |
| 1484 | def LengthOffset(self): |
| 1485 | return self.heap.TaggedPointerSize() |
| 1486 | |
| 1487 | def ElementsOffset(self): |
| 1488 | return self.heap.TaggedPointerSize() * 2 |
| 1489 | |
| 1490 | def MemberOffset(self, i): |
| 1491 | return self.ElementsOffset() + self.heap.TaggedPointerSize() * i |
| 1492 | |
| 1493 | def Get(self, i): |
| 1494 | return self.ObjectField(self.MemberOffset(i)) |
| 1495 | |
| 1496 | def __init__(self, heap, map, address): |
| 1497 | HeapObject.__init__(self, heap, map, address) |
| 1498 | self.length = self.SmiField(self.LengthOffset()) |
| 1499 | |
| 1500 | def Print(self, p): |
| 1501 | p.Print("FixedArray(%s) {" % self.heap.reader.FormatIntPtr(self.address)) |
| 1502 | p.Indent() |
| 1503 | p.Print("length: %d" % self.length) |
| 1504 | base_offset = self.ElementsOffset() |
| 1505 | for i in range(self.length): |
| 1506 | offset = base_offset + 4 * i |
| 1507 | try: |
| 1508 | p.Print("[%08d] = %s" % (i, self.ObjectField(offset))) |
| 1509 | except TypeError: |
| 1510 | p.Dedent() |
| 1511 | p.Print("...") |
| 1512 | p.Print("}") |
| 1513 | return |
| 1514 | p.Dedent() |
| 1515 | p.Print("}") |
| 1516 | |
| 1517 | def __str__(self): |
| 1518 | return "FixedArray(%08x, length=%d)" % (self.address, self.length) |
| 1519 | |
| 1520 | |
| 1521 | class DescriptorArray(object): |
no outgoing calls
no test coverage detected
searching dependent graphs…