Author: Carl Friedrich Bolz <[email protected]>
Branch:
Changeset: r81632:5017455f828c
Date: 2016-01-08 20:12 +0100
http://bitbucket.org/pypy/pypy/changeset/5017455f828c/
Log: rename register_dirty_field to register_info. document and check its
invariant.
diff --git a/rpython/jit/metainterp/optimizeopt/heap.py
b/rpython/jit/metainterp/optimizeopt/heap.py
--- a/rpython/jit/metainterp/optimizeopt/heap.py
+++ b/rpython/jit/metainterp/optimizeopt/heap.py
@@ -40,7 +40,11 @@
self.cached_structs = []
self._lazy_setfield = None
- def register_dirty_field(self, structop, info):
+ def register_info(self, structop, info):
+ # invariant: every struct or array ptr info, that is not virtual and
+ # that has a non-None entry at
+ # info._fields[descr.get_index()]
+ # must be in cache_infos
self.cached_structs.append(structop)
self.cached_infos.append(info)
@@ -119,6 +123,9 @@
def _getfield(self, opinfo, descr, optheap, true_force=True):
res = opinfo.getfield(descr, optheap)
+ if not we_are_translated() and res:
+ if isinstance(opinfo, info.AbstractStructPtrInfo):
+ assert opinfo in self.cached_infos
if isinstance(res, PreambleOp):
if not true_force:
return res.op
@@ -166,6 +173,9 @@
def _getfield(self, opinfo, descr, optheap, true_force=True):
res = opinfo.getitem(descr, self.index, optheap)
+ if not we_are_translated() and res:
+ if isinstance(opinfo, info.ArrayPtrInfo):
+ assert opinfo in self.cached_infos
if (isinstance(res, PreambleOp) and
optheap.optimizer.cpu.supports_guard_gc_type):
if not true_force:
diff --git a/rpython/jit/metainterp/optimizeopt/info.py
b/rpython/jit/metainterp/optimizeopt/info.py
--- a/rpython/jit/metainterp/optimizeopt/info.py
+++ b/rpython/jit/metainterp/optimizeopt/info.py
@@ -203,7 +203,7 @@
if cf is not None:
assert not self.is_virtual()
assert struct is not None
- cf.register_dirty_field(struct, self)
+ cf.register_info(struct, self)
def getfield(self, descr, optheap=None):
self.init_fields(descr.get_parent_descr(), descr.get_index())
@@ -531,7 +531,7 @@
self._items[index] = op
if cf is not None:
assert not self.is_virtual()
- cf.register_dirty_field(struct, self)
+ cf.register_info(struct, self)
def getitem(self, descr, index, optheap=None):
if self._items is None or index >= len(self._items):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit