Author: Maciej Fijalkowski <[email protected]>
Branch: jitframe-on-heap
Changeset: r60379:93d898dde547
Date: 2013-01-23 17:28 +0200
http://bitbucket.org/pypy/pypy/changeset/93d898dde547/
Log: test_random is almost ideal by now\
diff --git a/rpython/jit/backend/test/test_random.py
b/rpython/jit/backend/test/test_random.py
--- a/rpython/jit/backend/test/test_random.py
+++ b/rpython/jit/backend/test/test_random.py
@@ -118,7 +118,7 @@
print >>s, ' ResOperation(rop.%s, [%s], %s%s),' % (
opname[op.getopnum()], ', '.join(args), names[op.result], descrstr)
- def print_loop(self, output, fail_descr=None):
+ def print_loop(self, output, fail_descr=None, fail_args=None):
def update_names(ops):
for op in ops:
v = op.result
@@ -143,11 +143,22 @@
if arg not in names:
writevar(arg, 'const_ptr')
- def type_descr(TP, num):
+ def type_descr(TP):
if TP in TYPE_NAMES:
return TYPE_NAMES[TP]
+ elif isinstance(TP, lltype.Primitive):
+ return _type_descr(TP) # don't cache
+ else:
+ descr = _type_descr(TP)
+ no = len(TYPE_NAMES)
+ tp_name = 'S' + str(no)
+ TYPE_NAMES[TP] = tp_name
+ print >>s, ' %s = %s' % (tp_name, descr)
+ return tp_name
+
+ def _type_descr(TP):
if isinstance(TP, lltype.Ptr):
- return "lltype.Ptr(%s)" % type_descr(TP.TO, num)
+ return "lltype.Ptr(%s)" % type_descr(TP.TO)
if isinstance(TP, lltype.Struct):
if TP._gckind == 'gc':
pref = 'Gc'
@@ -156,11 +167,11 @@
fields = []
for k in TP._names:
v = getattr(TP, k)
- fields.append('("%s", %s)' % (k, type_descr(v, num)))
- return "lltype.%sStruct('S%d', %s)" % (pref, num,
+ fields.append('("%s", %s)' % (k, type_descr(v)))
+ return "lltype.%sStruct('Sx', %s)" % (pref,
", ".join(fields))
elif isinstance(TP, lltype.GcArray):
- return "lltype.GcArray(%s)" % (type_descr(TP.OF, num),)
+ return "lltype.GcArray(%s)" % (type_descr(TP.OF),)
if TP._name.upper() == TP._name:
return 'rffi.%s' % TP._name
return 'lltype.%s' % TP._name
@@ -176,15 +187,9 @@
for op in self.loop.operations:
descr = op.getdescr()
if hasattr(descr, '_random_info'):
- if descr._random_type in TYPE_NAMES:
- tp_name = TYPE_NAMES[descr._random_type]
- else:
- num = len(TYPE_NAMES)
- tp_name = 'S' + str(num)
- descr._random_info = descr._random_info.replace('...',
tp_name)
- TYPE_NAMES[descr._random_type] = tp_name
- print >>s, " %s = %s" % (tp_name,
- type_descr(descr._random_type,
num))
+ tp_name = type_descr(descr._random_type)
+ descr._random_info = descr._random_info.replace('...', tp_name)
+
#
def writevar(v, nameprefix, init=''):
if nameprefix == 'const_ptr':
@@ -217,17 +222,21 @@
#
if fail_descr is None:
print >>s, ' cpu = CPU(None, None)'
+ print >>s, ' cpu.setup_once()'
if hasattr(self.loop, 'inputargs'):
print >>s, ' inputargs = [%s]' % (
', '.join([names[v] for v in self.loop.inputargs]))
+ else:
+ print >>s, ' inputargs = [%s]' % (
+ ', '.join([names[v] for v in fail_args]))
print >>s, ' operations = ['
for op in self.loop.operations:
- self.process_operation(s, op, names)
+ self.process_operation(s, op, names)
+ print >>s, ' ]'
for i, op in enumerate(self.loop.operations):
if op.is_guard():
fa = ", ".join([names[v] for v in op.getfailargs()])
print >>s, ' operations[%d].setfailargs([%s])' % (i, fa)
- print >>s, ' ]'
if fail_descr is None:
print >>s, ' looptoken = JitCellToken()'
print >>s, ' cpu.compile_loop(inputargs, operations, looptoken)'
@@ -847,7 +856,7 @@
self.loop._jitcelltoken)
if self.output:
- bridge_builder.print_loop(self.output, fail_descr)
+ bridge_builder.print_loop(self.output, fail_descr, fail_args)
return True
def dump(loop):
diff --git a/rpython/jit/backend/x86/test/test_regalloc2.py
b/rpython/jit/backend/x86/test/test_regalloc2.py
--- a/rpython/jit/backend/x86/test/test_regalloc2.py
+++ b/rpython/jit/backend/x86/test/test_regalloc2.py
@@ -316,4 +316,4 @@
return xptr, xtp
def test_bug2():
- pass
+ xxx
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit