Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r48611:fd20e5312348 Date: 2011-10-30 18:25 +0100 http://bitbucket.org/pypy/pypy/changeset/fd20e5312348/
Log: A failing test. diff --git a/pypy/jit/backend/llgraph/llimpl.py b/pypy/jit/backend/llgraph/llimpl.py --- a/pypy/jit/backend/llgraph/llimpl.py +++ b/pypy/jit/backend/llgraph/llimpl.py @@ -1114,7 +1114,9 @@ if isinstance(TYPE, lltype.Ptr): if isinstance(x, (int, long, llmemory.AddressAsInt)): x = llmemory.cast_int_to_adr(x) - if TYPE is rffi.VOIDP or TYPE.TO._hints.get("uncast_on_llgraph"): + if TYPE is rffi.VOIDP or ( + hasattr(TYPE.TO, '_hints') and + TYPE.TO._hints.get("uncast_on_llgraph")): # assume that we want a "C-style" cast, without typechecking the value return rffi.cast(TYPE, x) return llmemory.cast_adr_to_ptr(x, TYPE) diff --git a/pypy/jit/backend/llgraph/runner.py b/pypy/jit/backend/llgraph/runner.py --- a/pypy/jit/backend/llgraph/runner.py +++ b/pypy/jit/backend/llgraph/runner.py @@ -365,6 +365,7 @@ def arraydescrof(self, A): assert A.OF != lltype.Void + assert isinstance(A, lltype.GcArray) or A._hints.get('nolength', False) size = symbolic.get_size(A) if isinstance(A.OF, lltype.Ptr) or isinstance(A.OF, lltype.Primitive): token = history.getkind(A.OF)[0] diff --git a/pypy/jit/codewriter/support.py b/pypy/jit/codewriter/support.py --- a/pypy/jit/codewriter/support.py +++ b/pypy/jit/codewriter/support.py @@ -40,6 +40,7 @@ type_system="lltype"): # build the normal ll graphs for ll_function t = TranslationContext() + t.config.translation.withsmallfuncsets = 3 annpolicy = AnnotatorPolicy() annpolicy.allow_someobjects = False a = t.buildannotator(policy=annpolicy) diff --git a/pypy/jit/metainterp/test/test_ajit.py b/pypy/jit/metainterp/test/test_ajit.py --- a/pypy/jit/metainterp/test/test_ajit.py +++ b/pypy/jit/metainterp/test/test_ajit.py @@ -3559,6 +3559,33 @@ assert res == 0 self.check_loops({"int_sub": 1, "int_gt": 1, "guard_true": 1, "jump": 1}) + def test_convert_from_SmallFunctionSetPBCRepr_to_FunctionsPBCRepr(self): + f1 = lambda n: n+1 + f2 = lambda n: n+2 + f3 = lambda n: n+3 + f4 = lambda n: n+4 + f5 = lambda n: n+5 + f6 = lambda n: n+6 + f7 = lambda n: n+7 + f8 = lambda n: n+8 + def h(n, x): + return x(n) + h._dont_inline = True + def g(n, x): + return h(n, x) + g._dont_inline = True + def f(n): + n = g(n, f1) + n = g(n, f2) + n = h(n, f3) + n = h(n, f4) + n = h(n, f5) + n = h(n, f6) + n = h(n, f7) + n = h(n, f8) + return n + assert f(5) == 41 + self.interp_operations(f, [5]) class TestLLtype(BaseLLtypeTests, LLJitMixin): _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit