Author: Armin Rigo <[email protected]>
Branch: stmgc-c8
Changeset: r78312:59c5a1d7f46b
Date: 2015-06-25 11:41 +0200
http://bitbucket.org/pypy/pypy/changeset/59c5a1d7f46b/
Log: Copy this logic here
diff --git a/rpython/memory/gctransform/stmframework.py
b/rpython/memory/gctransform/stmframework.py
--- a/rpython/memory/gctransform/stmframework.py
+++ b/rpython/memory/gctransform/stmframework.py
@@ -3,7 +3,8 @@
from rpython.rtyper.lltypesystem.lloperation import llop
from rpython.memory.gctransform.support import get_rtti
from rpython.memory.gctransform.framework import (TYPE_ID,
- BaseFrameworkGCTransformer, BaseRootWalker, sizeofaddr)
+ BaseFrameworkGCTransformer, BaseRootWalker, sizeofaddr,
+ propagate_no_write_barrier_needed)
from rpython.memory.gctypelayout import WEAKREF, WEAKREFPTR
from rpython.memory.gc.stmgc import StmGC
from rpython.rlib.debug import ll_assert
@@ -168,6 +169,15 @@
else:
self.write_barrier_calls += 1
hop.genop("stm_write", [v_struct])
+ # we just did a full write barrier here, so we can use
+ # this helper to propagate this knowledge forward and
+ # avoid to repeat the write barrier.
+ if self.curr_block is not None: # for tests
+ propagate_no_write_barrier_needed(self.clean_sets,
+ self.curr_block,
+ {v_struct: True},
+ self.collect_analyzer,
+ self._entrymap)
hop.rename('bare_' + opname)
def gct_gc_writebarrier(self, hop):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit