Author: Remi Meier
Branch:
Changeset: r1110:5a0622b6bff5
Date: 2014-03-27 18:59 +0100
http://bitbucket.org/pypy/stmgc/changeset/5a0622b6bff5/
Log: some tweaks that didn't help
diff --git a/htm-c7/stmgc.c b/htm-c7/stmgc.c
--- a/htm-c7/stmgc.c
+++ b/htm-c7/stmgc.c
@@ -8,8 +8,8 @@
//struct stm_segment_info_s _stm_segment;
__thread struct stm_segment_info_s* _stm_segment;
-#define TRANSIENT_RETRY_MAX 5
-#define GIL_RETRY_MAX 5
+#define TRANSIENT_RETRY_MAX 10
+#define GIL_RETRY_MAX 10
#define ABORT_GIL_LOCKED 1
@@ -17,7 +17,7 @@
static __thread int gil_transactions = 0;
static __thread int htm_transactions = 0;
-__thread struct htm_transaction_info_s _htm_info;
+__thread struct htm_transaction_info_s _htm_info __attribute__((aligned(64)));
#define smp_spinloop() asm volatile ("pause":::"memory")
@@ -32,13 +32,12 @@
static int spin_and_acquire_gil(stm_thread_local_t *tl) {
int n = 5;
- while ((n --> 0) && mutex_locked(&_stm_gil)) {
+ while (n-- > 0) {
+ if (!mutex_locked(&_stm_gil))
+ return 0;
smp_spinloop();
}
- if (!mutex_locked(&_stm_gil))
- return 0;
-
acquire_gil(tl);
return 1;
}
@@ -274,10 +273,10 @@
void stm_register_thread_local(stm_thread_local_t *tl) {
objects_pointing_to_nursery = list_create();
young_weakrefs = list_create();
- _stm_segment = malloc(sizeof(struct stm_segment_info_s));
+ _stm_segment = tl_malloc(sizeof(struct stm_segment_info_s));
tl->thread_local_obj = NULL;
- tl->shadowstack_base = (object_t **)malloc(768*1024);
+ tl->shadowstack_base = (object_t **)tl_malloc(768*1024);
assert(tl->shadowstack_base);
tl->shadowstack = tl->shadowstack_base;
tl->last_abort__bytes_in_nursery = 0;
@@ -288,11 +287,11 @@
"in %p\ngil_transactions: %d\nhtm_transactions: %d\nratio: %f\n",
tl, gil_transactions, htm_transactions,
(float)gil_transactions / (float)htm_transactions);
- free(tl->shadowstack_base);
+ //free(tl->shadowstack_base);
list_free(objects_pointing_to_nursery);
list_free(young_weakrefs);
- free(_stm_segment);
+ //free(_stm_segment);
}
diff --git a/htm-c7/stmgc.h b/htm-c7/stmgc.h
--- a/htm-c7/stmgc.h
+++ b/htm-c7/stmgc.h
@@ -18,7 +18,7 @@
int retry_counter; /* only counting transient aborts of HTM */
int use_gil; /* in GIL mode? 0=HTM */
};
-extern __thread struct htm_transaction_info_s _htm_info;
+extern __thread struct htm_transaction_info_s _htm_info
__attribute__((aligned(64)));
typedef void* stm_jmpbuf_t[5]; /* for use with __builtin_setjmp() */
@@ -43,6 +43,7 @@
struct stm_segment_info_s {
stm_jmpbuf_t *jmpbuf_ptr; /* compat only -- always NULL */
char *nursery_current; /* updated... */
+ int segment_num; /* compat only -- always NULL */
};
//extern struct stm_segment_info_s _stm_segment;
extern __thread struct stm_segment_info_s *_stm_segment;
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit