Author: Spenser Andrew Bauman <[email protected]>
Branch: remove-getfield-pure
Changeset: r81518:8322672559df
Date: 2016-01-01 03:31 -0500
http://bitbucket.org/pypy/pypy/changeset/8322672559df/
Log: Cleanup logic and include GETFIELDS in list of descriptor based pure
operations
diff --git a/rpython/jit/metainterp/pyjitpl.py
b/rpython/jit/metainterp/pyjitpl.py
--- a/rpython/jit/metainterp/pyjitpl.py
+++ b/rpython/jit/metainterp/pyjitpl.py
@@ -653,7 +653,7 @@
@arguments("box", "descr")
def opimpl_getfield_gc_i(self, box, fielddescr):
- if fielddescr.is_always_pure() != False and isinstance(box, ConstPtr):
+ if fielddescr.is_always_pure() and isinstance(box, ConstPtr):
# if 'box' is directly a ConstPtr, bypass the heapcache completely
resbox = executor.execute(self.metainterp.cpu, self.metainterp,
rop.GETFIELD_GC_I, fielddescr, box)
@@ -663,7 +663,7 @@
@arguments("box", "descr")
def opimpl_getfield_gc_f(self, box, fielddescr):
- if fielddescr.is_always_pure() != False and isinstance(box, ConstPtr):
+ if fielddescr.is_always_pure() and isinstance(box, ConstPtr):
# if 'box' is directly a ConstPtr, bypass the heapcache completely
resvalue = executor.execute(self.metainterp.cpu, self.metainterp,
rop.GETFIELD_GC_F, fielddescr, box)
@@ -673,7 +673,7 @@
@arguments("box", "descr")
def opimpl_getfield_gc_r(self, box, fielddescr):
- if fielddescr.is_always_pure() != False and isinstance(box, ConstPtr):
+ if fielddescr.is_always_pure() and isinstance(box, ConstPtr):
# if 'box' is directly a ConstPtr, bypass the heapcache completely
val = executor.execute(self.metainterp.cpu, self.metainterp,
rop.GETFIELD_GC_R, fielddescr, box)
@@ -2102,6 +2102,9 @@
if (opnum == rop.GETFIELD_RAW_I or
opnum == rop.GETFIELD_RAW_R or
opnum == rop.GETFIELD_RAW_F or
+ opnum == rop.GETFIELD_GC_I or
+ opnum == rop.GETFIELD_GC_R or
+ opnum == rop.GETFIELD_GC_F or
opnum == rop.GETARRAYITEM_RAW_I or
opnum == rop.GETARRAYITEM_RAW_F):
is_pure = descr.is_always_pure()
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit