[pypy-commit] pypy jit-multilabel: Translation fix. Why am I not allowed to use a default value on the lengthbox argument?
hakanardo
noreply at buildbot.pypy.org
Tue Dec 13 10:53:03 CET 2011
Author: Hakan Ardo <hakan at debian.org>
Branch: jit-multilabel
Changeset: r50459:e2479d8f3ce5
Date: 2011-12-13 10:52 +0100
http://bitbucket.org/pypy/pypy/changeset/e2479d8f3ce5/
Log: Translation fix. Why am I not allowed to use a default value on the
lengthbox argument?
diff --git a/pypy/jit/metainterp/optimizeopt/vstring.py b/pypy/jit/metainterp/optimizeopt/vstring.py
--- a/pypy/jit/metainterp/optimizeopt/vstring.py
+++ b/pypy/jit/metainterp/optimizeopt/vstring.py
@@ -44,7 +44,7 @@
class __extend__(optimizer.OptValue):
"""New methods added to the base class OptValue for this file."""
- def getstrlen(self, string_optimizer, mode, lengthbox=None):
+ def getstrlen(self, string_optimizer, mode, lengthbox):
if mode is mode_string:
s = self.get_constant_string_spec(mode_string)
if s is not None:
@@ -74,7 +74,7 @@
# Copies the pointer-to-string 'self' into the target string
# given by 'targetbox', at the specified offset. Returns the offset
# at the end of the copy.
- lengthbox = self.getstrlen(string_optimizer, mode)
+ lengthbox = self.getstrlen(string_optimizer, mode, None)
srcbox = self.force_box(string_optimizer)
return copy_str_content(string_optimizer, srcbox, targetbox,
CONST_0, offsetbox, lengthbox, mode)
@@ -103,7 +103,7 @@
return
assert self.source_op is not None
self.box = box = self.source_op.result
- lengthbox = self.getstrlen(optforce, self.mode)
+ lengthbox = self.getstrlen(optforce, self.mode, None)
op = ResOperation(self.mode.NEWSTR, [lengthbox], box)
if not we_are_translated():
op.name = 'FORCE'
@@ -136,7 +136,7 @@
self._chars = longerlist[start:stop]
# slice the 'longerlist', which may also contain Nones
- def getstrlen(self, _, mode, lengthbox=None):
+ def getstrlen(self, _, mode, lengthbox):
if self._lengthbox is None:
self._lengthbox = ConstInt(len(self._chars))
return self._lengthbox
@@ -217,12 +217,12 @@
self.left = left
self.right = right
- def getstrlen(self, string_optimizer, mode, lengthbox=None):
+ def getstrlen(self, string_optimizer, mode, lengthbox):
if self.lengthbox is None:
- len1box = self.left.getstrlen(string_optimizer, mode)
+ len1box = self.left.getstrlen(string_optimizer, mode, None)
if len1box is None:
return None
- len2box = self.right.getstrlen(string_optimizer, mode)
+ len2box = self.right.getstrlen(string_optimizer, mode, None)
if len2box is None:
return None
self.lengthbox = _int_add(string_optimizer, len1box, len2box)
@@ -269,7 +269,7 @@
self.vstart = vstart
self.vlength = vlength
- def getstrlen(self, optforce, mode, lengthbox=None):
+ def getstrlen(self, optforce, mode, lengthbox):
return self.vlength.force_box(optforce)
@specialize.arg(1)
@@ -286,7 +286,7 @@
return None
def string_copy_parts(self, string_optimizer, targetbox, offsetbox, mode):
- lengthbox = self.getstrlen(string_optimizer, mode)
+ lengthbox = self.getstrlen(string_optimizer, mode, None)
return copy_str_content(string_optimizer,
self.vstr.force_box(string_optimizer), targetbox,
self.vstart.force_box(string_optimizer), offsetbox,
@@ -459,7 +459,7 @@
return result
#
if isinstance(value, VStringConcatValue) and vindex.is_constant():
- len1box = value.left.getstrlen(self, mode)
+ len1box = value.left.getstrlen(self, mode, None)
if isinstance(len1box, ConstInt):
index = vindex.box.getint()
len1 = len1box.getint()
@@ -602,8 +602,8 @@
v1 = self.getvalue(op.getarg(1))
v2 = self.getvalue(op.getarg(2))
#
- l1box = v1.getstrlen(None, mode)
- l2box = v2.getstrlen(None, mode)
+ l1box = v1.getstrlen(None, mode, None)
+ l2box = v2.getstrlen(None, mode, None)
if (l1box is not None and l2box is not None and
isinstance(l1box, ConstInt) and
isinstance(l2box, ConstInt) and
@@ -632,15 +632,15 @@
return False
def handle_str_equal_level1(self, v1, v2, resultbox, mode):
- l2box = v2.getstrlen(None, mode)
+ l2box = v2.getstrlen(None, mode, None)
if isinstance(l2box, ConstInt):
if l2box.value == 0:
- lengthbox = v1.getstrlen(self, mode)
+ lengthbox = v1.getstrlen(self, mode, None)
seo = self.optimizer.send_extra_operation
seo(ResOperation(rop.INT_EQ, [lengthbox, CONST_0], resultbox))
return True
if l2box.value == 1:
- l1box = v1.getstrlen(None, mode)
+ l1box = v1.getstrlen(None, mode, None)
if isinstance(l1box, ConstInt) and l1box.value == 1:
# comparing two single chars
vchar1 = self.strgetitem(v1, optimizer.CVAL_ZERO, mode)
@@ -676,7 +676,7 @@
return False
def handle_str_equal_level2(self, v1, v2, resultbox, mode):
- l2box = v2.getstrlen(None, mode)
+ l2box = v2.getstrlen(None, mode, None)
if isinstance(l2box, ConstInt):
if l2box.value == 1:
vchar = self.strgetitem(v2, optimizer.CVAL_ZERO, mode)
More information about the pypy-commit
mailing list