61 long headerFieldOffset = type.getField("_header").getOffset(); |
61 long headerFieldOffset = type.getField("_header").getOffset(); |
62 Address headerAddress = currentInfoField.getValue().addOffsetTo(headerFieldOffset); |
62 Address headerAddress = currentInfoField.getValue().addOffsetTo(headerFieldOffset); |
63 headerValue = headerAddress.getAddressAt(0); |
63 headerValue = headerAddress.getAddressAt(0); |
64 |
64 |
65 // FileMapHeader |
65 // FileMapHeader |
66 type = db.lookupType("FileMapInfo::FileMapHeader"); |
66 type = db.lookupType("FileMapHeader"); |
67 AddressField spaceField = type.getAddressField("_space[0]"); |
67 AddressField spaceField = type.getAddressField("_space[0]"); |
68 Address spaceValue = headerValue.addOffsetTo(type.getField("_space[0]").getOffset()); |
68 Address spaceValue = headerValue.addOffsetTo(type.getField("_space[0]").getOffset()); |
69 mdSpaceValue = spaceValue.addOffsetTo(3 * spaceField.getSize()); |
69 mdSpaceValue = spaceValue.addOffsetTo(3 * spaceField.getSize()); |
70 |
70 |
71 // SpaceInfo |
71 // SpaceInfo |
72 type = db.lookupType("FileMapInfo::FileMapHeader::space_info"); |
72 type = db.lookupType("CDSFileMapRegion"); |
73 long mdRegionBaseAddressOffset = type.getField("_addr._base").getOffset(); |
73 long mdRegionBaseAddressOffset = type.getField("_addr._base").getOffset(); |
74 mdRegionBaseAddress = (mdSpaceValue.addOffsetTo(mdRegionBaseAddressOffset)).getAddressAt(0); |
74 mdRegionBaseAddress = (mdSpaceValue.addOffsetTo(mdRegionBaseAddressOffset)).getAddressAt(0); |
75 long mdRegionSizeOffset = type.getField("_used").getOffset(); |
75 long mdRegionSizeOffset = type.getField("_used").getOffset(); |
76 long mdRegionSize = (mdSpaceValue.addOffsetTo(mdRegionSizeOffset)).getAddressAt(0).asLongValue(); |
76 long mdRegionSize = (mdSpaceValue.addOffsetTo(mdRegionSizeOffset)).getAddressAt(0).asLongValue(); |
77 mdRegionEndAddress = mdRegionBaseAddress.addOffsetTo(mdRegionSize); |
77 mdRegionEndAddress = mdRegionBaseAddress.addOffsetTo(mdRegionSize); |