Author: Maciej Fijalkowski <fij...@gmail.com> 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 pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit