[pypy-commit] pypy optimizeopt-cleanup: Replace method Optimization.getrawptrinfo() with function getrawptrinfo()

rlamy pypy.commits at gmail.com
Fri May 10 19:48:38 EDT 2019


Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: optimizeopt-cleanup
Changeset: r96593:34d57de52fa1
Date: 2019-05-11 00:47 +0100
http://bitbucket.org/pypy/pypy/changeset/34d57de52fa1/

Log:	Replace method Optimization.getrawptrinfo() with function
	getrawptrinfo()

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
@@ -9,7 +9,6 @@
 from rpython.jit.metainterp.optimize import InvalidLoop
 from .util import get_box_replacement
 
-
 INFO_NULL = 0
 INFO_NONNULL = 1
 INFO_UNKNOWN = 2
@@ -110,7 +109,7 @@
 
     def mark_last_guard(self, optimizer):
         if (optimizer.getlastop() is None or
-            not optimizer.getlastop().is_guard()):
+                not optimizer.getlastop().is_guard()):
             # there can be a really emitted operation that's not a guard
             # e.g. a setfield, ignore those
             return
@@ -468,7 +467,7 @@
         return self.parent.getitem_raw(self.offset+offset, itemsize, descr)
 
     def setitem_raw(self, offset, itemsize, descr, itemop):
-        self.parent.setitem_raw(self.offset+offset, itemsize, descr, itemop)
+        self.parent.setitem_raw(self.offset + offset, itemsize, descr, itemop)
 
     def _force_elements(self, op, optforce, descr):
         if self.parent.is_virtual():
@@ -639,7 +638,7 @@
     def _compute_index(self, index, fielddescr):
         all_fdescrs = fielddescr.get_arraydescr().get_all_fielddescrs()
         if all_fdescrs is None:
-            return 0 # annotation hack
+            return 0  # annotation hack
         one_size = len(all_fdescrs)
         return index * one_size + fielddescr.get_field_descr().get_index()
 
@@ -675,8 +674,7 @@
         for index in range(self.getlength()):
             for fielddescr in fielddescrs:
                 itemop = self._items[i]
-                if (itemop is not None and
-                    not isinstance(itemop, Const)):
+                if (itemop is not None and not isinstance(itemop, Const)):
                     ptrinfo = optimizer.getptrinfo(itemop)
                     if ptrinfo and ptrinfo.is_virtual():
                         ptrinfo.visitor_walk_recursive(itemop, visitor,
@@ -703,7 +701,8 @@
 
     def _get_info(self, descr, optheap):
         ref = self._const.getref_base()
-        if not ref: raise InvalidLoop   # null protection
+        if not ref:
+            raise InvalidLoop   # null protection
         info = optheap.const_infos.get(ref, None)
         if info is None:
             info = StructPtrInfo(descr)
@@ -712,7 +711,8 @@
 
     def _get_array_info(self, descr, optheap):
         ref = self._const.getref_base()
-        if not ref: raise InvalidLoop   # null protection
+        if not ref:
+            raise InvalidLoop   # null protection
         info = optheap.const_infos.get(ref, None)
         if info is None:
             info = ArrayPtrInfo(descr)
@@ -778,8 +778,8 @@
         return self._unpack_str(mode)
 
     def getlenbound(self, mode):
-        from rpython.jit.metainterp.optimizeopt.intutils import ConstIntBound,\
-                IntLowerBound
+        from rpython.jit.metainterp.optimizeopt.intutils import (
+            ConstIntBound, IntLowerBound)
 
         length = self.getstrlen1(mode)
         if length < 0:
@@ -846,3 +846,23 @@
 
     def make_guards(self, op, short, optimizer):
         short.append(ResOperation(rop.GUARD_VALUE, [op, self._const]))
+
+
+def getrawptrinfo(op):
+    from rpython.jit.metainterp.optimizeopt.intutils import IntBound
+    assert op.type == 'i'
+    op = op.get_box_replacement()
+    assert op.type == 'i'
+    if isinstance(op, ConstInt):
+        return ConstPtrInfo(op)
+    fw = op.get_forwarded()
+    if isinstance(fw, IntBound):
+        return None
+    if fw is not None:
+        if isinstance(fw, AbstractRawPtrInfo):
+            return fw
+        fw = RawStructPtrInfo()
+        op.set_forwarded(fw)
+        assert isinstance(fw, AbstractRawPtrInfo)
+        return fw
+    return None
diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py b/rpython/jit/metainterp/optimizeopt/optimizer.py
--- a/rpython/jit/metainterp/optimizeopt/optimizer.py
+++ b/rpython/jit/metainterp/optimizeopt/optimizer.py
@@ -10,6 +10,7 @@
     deserialize_optimizer_knowledge)
 from rpython.jit.metainterp.resoperation import (
     rop, AbstractResOp, GuardResOp, OpHelpers)
