Author: Maciej Fijalkowski <[email protected]>
Branch: optresult-unroll
Changeset: r79260:1e42367301da
Date: 2015-08-27 18:39 +0200
http://bitbucket.org/pypy/pypy/changeset/1e42367301da/

Log:    work on rpythonization

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
@@ -523,6 +523,7 @@
 
     @staticmethod
     def check_consistency_of(inputargs, operations, check_descr=True):
+        "NOT_RPYTHON"
         for box in inputargs:
             assert not isinstance(box, Const), "Loop.inputargs contains %r" % 
(box,)
         seen = dict.fromkeys(inputargs)
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
@@ -67,7 +67,7 @@
         pass
 
     def make_guards(self, op, short):
-        short.append(ResOperation(rop.GUARD_VALUE, [op, self._const]))
+        pass
     
 class NonNullPtrInfo(PtrInfo):
     _attrs_ = ('last_guard_pos',)
@@ -158,6 +158,7 @@
     def copy_fields_to_const(self, constinfo, optheap):
         if self._fields is not None:
             info = constinfo._get_info(optheap)
+            assert isinstance(info, AbstractStructPtrInfo)
             info._fields = self._fields[:]
 
     def all_items(self):
@@ -440,6 +441,7 @@
         arraydescr = self.arraydescr
         if self._items is not None:
             info = constinfo._get_array_info(arraydescr, optheap)
+            assert isinstance(info, ArrayPtrInfo)
             info._items = self._items[:]
 
     def _force_elements(self, op, optforce, descr):
@@ -599,6 +601,9 @@
     def getconst(self):
         return self._const
 
+    def make_guards(self, op, short):
+        short.append(ResOperation(rop.GUARD_VALUE, [op, self._const]))
+
     def _get_info(self, optheap):
         ref = self._const.getref_base()
         info = optheap.const_infos.get(ref, None)
diff --git a/rpython/jit/metainterp/optimizeopt/shortpreamble.py 
b/rpython/jit/metainterp/optimizeopt/shortpreamble.py
--- a/rpython/jit/metainterp/optimizeopt/shortpreamble.py
+++ b/rpython/jit/metainterp/optimizeopt/shortpreamble.py
@@ -1,5 +1,6 @@
 
 from collections import OrderedDict
+from rpython.rlib.objectmodel import we_are_translated
 from rpython.jit.metainterp.resoperation import ResOperation, OpHelpers,\
      rop, AbstractResOp, AbstractInputArg
 from rpython.jit.metainterp.history import Const, make_hashable_int,\
@@ -409,6 +410,7 @@
         label_op = ResOperation(rop.LABEL, self.short_inputargs[:])
         jump_op = ResOperation(rop.JUMP, self.short_preamble_jump)
         # WARNING! the short_preamble_jump is shared on purpose
-        TreeLoop.check_consistency_of(self.short_inputargs,
-                                      self.short + [jump_op], 
check_descr=False)
+        if not we_are_translated():
+            TreeLoop.check_consistency_of(self.short_inputargs,
+                                self.short + [jump_op], check_descr=False)
         return [label_op] + self.short + [jump_op]
diff --git a/rpython/jit/metainterp/optimizeopt/unroll.py 
b/rpython/jit/metainterp/optimizeopt/unroll.py
--- a/rpython/jit/metainterp/optimizeopt/unroll.py
+++ b/rpython/jit/metainterp/optimizeopt/unroll.py
@@ -52,11 +52,15 @@
                 self.make_constant_class(op, known_class, False)
             if isinstance(preamble_info, info.ArrayPtrInfo):
                 arr_info = info.ArrayPtrInfo(preamble_info.arraydescr)
-                arr_info.lenbound = preamble_info.getlenbound(None).clone()
+                bound = preamble_info.getlenbound(None).clone()
+                assert isinstance(bound, intutils.IntBound)
+                arr_info.lenbound = bound
                 op.set_forwarded(arr_info)
             if isinstance(preamble_info, StrPtrInfo):
                 str_info = StrPtrInfo(preamble_info.mode)
-                str_info.lenbound = preamble_info.getlenbound(None).clone()
+                bound = preamble_info.getlenbound(None).clone()
+                assert isinstance(bound, intutils.IntBound)
+                str_info.lenbound = bound
                 op.set_forwarded(str_info)
             if preamble_info.is_nonnull():
                 self.make_nonnull(op)
@@ -130,7 +134,9 @@
         # the label_op again
         label_op.initarglist(label_args + extra)
         if new_virtual_state is not None:
-            self.jump_to_preamble(start_label.getdescr(), end_jump, info)
+            celltoken = start_label.getdescr()
+            assert isinstance(celltoken, JitCellToken)
+            self.jump_to_preamble(celltoken, end_jump, info)
             return (UnrollInfo(target_token, label_op, []),
                     self.optimizer._newoperations)
             #return new_virtual_state, self.optimizer._newoperations
@@ -147,6 +153,7 @@
             call_pure_results, True)
         jump_op = operations[-1]
         cell_token = jump_op.getdescr()
+        assert isinstance(cell_token, JitCellToken)
         if not inline_short_preamble or len(cell_token.target_tokens) == 1:
             return self.jump_to_preamble(cell_token, jump_op, info)
         # force all the information that does not go to the short
diff --git a/rpython/jit/metainterp/optimizeopt/virtualstate.py 
b/rpython/jit/metainterp/optimizeopt/virtualstate.py
--- a/rpython/jit/metainterp/optimizeopt/virtualstate.py
+++ b/rpython/jit/metainterp/optimizeopt/virtualstate.py
@@ -1,7 +1,7 @@
 from rpython.jit.metainterp.walkvirtual import VirtualVisitor
 from rpython.jit.metainterp.history import ConstInt, ConstPtr, ConstFloat
 from rpython.jit.metainterp.optimizeopt.info import ArrayPtrInfo,\
-     ArrayStructInfo
+     ArrayStructInfo, AbstractStructPtrInfo
 from rpython.jit.metainterp.optimizeopt.intutils import \
      MININT, MAXINT, IntBound
 from rpython.jit.metainterp.resoperation import rop, ResOperation,\
@@ -175,6 +175,7 @@
     def enum_forced_boxes(self, boxes, box, optimizer, force_boxes=False):
         box = optimizer.get_box_replacement(box)
         info = optimizer.getptrinfo(box)
+        assert isinstance(info, AbstractStructPtrInfo)
         if info is None or not info.is_virtual():
             raise BadVirtualState()
         for i in range(len(self.fielddescrs)):
@@ -255,7 +256,7 @@
         for i in range(len(self.fieldstate)):
             fieldbox = info.getitem(self.arraydescr, i)
             if fieldbox is None:
-                xxx
+                raise Exception("do we ever get here?")
                 v = value.get_missing_null_value()
             s = self.fieldstate[i]
             if s.position > self.position:
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
@@ -127,7 +127,8 @@
         if self.lenbound and self.lenbound.lower >= 1:
             if self.mode is mode_string:
                 lenop = ResOperation(rop.STRLEN, [op])
-            elif self.mode is mode_unicode:
+            else:
+                assert self.mode is mode_unicode
                 lenop = ResOperation(rop.UNICODELEN, [op])
             short.append(lenop)
             self.lenbound.make_guards(lenop, short)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to