[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