+from .info import getrawptrinfo
 from rpython.jit.metainterp.optimizeopt import info
 from rpython.jit.metainterp.optimize import InvalidLoop
 from rpython.rlib.objectmodel import specialize, we_are_translated
@@ -137,7 +138,7 @@
 
     def getptrinfo(self, op):
         if op.type == 'i':
-            return self.getrawptrinfo(op)
+            return getrawptrinfo(op)
         elif op.type == 'f':
             return None
         assert op.type == 'r'
@@ -157,24 +158,6 @@
             return True
         return False
 
-    def getrawptrinfo(self, op):
-        assert op.type == 'i'
-        op = get_box_replacement(op)
-        assert op.type == 'i'
-        if isinstance(op, ConstInt):
-            return info.ConstPtrInfo(op)
-        fw = op.get_forwarded()
-        if isinstance(fw, IntBound):
-            return None
-        if fw is not None:
-            if isinstance(fw, info.AbstractRawPtrInfo):
-                return fw
-            fw = info.RawStructPtrInfo()
-            op.set_forwarded(fw)
-            assert isinstance(fw, info.AbstractRawPtrInfo)
-            return fw
-        return None
-
     def replace_op_with(self, op, newopnum, args=None, descr=None):
         return self.optimizer.replace_op_with(op, newopnum, args, descr)
 
@@ -327,7 +310,7 @@
                                                 self.optearlyforce, rec)
             return box
         if box.type == 'i':
-            info = self.getrawptrinfo(box)
+            info = getrawptrinfo(box)
             if info is not None:
                 return info.force_at_the_end_of_preamble(box,
                                             self.optearlyforce, None)
@@ -854,7 +837,7 @@
             opinfo = self.getptrinfo(op)
             return opinfo is not None and opinfo.is_virtual()
         if op.type == 'i':
-            opinfo = self.getrawptrinfo(op)
+            opinfo = getrawptrinfo(op)
             return opinfo is not None and opinfo.is_virtual()
         return False
 
diff --git a/rpython/jit/metainterp/optimizeopt/virtualize.py b/rpython/jit/metainterp/optimizeopt/virtualize.py
--- a/rpython/jit/metainterp/optimizeopt/virtualize.py
+++ b/rpython/jit/metainterp/optimizeopt/virtualize.py
@@ -5,8 +5,8 @@
 from rpython.jit.metainterp.optimizeopt.optimizer import REMOVED
 from rpython.jit.metainterp.optimizeopt.util import (
     make_dispatcher_method, get_box_replacement)
-
 from rpython.jit.metainterp.optimizeopt.rawbuffer import InvalidRawOperation
+from .info import getrawptrinfo
 from rpython.jit.metainterp.resoperation import rop, ResOperation
 
 
@@ -246,13 +246,13 @@
         self.last_emitted_operation = REMOVED
 
     def do_RAW_FREE(self, op):
-        opinfo = self.getrawptrinfo(op.getarg(1))
+        opinfo = getrawptrinfo(op.getarg(1))
         if opinfo and opinfo.is_virtual():
             return
         return self.emit(op)
 
     def optimize_INT_ADD(self, op):
-        opinfo = self.getrawptrinfo(op.getarg(0))
+        opinfo = getrawptrinfo(op.getarg(0))
         offsetbox = self.get_constant_box(op.getarg(1))
         if opinfo and opinfo.is_virtual() and offsetbox is not None:
             offset = offsetbox.getint()
@@ -315,7 +315,7 @@
         return offset, itemsize, descr
 
     def optimize_GETARRAYITEM_RAW_I(self, op):
-        opinfo = self.getrawptrinfo(op.getarg(0))
+        opinfo = getrawptrinfo(op.getarg(0))
         if opinfo and opinfo.is_virtual():
             indexbox = self.get_constant_box(op.getarg(1))
             if indexbox is not None:
