Author: stian Branch: improve-rbigint Changeset: r56349:9be592831ad5 Date: 2012-07-06 04:49 +0200 http://bitbucket.org/pypy/pypy/changeset/9be592831ad5/
Log: Always inline _normalize. This give a HUGE speedup for lshift, but most calls that does very little work seem to benefit diff --git a/pypy/rlib/rbigint.py b/pypy/rlib/rbigint.py --- a/pypy/rlib/rbigint.py +++ b/pypy/rlib/rbigint.py @@ -831,7 +831,7 @@ self._digits = self._digits[:i] if self.numdigits() == 1 and self.udigit(0) == 0: self.sign = 0 - + _normalize._always_inline_ = True def bit_length(self): i = self.numdigits() if i == 1 and self.digit(0) == 0: @@ -1392,7 +1392,9 @@ if not size: size = pin.numdigits() size -= 1 + while size >= 0: + assert size >= 0 rem = (rem << SHIFT) + pin.widedigit(size) hi = rem // n pout.setdigit(size, hi) diff --git a/pypy/rpython/lltypesystem/rlist.py b/pypy/rpython/lltypesystem/rlist.py --- a/pypy/rpython/lltypesystem/rlist.py +++ b/pypy/rpython/lltypesystem/rlist.py @@ -303,12 +303,12 @@ return l.items def ll_getitem_fast(l, index): - ll_assert(index < l.length, "getitem out of bounds") + #ll_assert(index < l.length, "getitem out of bounds") return l.ll_items()[index] ll_getitem_fast.oopspec = 'list.getitem(l, index)' def ll_setitem_fast(l, index, item): - ll_assert(index < l.length, "setitem out of bounds") + #ll_assert(index < l.length, "setitem out of bounds") l.ll_items()[index] = item ll_setitem_fast.oopspec = 'list.setitem(l, index, item)' @@ -316,7 +316,7 @@ @typeMethod def ll_fixed_newlist(LIST, length): - ll_assert(length >= 0, "negative fixed list length") + #ll_assert(length >= 0, "negative fixed list length") l = malloc(LIST, length) return l ll_fixed_newlist.oopspec = 'newlist(length)' @@ -333,12 +333,12 @@ return l def ll_fixed_getitem_fast(l, index): - ll_assert(index < len(l), "fixed getitem out of bounds") + #ll_assert(index < len(l), "fixed getitem out of bounds") return l[index] ll_fixed_getitem_fast.oopspec = 'list.getitem(l, index)' def ll_fixed_setitem_fast(l, index, item): - ll_assert(index < len(l), "fixed setitem out of bounds") + #ll_assert(index < len(l), "fixed setitem out of bounds") l[index] = item ll_fixed_setitem_fast.oopspec = 'list.setitem(l, index, item)' _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit