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