| Index: tools/stats-viewer.py
|
| diff --git a/tools/stats-viewer.py b/tools/stats-viewer.py
|
| index 05cb76288282492ce31da264c9026f32f76acffe..ab8e28767d17558919ba3a41279477a615d55b0b 100755
|
| --- a/tools/stats-viewer.py
|
| +++ b/tools/stats-viewer.py
|
| @@ -104,10 +104,12 @@ class StatsViewer(object):
|
| sys.exit(1)
|
| maps_file = open(maps_name, "r")
|
| try:
|
| - m = re.search(r"/dev/shm/\S*", maps_file.read())
|
| - if m is not None and os.path.exists(m.group(0)):
|
| - self.data_name = m.group(0)
|
| - else:
|
| + self.data_name = None
|
| + for m in re.finditer(r"/dev/shm/\S*", maps_file.read()):
|
| + if os.path.exists(m.group(0)):
|
| + self.data_name = m.group(0)
|
| + break
|
| + if self.data_name is None:
|
| print "Can't find counter file in maps for PID %s." % self.data_name
|
| sys.exit(1)
|
| finally:
|
| @@ -414,7 +416,8 @@ class ChromeCounterCollection(object):
|
| individual counters contained in the file."""
|
|
|
| _HEADER_SIZE = 4 * 4
|
| - _NAME_SIZE = 32
|
| + _COUNTER_NAME_SIZE = 64
|
| + _THREAD_NAME_SIZE = 32
|
|
|
| def __init__(self, data):
|
| """Create a new instance.
|
| @@ -426,22 +429,23 @@ class ChromeCounterCollection(object):
|
| self.max_counters = data.IntAt(8)
|
| self.max_threads = data.IntAt(12)
|
| self.counter_names_offset = \
|
| - self._HEADER_SIZE + self.max_threads * (self._NAME_SIZE + 2 * 4)
|
| + self._HEADER_SIZE + self.max_threads * (self._THREAD_NAME_SIZE + 2 * 4)
|
| self.counter_values_offset = \
|
| - self.counter_names_offset + self.max_counters * self._NAME_SIZE
|
| + self.counter_names_offset + self.max_counters * self._COUNTER_NAME_SIZE
|
|
|
| def CountersInUse(self):
|
| """Return the number of counters in active use."""
|
| for i in xrange(self.max_counters):
|
| - if self.data.ByteAt(self.counter_names_offset + i * self._NAME_SIZE) == 0:
|
| + name_offset = self.counter_names_offset + i * self._COUNTER_NAME_SIZE
|
| + if self.data.ByteAt(name_offset) == 0:
|
| return i
|
| return self.max_counters
|
|
|
| def Counter(self, i):
|
| """Return the i'th counter."""
|
| - return ChromeCounter(self.data,
|
| - self.counter_names_offset + i * self._NAME_SIZE,
|
| - self.counter_values_offset + i * self.max_threads * 4)
|
| + name_offset = self.counter_names_offset + i * self._COUNTER_NAME_SIZE
|
| + value_offset = self.counter_values_offset + i * self.max_threads * 4
|
| + return ChromeCounter(self.data, name_offset, value_offset)
|
|
|
|
|
| def Main(data_file, name_filter):
|
|
|