Author: Maciej Fijalkowski <[email protected]>
Branch: optresult-unroll
Changeset: r78934:18012a6f5352
Date: 2015-08-12 16:34 +0200
http://bitbucket.org/pypy/pypy/changeset/18012a6f5352/

Log:    fix again test_varray_boxed1

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
@@ -45,12 +45,16 @@
         self.res = res
         self.getfield_op = getfield_op
 
-    def produce_op(self, opt, preamble_op):
+    def produce_op(self, opt, preamble_op, exported_infos):
         optheap = opt.optimizer.optheap
         if optheap is None:
             return
         g = preamble_op.copy_and_change(preamble_op.getopnum(),
                                         args=self.getfield_op.getarglist())
+        if g.getarg(0) in exported_infos:
+            opt.optimizer.setinfo_from_preamble(g.getarg(0),
+                                                exported_infos[g.getarg(0)],
+                                                exported_infos)
         opinfo = opt.optimizer.ensure_ptr_info_arg0(g)
         pop = PreambleOp(self.res, preamble_op)
         assert not opinfo.is_virtual()
@@ -85,7 +89,7 @@
     def __init__(self, res):
         self.res = res
 
-    def produce_op(self, opt, preamble_op):
+    def produce_op(self, opt, preamble_op, exported_infos):
         optpure = opt.optimizer.optpure
         if optpure is None:
             return
@@ -116,7 +120,7 @@
     def __init__(self, res):
         self.res = res
 
-    def produce_op(self, opt, preamble_op):
+    def produce_op(self, opt, preamble_op, exported_infos):
         optrewrite = opt.optimizer.optrewrite
         if optrewrite is None:
             return
@@ -165,8 +169,8 @@
         self.short_op = short_op
         self.preamble_op = preamble_op
 
-    def produce_op(self, opt):
-        self.short_op.produce_op(opt, self.preamble_op)
+    def produce_op(self, opt, exported_infos):
+        self.short_op.produce_op(opt, self.preamble_op, exported_infos)
 
     def __repr__(self):
         return "%r -> %r" % (self.short_op, self.preamble_op)
@@ -178,7 +182,7 @@
     def __init__(self, preamble_op):
         self.preamble_op = preamble_op
 
-    def produce_op(self, opt):
+    def produce_op(self, opt, exported_infos):
         pass
 
     def __repr__(self):
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
@@ -38,7 +38,7 @@
     def setinfo_from_preamble(self, op, preamble_info, exported_infos):
         op = self.get_box_replacement(op)
         if op.get_forwarded() is not None:
-            return # XXX?
+            return
         if isinstance(preamble_info, info.PtrInfo):
             if preamble_info.is_virtual():
                 # XXX do we want to sanitize this?
@@ -338,7 +338,7 @@
             exported_state.short_boxes, exported_state.short_inputargs,
             exported_state.exported_infos, self.optimizer)
         for produced_op in exported_state.short_boxes:
-            produced_op.produce_op(self)
+            produced_op.produce_op(self, exported_state.exported_infos)
 
         return
         self.inputargs = targetop.getarglist()
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to