@@ -333,7 +333,7 @@
     optimize_GETARRAYITEM_RAW_F = optimize_GETARRAYITEM_RAW_I
 
     def optimize_SETARRAYITEM_RAW(self, op):
-        opinfo = self.getrawptrinfo(op.getarg(0))
+        opinfo = getrawptrinfo(op.getarg(0))
         if opinfo and opinfo.is_virtual():
             indexbox = self.get_constant_box(op.getarg(1))
             if indexbox is not None:
@@ -355,7 +355,7 @@
         return offset, itemsize, descr
 
     def optimize_RAW_LOAD_I(self, op):
-        opinfo = self.getrawptrinfo(op.getarg(0))
+        opinfo = getrawptrinfo(op.getarg(0))
         if opinfo and opinfo.is_virtual():
             offsetbox = self.get_constant_box(op.getarg(1))
             if offsetbox is not None:
@@ -371,7 +371,7 @@
     optimize_RAW_LOAD_F = optimize_RAW_LOAD_I
 
     def optimize_RAW_STORE(self, op):
-        opinfo = self.getrawptrinfo(op.getarg(0))
+        opinfo = getrawptrinfo(op.getarg(0))
         if opinfo and opinfo.is_virtual():
             offsetbox = self.get_constant_box(op.getarg(1))
             if offsetbox is not None:
diff --git a/rpython/jit/metainterp/resume.py b/rpython/jit/metainterp/resume.py
--- a/rpython/jit/metainterp/resume.py
+++ b/rpython/jit/metainterp/resume.py
@@ -224,12 +224,13 @@
     def _number_boxes(self, iter, arr, optimizer, numb_state):
         """ Number boxes from one snapshot
         """
+        from rpython.jit.metainterp.optimizeopt.info import getrawptrinfo
         num_boxes = numb_state.num_boxes
         num_virtuals = numb_state.num_virtuals
         liveboxes = numb_state.liveboxes
         for item in arr:
             box = iter.get(rffi.cast(lltype.Signed, item))
-            box = optimizer.get_box_replacement(box)
+            box = box.get_box_replacement()
 
             if isinstance(box, Const):
                 tagged = self.getconst(box)
@@ -241,7 +242,7 @@
                     info = optimizer.getptrinfo(box)
                     is_virtual = (info is not None and info.is_virtual())
                 if box.type == 'i':
-                    info = optimizer.getrawptrinfo(box)
+                    info = getrawptrinfo(box)
                     is_virtual = (info is not None and info.is_virtual())
                 if is_virtual:
                     tagged = tag(num_virtuals, TAGVIRTUAL)
@@ -414,6 +415,7 @@
         return tagbits == TAGVIRTUAL
 
     def finish(self, pending_setfields=[]):
+        from rpython.jit.metainterp.optimizeopt.info import getrawptrinfo
         optimizer = self.optimizer
         # compute the numbering
         storage = self.storage
@@ -442,7 +444,7 @@
                     info = optimizer.getptrinfo(box)
                 else:
                     assert box.type == 'i'
-                    info = optimizer.getrawptrinfo(box)
+                    info = getrawptrinfo(box)
                 assert info.is_virtual()
                 info.visitor_walk_recursive(box, self, optimizer)
 
diff --git a/rpython/jit/metainterp/test/test_resume.py b/rpython/jit/metainterp/test/test_resume.py
--- a/rpython/jit/metainterp/test/test_resume.py
+++ b/rpython/jit/metainterp/test/test_resume.py
@@ -15,7 +15,7 @@
     unpack_numbering, create_numbering)
 from rpython.jit.metainterp.opencoder import Trace
 
-from rpython.jit.metainterp.optimizeopt import info
+from rpython.jit.metainterp.optimizeopt import info, util
 from rpython.jit.metainterp.history import (
     ConstInt, Const, AbstractDescr, ConstPtr, ConstFloat, IntFrontendOp,
     RefFrontendOp, CONST_NULL)
@@ -51,12 +51,8 @@
             op = op.get_forwarded()
         return op
 
-    def getrawptrinfo(self, op):
-        op = self.get_box_replacement(op)
-        return op.get_forwarded()
-
     def getptrinfo(self, op):
-        op = self.get_box_replacement(op)
+        op = util.get_box_replacement(op)
         return op.get_forwarded()
 
 


More information about the pypy-commit mailing list