[pypy-commit] pypy unicode-utf8: disable speedups for now
fijal
pypy.commits at gmail.com
Sun Mar 5 10:44:07 EST 2017
Author: fijal
Branch: unicode-utf8
Changeset: r90570:3e38274ddd35
Date: 2017-03-05 19:42 +0400
http://bitbucket.org/pypy/pypy/changeset/3e38274ddd35/
Log: disable speedups for now
diff --git a/pypy/module/_pypyjson/interp_decoder.py b/pypy/module/_pypyjson/interp_decoder.py
--- a/pypy/module/_pypyjson/interp_decoder.py
+++ b/pypy/module/_pypyjson/interp_decoder.py
@@ -295,7 +295,7 @@
i += 1
bits |= ord(ch)
if ch == '"':
- if bits & 0x80:
+ if 1 or bits & 0x80:
# the 8th bit is set, it's an utf8 strnig
content_utf8 = self.getslice(start, i-1)
content_unicode = unicodehelper.decode_utf8(self.space, content_utf8)
diff --git a/pypy/objspace/std/unicodeobject.py b/pypy/objspace/std/unicodeobject.py
--- a/pypy/objspace/std/unicodeobject.py
+++ b/pypy/objspace/std/unicodeobject.py
@@ -20,6 +20,7 @@
from pypy.objspace.std.formatting import mod_format
from pypy.objspace.std.stringmethods import StringMethods
from pypy.objspace.std.util import IDTAG_SPECIAL, IDTAG_SHIFT
+from pypy.objspace.std.sliceobject import unwrap_start_stop
__all__ = ['W_UnicodeObject', 'wrapunicode', 'plain_str2unicode',
'encode_object', 'decode_object', 'unicode_from_object',
@@ -75,6 +76,13 @@
uid = (base << IDTAG_SHIFT) | IDTAG_SPECIAL
return space.newint(uid)
+ def _convert_idx_params_unicode(self, space, w_start, w_end):
+ """ Specialcase this for unicode - one less element in the tuple
+ """
+ lenself = self._len()
+ start, end = unwrap_start_stop(space, lenself, w_start, w_end)
+ return start, end
+
def str_w(self, space):
return space.text_w(space.str(self))
@@ -125,8 +133,8 @@
return rutf8.compute_length_utf8(self._utf8)
def _val(self, space):
- #import pdb
- #pdb.set_trace()
+ import pdb
+ pdb.set_trace()
return self._utf8.decode('utf8')
@staticmethod
@@ -446,9 +454,6 @@
i = rutf8.next_codepoint_pos(val, i)
return space.newbool(cased)
- def _starts_ends_overflow(self, prefix):
- return len(prefix) == 0
-
def descr_add(self, space, w_other):
try:
w_other = self.convert_arg_to_w_unicode(space, w_other)
@@ -722,6 +727,26 @@
assert rpos >= lpos # annotator hint, don't remove
return self._utf8_sliced(lpos, rpos, lgt)
+ def descr_startswith(self, space, w_prefix, w_start=None, w_end=None):
+ (start, end) = self._convert_idx_params_unicode(space, w_start, w_end)
+ if space.isinstance_w(w_prefix, space.w_tuple):
+ return self._startswith_tuple(space, w_prefix, start, end)
+ return space.newbool(self._startswith(space, w_prefix, start, end))
+
+ def _startswith_tuple(self, space, w_prefix, start, end):
+ for w_prefix in space.fixedview(w_prefix):
+ if self._startswith(space, w_prefix, start, end):
+ return space.w_True
+ return space.w_False
+
+ def _startswith(self, space, w_prefix, start, end):
+ prefix = self.convert_arg_to_w_unicode(space, w_prefix)._utf8
+ if start > self._len():
+ return len(prefix) == 0 # bug-to-bug cpython compatibility
+ xxx
+ return startswith(self._utf8, prefix, start, end)
+
+
def descr_getnewargs(self, space):
return space.newtuple([W_UnicodeObject(self._utf8, self._length)])
More information about the pypy-commit
mailing list