Author: Remi Meier <[email protected]>
Branch: stmgc-c7
Changeset: r71275:cce0ed9a775c
Date: 2014-05-05 10:57 +0200
http://bitbucket.org/pypy/pypy/changeset/cce0ed9a775c/
Log: add real stmcb_commit_soon()
diff --git a/rpython/translator/stm/src_stm/stmgcintf.c
b/rpython/translator/stm/src_stm/stmgcintf.c
--- a/rpython/translator/stm/src_stm/stmgcintf.c
+++ b/rpython/translator/stm/src_stm/stmgcintf.c
@@ -23,6 +23,16 @@
pypy_stmcb_trace(obj, (void(*)(void*))visit);
}
+inline void stmcb_commit_soon()
+{
+ if (pypy_stm_nursery_low_fill_mark == (uintptr_t)-1) {
+ /* atomic */
+ pypy_stm_nursery_low_fill_mark_saved = 0;
+ } else {
+ pypy_stm_nursery_low_fill_mark >>= 2;
+ }
+}
+
/************************************************************/
/* "include" the stmgc.c file here */
@@ -147,7 +157,7 @@
transaction.
*/
assert(pypy_stm_nursery_low_fill_mark != (uintptr_t) -1);
- assert((STM_SEGMENT->jmpbuf_ptr == NULL) ==
+ assert(!(STM_SEGMENT->jmpbuf_ptr == NULL) ||
(pypy_stm_nursery_low_fill_mark == 0));
stm_commit_transaction();
@@ -182,7 +192,7 @@
transaction whose jmpbuf points into this function
*/
if (pypy_stm_ready_atomic == 1) {
- assert(pypy_stm_nursery_low_fill_mark != 0);
+ //assert(pypy_stm_nursery_low_fill_mark != 0);
assert(pypy_stm_nursery_low_fill_mark != (uintptr_t) -1);
stm_commit_transaction();
pypy_stm_nursery_low_fill_mark = 0;
@@ -196,7 +206,7 @@
}
/* double-check */
if (pypy_stm_ready_atomic == 1) {
- assert((STM_SEGMENT->jmpbuf_ptr == NULL) ==
+ assert(!(STM_SEGMENT->jmpbuf_ptr == NULL) ||
(pypy_stm_nursery_low_fill_mark == 0));
}
else {
@@ -234,5 +244,3 @@
_pypy_stm_inev_state();
stm_become_globally_unique_transaction(&stm_thread_local, "for the JIT");
}
-
-void stmcb_commit_soon(void) { /*XXX FIXME*/ }
diff --git a/rpython/translator/stm/src_stm/stmgcintf.h
b/rpython/translator/stm/src_stm/stmgcintf.h
--- a/rpython/translator/stm/src_stm/stmgcintf.h
+++ b/rpython/translator/stm/src_stm/stmgcintf.h
@@ -73,7 +73,7 @@
case 1:
pypy_stm_nursery_low_fill_mark = pypy_stm_nursery_low_fill_mark_saved;
assert(pypy_stm_nursery_low_fill_mark != (uintptr_t) -1);
- assert((STM_SEGMENT->jmpbuf_ptr == NULL) ==
+ assert(!(STM_SEGMENT->jmpbuf_ptr == NULL) ||
(pypy_stm_nursery_low_fill_mark == 0));
break;
case 0:
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit