Author: Richard Plangger <r...@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): _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit