Hi Maciek, I think this commit should come with corresponding pypy_c tests.
Cheers, Carl Friedrich On 03/12/2012 09:46 PM, fijal wrote:
Author: Maciej Fijalkowski<fij...@gmail.com> Branch: Changeset: r53340:12f4497fa28c Date: 2012-03-12 13:46 -0700 http://bitbucket.org/pypy/pypy/changeset/12f4497fa28c/ Log: add a few unrolls to tuple diff --git a/pypy/objspace/std/tupleobject.py b/pypy/objspace/std/tupleobject.py --- a/pypy/objspace/std/tupleobject.py +++ b/pypy/objspace/std/tupleobject.py @@ -6,8 +6,8 @@ from pypy.rlib.rarithmetic import intmask from pypy.objspace.std.sliceobject import W_SliceObject, normalize_simple_slice from pypy.objspace.std import slicetype -from pypy.interpreter import gateway from pypy.rlib.debug import make_sure_not_resized +from pypy.rlib import jit class W_AbstractTupleObject(W_Object): __slots__ = () @@ -114,6 +114,9 @@ def mul__ANY_Tuple(space, w_times, w_tuple): return mul_tuple_times(space, w_tuple, w_times) +@jit.look_inside_iff(lambda space, w_tuple1, w_tuple2: + jit.is_constant(len(w_tuple1.wrappeditems)) and + jit.is_constant(len(w_tuple2.wrappeditems))) def eq__Tuple_Tuple(space, w_tuple1, w_tuple2): items1 = w_tuple1.wrappeditems items2 = w_tuple2.wrappeditems @@ -126,6 +129,9 @@ return space.w_False return space.w_True +@jit.look_inside_iff(lambda space, w_tuple1, w_tuple2: + jit.is_constant(len(w_tuple1.wrappeditems)) and + jit.is_constant(len(w_tuple2.wrappeditems))) def lt__Tuple_Tuple(space, w_tuple1, w_tuple2): items1 = w_tuple1.wrappeditems items2 = w_tuple2.wrappeditems @@ -137,6 +143,9 @@ # No more items to compare -- compare sizes return space.newbool(len(items1)< len(items2)) +@jit.look_inside_iff(lambda space, w_tuple1, w_tuple2: + jit.is_constant(len(w_tuple1.wrappeditems)) and + jit.is_constant(len(w_tuple2.wrappeditems))) def gt__Tuple_Tuple(space, w_tuple1, w_tuple2): items1 = w_tuple1.wrappeditems items2 = w_tuple2.wrappeditems @@ -161,6 +170,8 @@ def hash__Tuple(space, w_tuple): return space.wrap(hash_tuple(space, w_tuple.wrappeditems)) +@jit.look_inside_iff(lambda space, wrappeditems: + jit.is_constant(len(wrappeditems))) def hash_tuple(space, wrappeditems): # this is the CPython 2.4 algorithm (changed from 2.3) mult = 1000003 _______________________________________________ pypy-commit mailing list pypy-com...@python.org http://mail.python.org/mailman/listinfo/pypy-commit
_______________________________________________ pypy-dev mailing list pypy-dev@python.org http://mail.python.org/mailman/listinfo/pypy-dev