[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