Author: Carl Friedrich Bolz-Tereick <[email protected]>
Branch:
Changeset: r97694:f0d037751b82
Date: 2019-10-01 21:02 +0200
http://bitbucket.org/pypy/pypy/changeset/f0d037751b82/
Log: don't turn ord(u) and u.islower() etc into bridges
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
@@ -41,6 +41,10 @@
def prev_codepoint_pos_dont_look_inside(utf8, p):
return rutf8.prev_codepoint_pos(utf8, p)
[email protected]
+def codepoint_at_pos_dont_look_inside(utf8, p):
+ return rutf8.codepoint_at_pos(utf8, p)
+
class W_UnicodeObject(W_Root):
import_from_mixin(StringMethods)
@@ -134,7 +138,7 @@
raise oefmt(space.w_TypeError,
"ord() expected a character, but string of length %d "
"found", self._len())
- return space.newint(rutf8.codepoint_at_pos(self._utf8, 0))
+ return space.newint(self.codepoint_at_pos_dont_look_inside(0))
def _empty(self):
return W_UnicodeObject.EMPTY
@@ -432,7 +436,7 @@
if self._length == 0:
return space.w_False
if self._length == 1:
- return space.newbool(func(rutf8.codepoint_at_pos(self._utf8, 0)))
+ return
space.newbool(func(self.codepoint_at_pos_dont_look_inside(0)))
else:
return self._is_generic_loop(space, self._utf8, func_name)
@@ -977,6 +981,11 @@
return pos - 1
return prev_codepoint_pos_dont_look_inside(self._utf8, pos)
+ def codepoint_at_pos_dont_look_inside(self, pos):
+ if self.is_ascii():
+ return ord(self._utf8[pos])
+ return codepoint_at_pos_dont_look_inside(self._utf8, pos)
+
@always_inline
def _unwrap_and_search(self, space, w_sub, w_start, w_end, forward=True):
w_sub = self.convert_arg_to_w_unicode(space, w_sub)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit