[pypy-commit] pypy stmgc-c8-gcc: another attempt to fix things (unsuccessfully)
Raemi
noreply at buildbot.pypy.org
Fri Jul 24 17:36:45 CEST 2015
Author: Remi Meier <remi.meier at inf.ethz.ch>
Branch: stmgc-c8-gcc
Changeset: r78657:bd074f735670
Date: 2015-07-24 17:38 +0200
http://bitbucket.org/pypy/pypy/changeset/bd074f735670/
Log: another attempt to fix things (unsuccessfully)
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
@@ -212,6 +212,30 @@
self.default(hop)
self.pop_roots(hop, livevars)
+
+ # sync with lloperation.py:
+ # These operations need roots pushed around their execution.
+ # stm_allocate_* should never be seen here and are handled by
+ # the super class through gct_malloc_** and similar.
+ gct_stm_unregister_thread_local = _gct_with_roots_pushed
+ gct_stm_collect = _gct_with_roots_pushed
+ gct_stm_become_inevitable = _gct_with_roots_pushed
+ gct_stm_enter_transactional_zone = _gct_with_roots_pushed
+ gct_stm_leave_transactional_zone = _gct_with_roots_pushed
+ gct_stm_abort_and_retry = _gct_with_roots_pushed
+ gct_stm_enter_callback_call = _gct_with_roots_pushed
+ gct_stm_leave_callback_call = _gct_with_roots_pushed
+ gct_stm_transaction_break = _gct_with_roots_pushed
+ gct_stm_stop_all_other_threads = _gct_with_roots_pushed
+ gct_stm_hint_commit_soon = _gct_with_roots_pushed
+ gct_stm_hashtable_read = _gct_with_roots_pushed
+ gct_stm_hashtable_write = _gct_with_roots_pushed
+ gct_stm_hashtable_lookup = _gct_with_roots_pushed
+ gct_stm_queue_get = _gct_with_roots_pushed
+ gct_stm_queue_put = _gct_with_roots_pushed
+ gct_stm_queue_join = _gct_with_roots_pushed
+
+
def gct_stm_malloc_nonmovable(self, hop):
op = hop.spaceop
PTRTYPE = op.result.concretetype
@@ -229,14 +253,7 @@
self.pop_roots(hop, livevars)
hop.genop("cast_opaque_ptr", [v_result], resultvar=op.result)
- # sync with lloperation.py
- gct_stm_become_inevitable = _gct_with_roots_pushed
- gct_stm_hint_commit_soon = _gct_with_roots_pushed
- gct_stm_stop_all_other_threads = _gct_with_roots_pushed
- gct_stm_transaction_break = _gct_with_roots_pushed
- gct_stm_collect = _gct_with_roots_pushed
- gct_stm_queue_get = _gct_with_roots_pushed
- gct_stm_queue_join = _gct_with_roots_pushed
+
class StmRootWalker(BaseRootWalker):
diff --git a/rpython/rtyper/lltypesystem/lloperation.py b/rpython/rtyper/lltypesystem/lloperation.py
--- a/rpython/rtyper/lltypesystem/lloperation.py
+++ b/rpython/rtyper/lltypesystem/lloperation.py
@@ -414,7 +414,7 @@
# (some ops like stm_commit_transaction don't need it because there
# must be no gc-var access afterwards anyway)
'stm_register_thread_local': LLOp(),
- 'stm_unregister_thread_local': LLOp(),
+ 'stm_unregister_thread_local': LLOp(canmallocgc=True),
'stm_read': LLOp(),
'stm_write': LLOp(),
'stm_can_move': LLOp(),
@@ -438,7 +438,7 @@
'stm_leave_transactional_zone': LLOp(canmallocgc=True),
'stm_abort_and_retry': LLOp(canmallocgc=True),
'stm_enter_callback_call': LLOp(canmallocgc=True),
- 'stm_leave_callback_call': LLOp(),
+ 'stm_leave_callback_call': LLOp(canmallocgc=True),
'stm_transaction_break': LLOp(canmallocgc=True, canrun=True),
'stm_should_break_transaction': LLOp(sideeffects=False),
'stm_rewind_jmp_frame': LLOp(canrun=True),
@@ -474,9 +474,9 @@
'stm_hashtable_create': LLOp(),
'stm_hashtable_free': LLOp(),
- 'stm_hashtable_read': LLOp(),
- 'stm_hashtable_write': LLOp(),
- 'stm_hashtable_lookup': LLOp(),
+ 'stm_hashtable_read': LLOp(canmallocgc=True),
+ 'stm_hashtable_write': LLOp(canmallocgc=True),
+ 'stm_hashtable_lookup': LLOp(canmallocgc=True),
'stm_hashtable_write_entry': LLOp(),
'stm_hashtable_length_upper_bound': LLOp(),
'stm_hashtable_list' : LLOp(),
@@ -485,7 +485,7 @@
'stm_queue_create': LLOp(),
'stm_queue_free': LLOp(),
'stm_queue_get': LLOp(canmallocgc=True), # push roots!
- 'stm_queue_put': LLOp(),
+ 'stm_queue_put': LLOp(canmallocgc=True),
'stm_queue_task_done': LLOp(),
'stm_queue_join': LLOp(canmallocgc=True), # push roots!
'stm_queue_tracefn': LLOp(),
More information about the pypy-commit
mailing list