1# Copyright 2015 the V8 project authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5#
6# Common code for parsing --trace-gc-nvp output.
7#
8
9
10from __future__ import with_statement
11import re
12
13def split_nvp(s):
14  t = {}
15  for (name, value) in re.findall(r"([._\w]+)=([-\w]+(?:\.[0-9]+)?)", s):
16    try:
17      t[name] = float(value)
18    except ValueError:
19      t[name] = value
20
21  return t
22
23
24def parse_gc_trace(input):
25  trace = []
26  with open(input) as f:
27    for line in f:
28      info = split_nvp(line)
29      if info and 'pause' in info and info['pause'] > 0:
30        info['i'] = len(trace)
31        trace.append(info)
32  return trace
33