Author: Antonio Cuni <anto.c...@gmail.com> Branch: Changeset: r46378:51e4a69e3584 Date: 2011-08-08 17:41 +0200 http://bitbucket.org/pypy/pypy/changeset/51e4a69e3584/
Log: merge heads diff --git a/pypy/jit/metainterp/test/test_loop.py b/pypy/jit/metainterp/test/test_loop.py --- a/pypy/jit/metainterp/test/test_loop.py +++ b/pypy/jit/metainterp/test/test_loop.py @@ -800,6 +800,38 @@ res = self.meta_interp(f, [200]) + def test_regular_pointers_in_short_preamble(self): + # XXX do we really care about this case? If not, we should + # at least detect it and complain during codewriter/jtransform + from pypy.rpython.lltypesystem import lltype + BASE = lltype.GcStruct('BASE') + A = lltype.GcStruct('A', ('parent', BASE), ('val', lltype.Signed)) + B = lltype.GcStruct('B', ('parent', BASE), ('charval', lltype.Char)) + myjitdriver = JitDriver(greens = [], reds = ['n', 'm', 'i', 'j', 'sa', 'p']) + def f(n, m, j): + i = sa = 0 + pa = lltype.malloc(A) + pa.val = 7 + p = pa.parent + while i < n: + myjitdriver.jit_merge_point(n=n, m=m, i=i, j=j, sa=sa, p=p) + if i < m: + pa = lltype.cast_pointer(lltype.Ptr(A), p) + sa += pa.val + elif i == m: + pb = lltype.malloc(B) + pb.charval = 'y' + p = pb.parent + else: + pb = lltype.cast_pointer(lltype.Ptr(B), p) + sa += ord(pb.charval) + sa += 100 + assert n>0 and m>0 + i += j + return sa + expected = f(20, 10, 1) + res = self.meta_interp(f, [20, 10, 1]) + assert res == expected def test_unerased_pointers_in_short_preamble(self): from pypy.rlib.rerased import new_erasing_pair diff --git a/pypy/rlib/jit.py b/pypy/rlib/jit.py --- a/pypy/rlib/jit.py +++ b/pypy/rlib/jit.py @@ -115,7 +115,7 @@ s_x = annmodel.not_const(s_x) access_directly = 's_access_directly' in kwds_s fresh_virtualizable = 's_fresh_virtualizable' in kwds_s - if access_directly or fresh_virtualizable: + if access_directly or fresh_virtualizable: assert access_directly, "lone fresh_virtualizable hint" if isinstance(s_x, annmodel.SomeInstance): from pypy.objspace.flow.model import Constant @@ -280,7 +280,7 @@ def specialize_call(self, hop): pass - + vref_None = non_virtual_ref(None) # ____________________________________________________________ @@ -290,7 +290,7 @@ """Inconsistency in the JIT hints.""" PARAMETERS = {'threshold': 1032, # just above 1024 - 'function_threshold': 1617, # slightly more than one above + 'function_threshold': 1617, # slightly more than one above 'trace_eagerness': 200, 'trace_limit': 12000, 'inlining': 1, @@ -400,7 +400,7 @@ raise set_user_param._annspecialcase_ = 'specialize:arg(0)' - + def on_compile(self, logger, looptoken, operations, type, *greenargs): """ A hook called when loop is compiled. Overwrite for your own jitdriver if you want to do something special, like @@ -571,7 +571,7 @@ c_llname = hop.inputconst(lltype.Void, mangled_name) getfield_op = self.get_getfield_op(hop.rtyper) v_green = hop.genop(getfield_op, [v_red, c_llname], - resulttype = r_field) + resulttype=r_field) s_green = s_red.classdef.about_attribute(fieldname) assert s_green is not None hop.rtyper.annotator.setbinding(v_green, s_green) diff --git a/pypy/translator/translator.py b/pypy/translator/translator.py --- a/pypy/translator/translator.py +++ b/pypy/translator/translator.py @@ -16,7 +16,7 @@ import py log = py.log.Producer("flowgraph") py.log.setconsumer("flowgraph", ansi_log) - + class TranslationContext(object): FLOWING_FLAGS = { 'verbose': False, @@ -105,7 +105,7 @@ raise ValueError("we already have an rtyper") from pypy.rpython.rtyper import RPythonTyper self.rtyper = RPythonTyper(self.annotator, - type_system = type_system) + type_system=type_system) return self.rtyper def getexceptiontransformer(self): _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit