Author: Remi Meier
Branch:
Changeset: r1106:af451d3e606c
Date: 2014-03-27 14:57 +0100
http://bitbucket.org/pypy/stmgc/changeset/af451d3e606c/
Log: fix obvious HTM disabler
diff --git a/htm-c7/htm.h b/htm-c7/htm.h
--- a/htm-c7/htm.h
+++ b/htm-c7/htm.h
@@ -18,6 +18,7 @@
#define XBEGIN_XABORT_ARG(x) (((x) >> 24) & 0xFF)
static __thread char buf[128];
+__attribute__((unused))
static char* xbegin_status(int status)
{
if (status == XBEGIN_OK)
diff --git a/htm-c7/stmgc.c b/htm-c7/stmgc.c
--- a/htm-c7/stmgc.c
+++ b/htm-c7/stmgc.c
@@ -130,13 +130,6 @@
}
-void stm_unregister_thread_local(stm_thread_local_t *tl) {
- fprintf(stderr,
- "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);
-}
/************************************************************/
/* some simple thread-local malloc: */
@@ -266,20 +259,40 @@
#define GCFLAG_WRITE_BARRIER _STM_GCFLAG_WRITE_BARRIER
-static struct list_s *objects_pointing_to_nursery;
-static struct list_s *young_weakrefs;
+static __thread struct list_s *objects_pointing_to_nursery;
+static __thread struct list_s *young_weakrefs;
void stm_setup(void)
{
- objects_pointing_to_nursery = list_create();
- young_weakrefs = list_create();
}
void stm_teardown(void)
{
+}
+
+void stm_register_thread_local(stm_thread_local_t *tl) {
+ objects_pointing_to_nursery = list_create();
+ young_weakrefs = list_create();
+
+ tl->thread_local_obj = NULL;
+ tl->shadowstack_base = (object_t **)malloc(768*1024);
+ assert(tl->shadowstack_base);
+ tl->shadowstack = tl->shadowstack_base;
+ tl->last_abort__bytes_in_nursery = 0;
+}
+
+void stm_unregister_thread_local(stm_thread_local_t *tl) {
+ fprintf(stderr,
+ "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);
+
list_free(objects_pointing_to_nursery);
+ list_free(young_weakrefs);
}
+
void _stm_write_slowpath(object_t *obj)
{
obj->gil_flags &= ~GCFLAG_WRITE_BARRIER;
diff --git a/htm-c7/stmgc.h b/htm-c7/stmgc.h
--- a/htm-c7/stmgc.h
+++ b/htm-c7/stmgc.h
@@ -79,13 +79,7 @@
return (object_t *)p;
}
-inline static void stm_register_thread_local(stm_thread_local_t *tl) {
- tl->thread_local_obj = NULL;
- tl->shadowstack_base = (object_t **)malloc(768*1024);
- assert(tl->shadowstack_base);
- tl->shadowstack = tl->shadowstack_base;
- tl->last_abort__bytes_in_nursery = 0;
-}
+void stm_register_thread_local(stm_thread_local_t *tl);
void stm_unregister_thread_local(stm_thread_local_t *tl);
extern pthread_mutex_t _stm_gil;
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit