Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r90550:1a55bff39061 Date: 2017-03-05 08:44 +0100 http://bitbucket.org/pypy/pypy/changeset/1a55bff39061/
Log: Fix test (mostly, but I'm not sure I understand why it doesn't seem to crash in a full pypy) diff --git a/rpython/jit/metainterp/optimizeopt/info.py b/rpython/jit/metainterp/optimizeopt/info.py --- a/rpython/jit/metainterp/optimizeopt/info.py +++ b/rpython/jit/metainterp/optimizeopt/info.py @@ -773,24 +773,33 @@ from rpython.jit.metainterp.optimizeopt.intutils import ConstIntBound,\ IntLowerBound - if mode is None: + length = self.getstrlen1(mode) + if length < 0: # XXX we can do better if we know it's an array return IntLowerBound(0) - else: - return ConstIntBound(self.getstrlen1(mode)) + return ConstIntBound(length) def getstrlen(self, op, string_optimizer, mode): - return ConstInt(self.getstrlen1(mode)) + length = self.getstrlen1(mode) + if length < 0: + return None + return ConstInt(length) def getstrlen1(self, mode): from rpython.jit.metainterp.optimizeopt import vstring - + if mode is vstring.mode_string: s = self._unpack_str(vstring.mode_string) + if s is None: + return -1 + return len(s) + elif mode is vstring.mode_unicode: + s = self._unpack_str(vstring.mode_unicode) + if s is None: + return -1 return len(s) else: - s = self._unpack_str(vstring.mode_unicode) - return len(s) + return -1 def getstrhash(self, op, mode): from rpython.jit.metainterp.optimizeopt import vstring _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit