[pypy-commit] pypy optresult-unroll: add dump() on exported state

fijal noreply at buildbot.pypy.org
Sat Sep 5 11:14:53 CEST 2015


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult-unroll
Changeset: r79451:e2cc2266dc5a
Date: 2015-09-05 11:14 +0200
http://bitbucket.org/pypy/pypy/changeset/e2cc2266dc5a/

Log:	add dump() on exported state

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
@@ -74,6 +74,10 @@
             opinfo.setitem(self.getfield_op.getdescr(), index, self.res,
                            pop, cf, optheap=optheap)
 
+    def repr(self, memo):
+        return "HeapOp(%s, %s)" % (self.res.repr(memo),
+                                   self.getfield_op.repr(memo))
+
     def add_op_to_short(self, sb):
         sop = self.getfield_op
         preamble_arg = sb.produce_arg(sop.getarg(0))
@@ -125,6 +129,9 @@
             opnum = op.getopnum()
         return ProducedShortOp(self, op.copy_and_change(opnum, args=arglist))
 
+    def repr(self, memo):
+        return "PureOp(%s)" % (self.res.repr(memo),)
+
     def __repr__(self):
         return "PureOp(%r)" % (self.res,)
 
@@ -152,6 +159,9 @@
         opnum = OpHelpers.call_loopinvariant_for_descr(op.getdescr())
         return ProducedShortOp(self, op.copy_and_change(opnum, args=arglist))
 
+    def repr(self, memo):
+        return "LoopInvariantOp(%s)" % (self.res.repr(memo),)
+
     def __repr__(self):
         return "LoopInvariantOp(%r)" % (self.res,)
 
@@ -174,6 +184,11 @@
                 l.append(pop)
         return l
 
+    def repr(self, memo):
+        return "CompoundOp(%s, %s, %s)" % (self.res.repr(memo),
+                                           self.one.repr(memo),
+                                           self.two.repr(memo))
+
 class AbstractProducedShortOp(object):
     pass
 
@@ -188,6 +203,9 @@
         self.short_op.produce_op(opt, self.preamble_op, exported_infos,
                                  invented_name=self.invented_name)
 
+    def repr(self, memo):
+        return self.short_op.repr(memo)
+
     def __repr__(self):
         return "%r -> %r" % (self.short_op, self.preamble_op)
 
@@ -205,6 +223,9 @@
     def produce_op(self, opt, preamble_op, exported_infos, invented_name):
         assert not invented_name
 
+    def repr(self, memo):
+        return "INP(%s)" % (self.res.repr(memo),)
+
     def __repr__(self):
         return "INP(%r -> %r)" % (self.res, self.preamble_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
@@ -12,7 +12,7 @@
     VirtualStateConstructor, VirtualStatesCantMatch)
 from rpython.jit.metainterp.resoperation import rop, ResOperation, GuardResOp
 from rpython.jit.metainterp import compile
-from rpython.rlib.debug import debug_print
+from rpython.rlib.debug import debug_print, debug_start, debug_stop
 
 class UnrollableOptimizer(Optimizer):    
     def force_op_from_preamble(self, preamble_op):
@@ -455,6 +455,15 @@
         self.short_boxes = short_boxes
         self.renamed_inputargs = renamed_inputargs
         self.short_inputargs = short_inputargs
+        self.dump()
+
+    def dump(self):
+        debug_start("jit-log-exported-state")
+        memo = {}
+        debug_print("[" + ", ".join([x.repr_short(memo) for x in self.next_iteration_args]) + "]")
+        for box in self.short_boxes:
+            debug_print("  " + box.repr(memo))
+        debug_stop("jit-log-exported-state")
 
     def final(self):
         return False


More information about the pypy-commit mailing list