[pypy-commit] pypy optresult: various random rpython fixes

fijal noreply at buildbot.pypy.org
Wed Jun 3 09:17:19 CEST 2015


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult
Changeset: r77800:402518a1edbf
Date: 2015-06-02 19:17 +0200
http://bitbucket.org/pypy/pypy/changeset/402518a1edbf/

Log:	various random rpython fixes

diff --git a/rpython/jit/metainterp/executor.py b/rpython/jit/metainterp/executor.py
--- a/rpython/jit/metainterp/executor.py
+++ b/rpython/jit/metainterp/executor.py
@@ -495,34 +495,44 @@
         check_descr(descr)
         if arity == -1:
             func = get_execute_function(opnum, -1, True)
-            return func(cpu, metainterp, argboxes, descr)
+            if func:
+                return func(cpu, metainterp, argboxes, descr)
         if arity == 0:
             func = get_execute_function(opnum, 0, True)
-            return func(cpu, metainterp, descr)
+            if func:
+                return func(cpu, metainterp, descr)
         if arity == 1:
             func = get_execute_function(opnum, 1, True)
-            return func(cpu, metainterp, argboxes[0], descr)
+            if func:
+                return func(cpu, metainterp, argboxes[0], descr)
         if arity == 2:
             func = get_execute_function(opnum, 2, True)
-            return func(cpu, metainterp, argboxes[0], argboxes[1], descr)
+            if func:
+                return func(cpu, metainterp, argboxes[0], argboxes[1], descr)
         if arity == 3:
             func = get_execute_function(opnum, 3, True)
-            return func(cpu, metainterp, argboxes[0], argboxes[1], argboxes[2],
-                        descr)
+            if func:
+                return func(cpu, metainterp, argboxes[0], argboxes[1],
+                            argboxes[2], descr)
     else:
         assert descr is None
         if arity == 1:
             func = get_execute_function(opnum, 1, False)
-            return func(cpu, metainterp, argboxes[0])
+            if func:
+                return func(cpu, metainterp, argboxes[0])
         if arity == 2:
             func = get_execute_function(opnum, 2, False)
-            return func(cpu, metainterp, argboxes[0], argboxes[1])
+            if func:
+                return func(cpu, metainterp, argboxes[0], argboxes[1])
         if arity == 3:
             func = get_execute_function(opnum, 3, False)
-            return func(cpu, metainterp, argboxes[0], argboxes[1], argboxes[2])
+            if func:
+                return func(cpu, metainterp, argboxes[0], argboxes[1],
+                            argboxes[2])
         if arity == 5:    # copystrcontent, copyunicodecontent
             func = get_execute_function(opnum, 5, False)
-            return func(cpu, metainterp, argboxes[0], argboxes[1],
+            if func:
+                return func(cpu, metainterp, argboxes[0], argboxes[1],
                         argboxes[2], argboxes[3], argboxes[4])
     raise NotImplementedError
 
diff --git a/rpython/jit/metainterp/history.py b/rpython/jit/metainterp/history.py
--- a/rpython/jit/metainterp/history.py
+++ b/rpython/jit/metainterp/history.py
@@ -168,7 +168,7 @@
         return ConstPtr(lltype.nullptr(llmemory.GCREF.TO))
     elif lltype.typeOf(value) == lltype.Signed:
         return ConstInt(value)
-    elif type(value) is bool:
+    elif not we_are_translated() and type(value) is bool:
         return ConstInt(int(value))
     elif isinstance(value, float):
         return ConstFloat(value)
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
@@ -41,7 +41,7 @@
     def same_info(self, other):
         return self is other
 
-    def getstrlen(self, arg, opt, mode, create_ops=True):
+    def getstrlen(self, op, string_optimizer, mode, create_ops=True):
         return None
 
     
@@ -218,12 +218,12 @@
                 count += 1
         return count
 
-    def setitem(self, index, item, cf=None, optheap=None):
+    def setitem(self, index, op, cf=None, optheap=None):
         if self._items is None:
             self._items = [None] * (index + 1)
         if index >= len(self._items):
             self._items = self._items + [None] * (index - len(self._items) + 1)
-        self._items[index] = item
+        self._items[index] = op
         if cf is not None:
             assert not self.is_virtual()
             cf.register_dirty_field(self)
diff --git a/rpython/jit/metainterp/optimizeopt/rewrite.py b/rpython/jit/metainterp/optimizeopt/rewrite.py
--- a/rpython/jit/metainterp/optimizeopt/rewrite.py
+++ b/rpython/jit/metainterp/optimizeopt/rewrite.py
@@ -430,7 +430,7 @@
             if b.getint() == 0:
                 self.last_emitted_operation = REMOVED
                 return
-            opnum = OpHelpers.call_for_type(op)
+            opnum = OpHelpers.call_for_type(op.type)
             op = op.copy_and_change(opnum, args=op.getarglist()[1:])
         self.emit_operation(op)
 
diff --git a/rpython/jit/metainterp/optimizeopt/vstring.py b/rpython/jit/metainterp/optimizeopt/vstring.py
--- a/rpython/jit/metainterp/optimizeopt/vstring.py
+++ b/rpython/jit/metainterp/optimizeopt/vstring.py
@@ -71,6 +71,7 @@
                 self.lenbound = intutils.ConstIntBound(self.length)
         return self.lenbound
 
+    @specialize.arg(2)
     def get_constant_string_spec(self, string_optimizer, mode):
         return None # can't be constant
 
@@ -144,8 +145,8 @@
             self._chars = [None] * length
         StrPtrInfo.__init__(self, mode, is_virtual, length)
 
-    def setitem(self, index, item, cf=None, optheap=None):
-        self._chars[index] = item
+    def setitem(self, index, op, cf=None, optheap=None):
+        self._chars[index] = op
 
     def setup_slice(self, longerlist, start, stop):
         assert 0 <= start <= stop <= len(longerlist)
diff --git a/rpython/jit/metainterp/quasiimmut.py b/rpython/jit/metainterp/quasiimmut.py
--- a/rpython/jit/metainterp/quasiimmut.py
+++ b/rpython/jit/metainterp/quasiimmut.py
@@ -101,6 +101,11 @@
 
 
 class QuasiImmutDescr(AbstractDescr):
+    # those fields are necessary for translation without quasi immutable
+    # fields
+    struct = None
+    fielddescr = None
+    
     def __init__(self, cpu, struct, fielddescr, mutatefielddescr):
         self.cpu = cpu
         self.struct = struct
@@ -110,7 +115,8 @@
         self.constantfieldbox = self.get_current_constant_fieldvalue()
 
     def get_parent_descr(self):
-        return self.fielddescr.get_parent_descr()
+        if self.fielddescr is not None:
+            return self.fielddescr.get_parent_descr()
 
     def get_current_constant_fieldvalue(self):
         struct = self.struct


More information about the pypy-commit mailing list