Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Unified Diff: tools/memory_inspector/memory_inspector/core/memory_map.py

Issue 550093003: [Android] Add 64-bit support to memdump (and memory_inspector parser) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix comment Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/memory_inspector/memory_inspector/core/memory_map.py
diff --git a/tools/memory_inspector/memory_inspector/core/memory_map.py b/tools/memory_inspector/memory_inspector/core/memory_map.py
index f987ab99cb0bb585ebbb662f459d6c4ef0c31010..81ff484b46ae3f3d2ee01bf41eeba85bd3020265 100644
--- a/tools/memory_inspector/memory_inspector/core/memory_map.py
+++ b/tools/memory_inspector/memory_inspector/core/memory_map.py
@@ -5,13 +5,16 @@
import bisect
+PAGE_SIZE = 4096
+
+
class Map(object):
"""Models the memory map of a given |backends.Process|.
This is typically obtained by calling backends.Process.DumpMemoryMaps()."""
def __init__(self):
- self.entries = []
+ self.entries = [] # List of |MapEntry|, sorted by start address.
def Add(self, entry):
assert(isinstance(entry, MapEntry))
@@ -39,7 +42,6 @@ class Map(object):
class MapEntry(object):
"""An entry (address range + stats) in a memory |Map|."""
- PAGE_SIZE = 4096
def __init__(self, start, end, prot_flags, mapped_file, mapped_offset,
priv_dirty_bytes=0, priv_clean_bytes=0, shared_dirty_bytes=0,
@@ -67,17 +69,19 @@ class MapEntry(object):
def IsPageResident(self, relative_page_index):
"""Checks whether a given memory page is resident in memory."""
assert(relative_page_index >= 0 and
- relative_page_index < self.len / MapEntry.PAGE_SIZE)
- assert(len(self.resident_pages) * MapEntry.PAGE_SIZE * 8 >= self.len)
+ relative_page_index < self.len / PAGE_SIZE)
arr_idx = relative_page_index / 8
arr_bit = relative_page_index % 8
+ # Trailing zeros are trimmed by memdump (to optimize dump time).
+ if arr_idx >= len(self.resident_pages):
+ return False
return (self.resident_pages[arr_idx] & (1 << arr_bit)) != 0
def __cmp__(self, other):
"""Comparison operator required for bisect."""
if isinstance(other, MapEntry):
return self.start - other.start
- elif isinstance(other, int):
+ elif isinstance(other, (long, int)):
return self.start - other
else:
raise Exception('Cannot compare with %s' % other.__class__)
@@ -85,3 +89,8 @@ class MapEntry(object):
@property
def len(self):
return self.end - self.start + 1
+
+ @property
+ def rss_bytes(self):
+ return (self.priv_dirty_bytes + self.priv_clean_bytes +
+ self.shared_dirty_bytes + self.shared_clean_bytes)

Powered by Google App Engine
This is Rietveld 408576698