Author: Armin Rigo <[email protected]>
Branch: stmgc-c7
Changeset: r70349:4c8e01e55d77
Date: 2014-03-31 15:47 +0200
http://bitbucket.org/pypy/pypy/changeset/4c8e01e55d77/
Log: import stmgc/a8d0ff724dea
diff --git a/rpython/translator/stm/src_stm/revision
b/rpython/translator/stm/src_stm/revision
--- a/rpython/translator/stm/src_stm/revision
+++ b/rpython/translator/stm/src_stm/revision
@@ -1,1 +1,1 @@
-43f1137bc72e
+a8d0ff724dea
diff --git a/rpython/translator/stm/src_stm/stm/pages.c
b/rpython/translator/stm/src_stm/stm/pages.c
--- a/rpython/translator/stm/src_stm/stm/pages.c
+++ b/rpython/translator/stm/src_stm/stm/pages.c
@@ -31,9 +31,14 @@
static void mutex_pages_lock(void)
{
+ if (__sync_lock_test_and_set(&pages_ctl.mutex_pages, 1) == 0)
+ return;
+
+ int previous = change_timing_state(STM_TIME_SPIN_LOOP);
while (__sync_lock_test_and_set(&pages_ctl.mutex_pages, 1) != 0) {
spin_loop();
}
+ change_timing_state(previous);
}
static void mutex_pages_unlock(void)
diff --git a/rpython/translator/stm/src_stm/stm/timing.c
b/rpython/translator/stm/src_stm/stm/timing.c
--- a/rpython/translator/stm/src_stm/stm/timing.c
+++ b/rpython/translator/stm/src_stm/stm/timing.c
@@ -56,6 +56,7 @@
"minor gc",
"major gc",
"sync pause",
+ "spin loop",
};
void stm_flush_timing(stm_thread_local_t *tl, int verbose)
diff --git a/rpython/translator/stm/src_stm/stmgc.h
b/rpython/translator/stm/src_stm/stmgc.h
--- a/rpython/translator/stm/src_stm/stmgc.h
+++ b/rpython/translator/stm/src_stm/stmgc.h
@@ -71,6 +71,7 @@
STM_TIME_MINOR_GC,
STM_TIME_MAJOR_GC,
STM_TIME_SYNC_PAUSE,
+ STM_TIME_SPIN_LOOP,
_STM_TIME_N
};
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit