Author: Remi Meier <remi.me...@inf.ethz.ch>
Branch: stmgc-c7
Changeset: r73064:ba0e9a5ccb55
Date: 2014-08-26 18:15 +0200
http://bitbucket.org/pypy/pypy/changeset/ba0e9a5ccb55/

Log:    tracing was ignoring stm_dont_track_raw_accesses

diff --git a/rpython/jit/backend/llsupport/descr.py 
b/rpython/jit/backend/llsupport/descr.py
--- a/rpython/jit/backend/llsupport/descr.py
+++ b/rpython/jit/backend/llsupport/descr.py
@@ -103,7 +103,7 @@
 
     def is_immutable(self):
         return self._immutable
-    
+
     def is_pointer_field(self):
         return self.flag == FLAG_POINTER
 
@@ -139,6 +139,9 @@
     def repr_of_descr(self):
         return '<Field%s %s %s>' % (self.flag, self.name, self.offset)
 
+    def stm_should_track_raw_accesses(self):
+        return not self.stm_dont_track_raw_accesses
+
 
 def get_field_descr(gccache, STRUCT, fieldname):
     cache = gccache._cache_field
@@ -215,7 +218,7 @@
 
     def is_immutable(self):
         return self._immutable
-    
+
     def is_array_of_pointers(self):
         return self.flag == FLAG_POINTER
 
@@ -295,7 +298,7 @@
 
     def is_immutable(self):
         return self._immutable
-    
+
     def sort_key(self):
         return self.fielddescr.sort_key()
 
diff --git a/rpython/jit/metainterp/executor.py 
b/rpython/jit/metainterp/executor.py
--- a/rpython/jit/metainterp/executor.py
+++ b/rpython/jit/metainterp/executor.py
@@ -188,7 +188,8 @@
         return BoxInt(cpu.bh_getfield_raw_i(struct, fielddescr, pure))
 
 def do_getfield_raw(cpu, _, structbox, fielddescr):
-    return _do_getfield_raw(cpu, False, structbox, fielddescr)
+    pure = not fielddescr.stm_should_track_raw_accesses()
+    return _do_getfield_raw(cpu, pure, structbox, fielddescr)
 
 def do_getfield_raw_pure(cpu, _, structbox, fielddescr):
     return _do_getfield_raw(cpu, True, structbox, fielddescr)
diff --git a/rpython/jit/metainterp/history.py 
b/rpython/jit/metainterp/history.py
--- a/rpython/jit/metainterp/history.py
+++ b/rpython/jit/metainterp/history.py
@@ -155,6 +155,9 @@
     def get_vinfo(self):
         raise NotImplementedError
 
+    def stm_should_track_raw_accesses(self):
+        return True
+
 class AbstractFailDescr(AbstractDescr):
     index = -1
     final_descr = False
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to