[pypy-commit] pypy stm-gc: Backed out changeset 93da8b4ece49
arigo
noreply at buildbot.pypy.org
Tue Apr 17 14:03:23 CEST 2012
Author: Armin Rigo <arigo at tunes.org>
Branch: stm-gc
Changeset: r54459:12759f6412ee
Date: 2012-04-17 13:02 +0200
http://bitbucket.org/pypy/pypy/changeset/12759f6412ee/
Log: Backed out changeset 93da8b4ece49
diff --git a/pypy/rlib/rstm.py b/pypy/rlib/rstm.py
--- a/pypy/rlib/rstm.py
+++ b/pypy/rlib/rstm.py
@@ -14,7 +14,7 @@
@specialize.memo()
def _get_stm_callback(func, argcls):
def _stm_callback(llarg, retry_counter):
- llop.stm_start_transaction(lltype.Void, retry_counter)
+ llop.stm_start_transaction(lltype.Void)
if we_are_translated():
llarg = rffi.cast(rclass.OBJECTPTR, llarg)
arg = cast_base_ptr_to_instance(argcls, llarg)
diff --git a/pypy/rpython/lltypesystem/opimpl.py b/pypy/rpython/lltypesystem/opimpl.py
--- a/pypy/rpython/lltypesystem/opimpl.py
+++ b/pypy/rpython/lltypesystem/opimpl.py
@@ -632,7 +632,7 @@
from pypy.translator.stm import stmgcintf
stmgcintf.StmOperations.del_tls()
-def op_stm_start_transaction(retry_counter):
+def op_stm_start_transaction():
pass
def op_stm_commit_transaction():
diff --git a/pypy/rpython/memory/gc/stmgc.py b/pypy/rpython/memory/gc/stmgc.py
--- a/pypy/rpython/memory/gc/stmgc.py
+++ b/pypy/rpython/memory/gc/stmgc.py
@@ -121,7 +121,7 @@
#
from pypy.rpython.memory.gc.stmtls import StmGCTLS
self.main_thread_tls = StmGCTLS(self, in_main_thread=True)
- self.main_thread_tls.start_transaction(-1)
+ self.main_thread_tls.start_transaction()
def setup_thread(self):
from pypy.rpython.memory.gc.stmtls import StmGCTLS
@@ -195,8 +195,8 @@
if gen > 0:
debug_print("XXX not doing a global collect()")
- def start_transaction(self, retry_counter):
- self.get_tls().start_transaction(retry_counter)
+ def start_transaction(self):
+ self.get_tls().start_transaction()
def commit_transaction(self):
self.get_tls().stop_transaction()
diff --git a/pypy/rpython/memory/gc/stmtls.py b/pypy/rpython/memory/gc/stmtls.py
--- a/pypy/rpython/memory/gc/stmtls.py
+++ b/pypy/rpython/memory/gc/stmtls.py
@@ -117,24 +117,19 @@
if value is not self:
del StmGCTLS.nontranslated_dict[key]
self.stm_operations.leave_transactional_mode()
- self.start_transaction(-1)
+ self.start_transaction()
- def start_transaction(self, retry_counter):
+ def start_transaction(self):
"""Start a transaction: performs any pending cleanups, and set
up a fresh state for allocating. Called at the start of
each transaction, and at the start of the main thread."""
# Note that the calls to enter() and
# end_of_transaction_collection() are not balanced: if a
- # transaction is aborted, the latter might never be called
- # and we get back to here with retry_counter > 0.
+ # transaction is aborted, the latter might never be called.
# Be ready here to clean up any state.
self._cleanup_state()
- rw = self.gc.root_walker
- if retry_counter > 0:
- rw.set_current_stack_roots_limit(self.stack_root_limit)
- else:
- self.stack_root_limit = rw.get_current_stack_roots_limit()
- #
+ if self is not self.gc.main_thread_tls:
+ self.gc.root_walker.clear_current_stack_roots()
if self.nursery_free:
clear_size = self.nursery_free - self.nursery_start
else:
diff --git a/pypy/rpython/memory/gc/test/test_stmgc.py b/pypy/rpython/memory/gc/test/test_stmgc.py
--- a/pypy/rpython/memory/gc/test/test_stmgc.py
+++ b/pypy/rpython/memory/gc/test/test_stmgc.py
@@ -135,8 +135,8 @@
class FakeRootWalker:
def walk_current_stack_roots(self, *args):
pass # no stack roots in this test file
- def get_current_stack_roots_limit(self):
- return "some limit"
+ def clear_current_stack_roots(self):
+ pass
class StmGCTests:
@@ -189,7 +189,7 @@
self.gc.stm_operations.threadnum = threadnum
if threadnum not in self.gc.stm_operations._tls_dict:
self.gc.setup_thread()
- self.gc.start_transaction(0)
+ self.gc.start_transaction()
def gcsize(self, S):
return (llmemory.raw_malloc_usage(llmemory.sizeof(self.gc.HDR)) +
llmemory.raw_malloc_usage(llmemory.sizeof(S)))
diff --git a/pypy/rpython/memory/gc/test/test_stmtls.py b/pypy/rpython/memory/gc/test/test_stmtls.py
--- a/pypy/rpython/memory/gc/test/test_stmtls.py
+++ b/pypy/rpython/memory/gc/test/test_stmtls.py
@@ -38,8 +38,6 @@
P = lltype.typeOf(self.current_stack[i])
self.current_stack[i] = llmemory.cast_adr_to_ptr(roots[i], P)
lltype.free(roots, flavor='raw')
- def get_current_stack_roots_limit(self):
- return "some limit"
class FakeGC:
from pypy.rpython.memory.support import AddressDict, null_address_dict
@@ -85,7 +83,7 @@
self.gctls_main = StmGCTLS(self.gc, in_main_thread=True)
self.gctls_thrd = StmGCTLS(self.gc, in_main_thread=False)
self.gc.main_thread_tls = self.gctls_main
- self.gctls_main.start_transaction(-1)
+ self.gctls_main.start_transaction()
self.gc.root_walker.current_stack = self.current_stack
def stack_add(self, p):
diff --git a/pypy/rpython/memory/gctransform/stmframework.py b/pypy/rpython/memory/gctransform/stmframework.py
--- a/pypy/rpython/memory/gctransform/stmframework.py
+++ b/pypy/rpython/memory/gctransform/stmframework.py
@@ -42,7 +42,7 @@
[s_gc], annmodel.s_None)
self.stm_start_ptr = getfn(
self.gcdata.gc.start_transaction.im_func,
- [s_gc, annmodel.SomeInteger()], annmodel.s_None)
+ [s_gc], annmodel.s_None)
self.stm_commit_ptr = getfn(
self.gcdata.gc.commit_transaction.im_func,
[s_gc], annmodel.s_None)
@@ -84,9 +84,7 @@
hop.genop('cast_adr_to_ptr', [v_globaladr], resultvar=op.result)
def gct_stm_start_transaction(self, hop):
- v_int = hop.spaceop.args[0]
- hop.genop("direct_call", [self.stm_start_ptr,
- self.c_const_gc, v_int])
+ hop.genop("direct_call", [self.stm_start_ptr, self.c_const_gc])
def gct_stm_commit_transaction(self, hop):
hop.genop("direct_call", [self.stm_commit_ptr, self.c_const_gc])
@@ -172,10 +170,8 @@
stackgcdata.root_stack_base,
stackgcdata.root_stack_top)
- def get_current_stack_roots_limit(self):
- return self.stackgcdata.root_stack_top
-
- def set_current_stack_roots_limit(self, limit):
+ def clear_current_stack_roots(self):
"""Used when we start a transaction: there might be garbage left
behind by the previous aborted transaction."""
- self.stackgcdata.root_stack_top = limit
+ stackgcdata = self.stackgcdata
+ stackgcdata.root_stack_top = stackgcdata.root_stack_base
More information about the pypy-commit
mailing list