[pypy-commit] pypy unroll-if-const: create some fast paths and add tests
fijal
noreply at buildbot.pypy.org
Mon Jul 25 19:30:42 CEST 2011
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: unroll-if-const
Changeset: r45976:dac2fefe4742
Date: 2011-07-25 19:30 +0200
http://bitbucket.org/pypy/pypy/changeset/dac2fefe4742/
Log: create some fast paths and add tests
diff --git a/pypy/rpython/lltypesystem/rbuilder.py b/pypy/rpython/lltypesystem/rbuilder.py
--- a/pypy/rpython/lltypesystem/rbuilder.py
+++ b/pypy/rpython/lltypesystem/rbuilder.py
@@ -68,6 +68,8 @@
def ll_append(ll_builder, ll_str):
used = ll_builder.used
lgt = len(ll_str.chars)
+ if lgt == 0:
+ return
needed = lgt + used
if needed > ll_builder.allocated:
ll_builder.grow(ll_builder, lgt)
@@ -84,6 +86,8 @@
@staticmethod
def ll_append_slice(ll_builder, ll_str, start, end):
needed = end - start
+ if needed == 0:
+ return
used = ll_builder.used
if needed + used > ll_builder.allocated:
ll_builder.grow(ll_builder, needed)
@@ -93,6 +97,8 @@
@staticmethod
def ll_append_multiple_char(ll_builder, char, times):
+ if times == 0:
+ return
used = ll_builder.used
if times + used > ll_builder.allocated:
ll_builder.grow(ll_builder, times)
diff --git a/pypy/rpython/test/test_rbuilder.py b/pypy/rpython/test/test_rbuilder.py
--- a/pypy/rpython/test/test_rbuilder.py
+++ b/pypy/rpython/test/test_rbuilder.py
@@ -27,7 +27,9 @@
s.append("a")
s.append("abc")
s.append_slice("abc", 1, 2)
+ s.append_slice("abc", 1, 1)
s.append_multiple_char('d', 4)
+ s.append_multiple_char('d', 0)
return s.build()
res = self.ll_to_string(self.interpret(func, []))
assert res == "aabcbdddd"
@@ -36,6 +38,7 @@
def func():
s = StringBuilder(4)
s.append("abcd")
+ s.append("")
s.append("defg")
s.append("rty")
return s.build()
@@ -47,6 +50,7 @@
s = UnicodeBuilder()
s.append(u'a')
s.append(u'abc')
+ s.append(u'')
s.append(u'abcdef')
s.append_slice(u'abc', 1, 2)
s.append_multiple_char(u'u', 4)
More information about the pypy-commit
mailing list