[pypy-commit] pypy default: comparing a unicode char to str char no longer requires allocating a string
alex_gaynor
noreply at buildbot.pypy.org
Thu Nov 24 11:11:05 CET 2011
Author: Alex Gaynor <alex.gaynor at gmail.com>
Branch:
Changeset: r49719:5f1a23beccab
Date: 2011-11-24 04:09 -0600
http://bitbucket.org/pypy/pypy/changeset/5f1a23beccab/
Log: comparing a unicode char to str char no longer requires allocating a
string
diff --git a/pypy/module/pypyjit/test_pypy_c/test_string.py b/pypy/module/pypyjit/test_pypy_c/test_string.py
--- a/pypy/module/pypyjit/test_pypy_c/test_string.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_string.py
@@ -33,12 +33,8 @@
i24 = int_ge(i19, i12)
guard_false(i24, descr=...)
i25 = unicodegetitem(p13, i19)
- p27 = newstr(1)
- strsetitem(p27, 0, i23)
- p30 = call(ConstClass(ll_str2unicode__rpy_stringPtr), p27, descr=...)
- guard_no_exception(descr=...)
- i32 = call(ConstClass(_ll_2_str_eq_checknull_char__rpy_unicodePtr_UniChar), p30, i25, descr=...)
- guard_true(i32, descr=...)
+ i26 = int_eq(i23, i25)
+ guard_true(i26, descr=...)
i34 = int_add(i6, 1)
--TICK--
jump(p0, p1, p2, p3, p4, p5, i34, p7, p8, i9, i10, p11, i12, p13, descr=...)
diff --git a/pypy/rpython/lltypesystem/rstr.py b/pypy/rpython/lltypesystem/rstr.py
--- a/pypy/rpython/lltypesystem/rstr.py
+++ b/pypy/rpython/lltypesystem/rstr.py
@@ -316,6 +316,8 @@
s.chars[0] = ch
return s
+ @jit.look_inside_iff(lambda str: jit.isconstant(len(str)) and len(str) == 1)
+ @jit.oopspec("str.str2unicode(str)")
def ll_str2unicode(str):
lgt = len(str.chars)
s = mallocunicode(lgt)
@@ -324,7 +326,6 @@
raise UnicodeDecodeError
s.chars[i] = cast_primitive(UniChar, str.chars[i])
return s
- ll_str2unicode.oopspec = 'str.str2unicode(str)'
@jit.elidable
def ll_strhash(s):
More information about the pypy-commit
mailing list