Mesa (gallium-0.1): python: Use a sequential number to identify each call.
Jose Fonseca
jrfonseca at kemper.freedesktop.org
Mon May 18 15:08:03 UTC 2009
Module: Mesa
Branch: gallium-0.1
Commit: 711fa6e4c6a32982665362077283dfad8340e98a
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=711fa6e4c6a32982665362077283dfad8340e98a
Author: José Fonseca <jfonseca at vmware.com>
Date: Wed Mar 25 13:44:32 2009 +0000
python: Use a sequential number to identify each call.
TODO: Modify the trace driver to generate these on the XML file itself.
---
src/gallium/state_trackers/python/retrace/model.py | 4 +++-
.../state_trackers/python/retrace/parser.py | 13 ++++++++++++-
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/src/gallium/state_trackers/python/retrace/model.py b/src/gallium/state_trackers/python/retrace/model.py
index ae0f432..d4a079f 100755
--- a/src/gallium/state_trackers/python/retrace/model.py
+++ b/src/gallium/state_trackers/python/retrace/model.py
@@ -101,7 +101,8 @@ class Pointer(Node):
class Call:
- def __init__(self, klass, method, args, ret):
+ def __init__(self, no, klass, method, args, ret):
+ self.no = no
self.klass = klass
self.method = method
self.args = args
@@ -187,6 +188,7 @@ class PrettyPrinter:
self.formatter.address(node.address)
def visit_call(self, node):
+ self.formatter.text('%s ' % node.no)
if node.klass is not None:
self.formatter.function(node.klass + '::' + node.method)
else:
diff --git a/src/gallium/state_trackers/python/retrace/parser.py b/src/gallium/state_trackers/python/retrace/parser.py
index db9bcc8..b0f3e8a 100755
--- a/src/gallium/state_trackers/python/retrace/parser.py
+++ b/src/gallium/state_trackers/python/retrace/parser.py
@@ -190,6 +190,10 @@ class XmlParser:
class TraceParser(XmlParser):
+ def __init__(self, fp):
+ XmlParser.__init__(self, fp)
+ self.last_call_no = 0
+
def parse(self):
self.element_start('trace')
while self.token.type not in (ELEMENT_END, EOF):
@@ -200,6 +204,13 @@ class TraceParser(XmlParser):
def parse_call(self):
attrs = self.element_start('call')
+ try:
+ no = int(attrs['no'])
+ except KeyError:
+ self.last_call_no += 1
+ no = self.last_call_no
+ else:
+ self.last_call_no = no
klass = attrs['class']
method = attrs['method']
args = []
@@ -217,7 +228,7 @@ class TraceParser(XmlParser):
raise TokenMismatch("<arg ...> or <ret ...>", self.token)
self.element_end('call')
- return Call(klass, method, args, ret)
+ return Call(no, klass, method, args, ret)
def parse_arg(self):
attrs = self.element_start('arg')
More information about the mesa-commit
mailing list