[pypy-svn] r62919 - pypy/branch/pyjitpl5/pypy/jit/backend/x86

fijal at codespeak.net fijal at codespeak.net
Fri Mar 13 01:20:22 CET 2009


Author: fijal
Date: Fri Mar 13 01:20:19 2009
New Revision: 62919

Modified:
   pypy/branch/pyjitpl5/pypy/jit/backend/x86/loopparser.py
Log:
minor fixes


Modified: pypy/branch/pyjitpl5/pypy/jit/backend/x86/loopparser.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/x86/loopparser.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/x86/loopparser.py	Fri Mar 13 01:20:19 2009
@@ -10,6 +10,7 @@
         self.boxes = {}
         self.box_creations = []
         self.operations = []
+        self.unique_ptrs = {}
 
     def parse_name(self, name):
         if name == 'bp':
@@ -22,6 +23,13 @@
             return 'ConstPtr'
         raise NotImplementedError
 
+    def _get_unique_ptr(self, val):
+        try:
+            return self.unique_ptrs[val]
+        except KeyError:
+            self.unique_ptrs[val] = len(self.unique_ptrs)
+            return len(self.unique_ptrs) - 1
+
     def register_box(self, id, name, val):
         try:
             return self.boxes[id]
@@ -29,7 +37,7 @@
             result = name.lower() + '_' + str(id)
             self.boxes[id] = result
             if name.endswith('Ptr'):
-                val = 'ptr_%d' % id
+                val = 'ptr_%d' % self._get_unique_ptr(val)
             self.box_creations.append('%s = %s(%s)' % (result, name, val))
             return result
 
@@ -59,7 +67,10 @@
             line = lines[i]
             if line:
                 opname, args = line.split(' ')
-                parsed_args = self.parse_args(pairs(args.split(",")))
+                if args:
+                    parsed_args = self.parse_args(pairs(args.split(",")))
+                else:
+                    parsed_args = []
                 if i + 1 < len(lines) and lines[i + 1].startswith('  =>'):
                     i += 1
                     box = lines[i][5:]
@@ -93,3 +104,4 @@
     assert parser.operations[1] == ('guard_value', ['boxint_5', 'constint_7'],
                                     None)
     assert len(parser.box_creations) == 8
+



More information about the Pypy-commit mailing list