[pypy-commit] pypy vecopt: excluded getfield gc/raw from the load tracking. there is no index on this operation. index is in the descriptor
plan_rich
noreply at buildbot.pypy.org
Wed May 20 14:39:50 CEST 2015
Author: Richard Plangger <rich at pasra.at>
Branch: vecopt
Changeset: r77427:1efff313cfd7
Date: 2015-05-20 08:51 +0200
http://bitbucket.org/pypy/pypy/changeset/1efff313cfd7/
Log: excluded getfield gc/raw from the load tracking. there is no index
on this operation. index is in the descriptor
diff --git a/rpython/jit/metainterp/optimizeopt/dependency.py b/rpython/jit/metainterp/optimizeopt/dependency.py
--- a/rpython/jit/metainterp/optimizeopt/dependency.py
+++ b/rpython/jit/metainterp/optimizeopt/dependency.py
@@ -27,8 +27,6 @@
, (rop.GETARRAYITEM_RAW, 0, 1)
, (rop.GETINTERIORFIELD_GC, 0, 1)
, (rop.RAW_LOAD, 0, 1)
- , (rop.GETFIELD_GC, 0, 1)
- , (rop.GETFIELD_RAW, 0, 1)
]
class Path(object):
@@ -169,7 +167,7 @@
return self.op.getopnum() == rop.GUARD_EARLY_EXIT
def loads_from_complex_object(self):
- return rop._ALWAYS_PURE_LAST <= self.op.getopnum() <= rop._MALLOC_FIRST
+ return rop._ALWAYS_PURE_LAST <= self.op.getopnum() <= rop.GETINTERIORFIELD_GC
def modifies_complex_object(self):
return rop.SETARRAYITEM_GC <= self.op.getopnum() <= rop.UNICODESETITEM
@@ -196,10 +194,13 @@
# assume this destroys every argument... can be enhanced by looking
# at the effect info of a call for instance
for arg in op.getarglist():
+ # if it is a constant argument it cannot be destroyed.
+ # neither can a box float be destroyed. BoxInt can
+ # contain a reference thus it is assumed to be destroyed
if isinstance(arg, Const) or isinstance(arg, BoxFloat):
args.append((arg, None, False))
else:
- args.append((arg,None,True))
+ args.append((arg, None,True))
return args
def provides_count(self):
More information about the pypy-commit
mailing list