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