summaryrefslogtreecommitdiff
path: root/rts/sm/GCThread.h
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2008-06-03 07:25:27 +0000
committerSimon Marlow <marlowsd@gmail.com>2008-06-03 07:25:27 +0000
commitbb0fe6ce59a2adb62e4bb2f66f5be0213cb0e55f (patch)
tree5ed23c1809b9ddc04945de18de72a14710d1d3df /rts/sm/GCThread.h
parent37eae200f271bd28a6172cbbea982455626336e8 (diff)
downloadhaskell-bb0fe6ce59a2adb62e4bb2f66f5be0213cb0e55f.tar.gz
comment updates
Diffstat (limited to 'rts/sm/GCThread.h')
-rw-r--r--rts/sm/GCThread.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/rts/sm/GCThread.h b/rts/sm/GCThread.h
index 42d20bb264..d4376f77a7 100644
--- a/rts/sm/GCThread.h
+++ b/rts/sm/GCThread.h
@@ -105,7 +105,7 @@ typedef struct step_workspace_ {
GC thread object
Every GC thread has one of these. It contains all the step specific
- workspaces and other GC thread loacl information. At some later
+ workspaces and other GC thread local information. At some later
point it maybe useful to move this other into the TLS store of the
GC threads
------------------------------------------------------------------------- */
@@ -185,7 +185,13 @@ extern gc_thread **gc_threads;
/* -----------------------------------------------------------------------------
The gct variable is thread-local and points to the current thread's
gc_thread structure. It is heavily accessed, so we try to put gct
- into a global register variable if possible.
+ into a global register variable if possible; if we don't have a
+ register then use gcc's __thread extension to create a thread-local
+ variable.
+
+ Even on x86 where registers are scarce, it is worthwhile using a
+ register variable here: I measured about a 2-5% slowdown with the
+ __thread version.
-------------------------------------------------------------------------- */
#define GLOBAL_REG_DECL(type,name,reg) register type name REG(reg);