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

Reply via email to