Author: Richard Plangger <[email protected]>
Branch: vecopt-merge
Changeset: r80047:b9281122c8c8
Date: 2015-10-08 15:15 +0200
http://bitbucket.org/pypy/pypy/changeset/b9281122c8c8/

Log:    fix: resume guard can now be copied

diff --git a/rpython/jit/metainterp/optimizeopt/schedule.py 
b/rpython/jit/metainterp/optimizeopt/schedule.py
--- a/rpython/jit/metainterp/optimizeopt/schedule.py
+++ b/rpython/jit/metainterp/optimizeopt/schedule.py
@@ -691,9 +691,9 @@
                     continue
                 accum = self.accumulation.get(arg, None)
                 if accum:
-                    from rpython.jit.metainterp.compile import ResumeGuardDescr
+                    from rpython.jit.metainterp.compile import 
AbstractResumeGuardDescr
                     assert isinstance(accum, AccumPack)
-                    assert isinstance(descr, ResumeGuardDescr)
+                    assert isinstance(descr, AbstractResumeGuardDescr)
                     descr.attach_accum_info(i, accum.operator, arg, None)
                     seed = accum.getleftmostseed()
                     failargs[i] = self.renamer.rename_map.get(seed, seed)
diff --git a/rpython/jit/metainterp/optimizeopt/vector.py 
b/rpython/jit/metainterp/optimizeopt/vector.py
--- a/rpython/jit/metainterp/optimizeopt/vector.py
+++ b/rpython/jit/metainterp/optimizeopt/vector.py
@@ -11,7 +11,8 @@
 from rpython.jit.metainterp.resume import Snapshot
 from rpython.jit.metainterp.jitexc import NotAVectorizeableLoop, 
NotAProfitableLoop
 #from rpython.jit.metainterp.optimizeopt.unroll import optimize_unroll
-from rpython.jit.metainterp.compile import (CompileLoopVersionDescr, 
ResumeGuardDescr)
+from rpython.jit.metainterp.compile import (CompileLoopVersionDescr,
+        ResumeGuardDescr, ResumeGuardCopiedDescr, AbstractResumeGuardDescr)
 from rpython.jit.metainterp.history import (INT, FLOAT, VECTOR, ConstInt, 
ConstFloat,
         TargetToken, JitCellToken, AbstractFailDescr)
 from rpython.jit.metainterp.optimizeopt.optimizer import Optimizer, 
Optimization
@@ -279,7 +280,11 @@
                     assert isinstance(copied_op, GuardResOp)
                     descr = copied_op.getdescr()
                     if descr:
-                        assert isinstance(descr, ResumeGuardDescr)
+                        assert isinstance(descr, AbstractResumeGuardDescr)
+                        if isinstance(descr, ResumeGuardDescr):
+                            descr = descr.prev.clone()
+                        else:
+                            descr = descr.clone()
                         copied_op.setdescr(descr.clone())
                         # copy failargs/snapshot
                         copied_op.rd_snapshot = \
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to