summaryrefslogtreecommitdiff
path: root/specific.c
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2012-04-21 23:44:19 +0400
committerIvan Maidanski <ivmai@mail.ru>2012-04-21 23:44:19 +0400
commitb93465e3e59a7a5caebd11292cce08ce34f53877 (patch)
treea17b4cd7fc6e7c1d0498017a9b73e2c3ec3c8901 /specific.c
parent38e65eaaefb295aab3a5fc7c10fd6f89330cf1a4 (diff)
downloadbdwgc-b93465e3e59a7a5caebd11292cce08ce34f53877.tar.gz
Code refactoring of specific.c and specific.h;
cast pointers to word instead of unsigned long * include/private/specific.h (CACHE_HASH, HASH): Add parentheses around the argument. * include/private/specific.h (CACHE_HASH): Remove unnecessary cast to long. * include/private/specific.h (HASH): Rename "n" argument to "p"; cast "p" to word instead of long; cast result to unsigned. * include/private/specific.h (quick_thread_id, INVALID_QTID): Cast to word instead of unsigned long. * specific.c (GC_key_create_inner): Cast invalid_tse.next (pointer) to word instead of unsigned long. * include/private/specific.h (GC_slow_getspecific, GC_getspecific): Change type of "qtid" from unsigned long to word. * specific.c (GC_slow_getspecific): Likewise. * include/private/specific.h (GC_getspecific): Remove "hash_val" local variable. * specific.c: Do not include gc_priv.h as included from thread_local_alloc.h; do not include atomic_ops.h as included from specific.h file.
Diffstat (limited to 'specific.c')
-rw-r--r--specific.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/specific.c b/specific.c
index 5f4765df..e35c9b57 100644
--- a/specific.c
+++ b/specific.c
@@ -11,7 +11,6 @@
* modified is included with the above copyright notice.
*/
-#include "private/gc_priv.h" /* For configuration, pthreads.h. */
#include "private/thread_local_alloc.h"
/* To determine type of tsd impl. */
/* Includes private/specific.h */
@@ -19,8 +18,6 @@
#if defined(USE_CUSTOM_SPECIFIC)
-#include "atomic_ops.h"
-
static const tse invalid_tse = {INVALID_QTID, 0, 0, INVALID_THREADID};
/* A thread-specific data entry which will never */
/* appear valid to a reader. Used to fill in empty */
@@ -32,7 +29,7 @@ GC_INNER int GC_key_create_inner(tsd ** key_ptr)
tsd * result = (tsd *)MALLOC_CLEAR(sizeof(tsd));
/* A quick alignment check, since we need atomic stores */
- GC_ASSERT((unsigned long)(&invalid_tse.next) % sizeof(tse *) == 0);
+ GC_ASSERT((word)(&invalid_tse.next) % sizeof(tse *) == 0);
if (0 == result) return ENOMEM;
pthread_mutex_init(&(result -> lock), NULL);
for (i = 0; i < TS_CACHE_SIZE; ++i) {
@@ -109,7 +106,7 @@ GC_INNER void GC_remove_specific(tsd * key)
}
/* Note that even the slow path doesn't lock. */
-GC_INNER void * GC_slow_getspecific(tsd * key, unsigned long qtid,
+GC_INNER void * GC_slow_getspecific(tsd * key, word qtid,
tse * volatile * cache_ptr)
{
pthread_t self = pthread_self();