summaryrefslogtreecommitdiff
path: root/ghc/rts/StgMiscClosures.cmm
diff options
context:
space:
mode:
authorsimonmar <unknown>2005-05-10 13:25:43 +0000
committersimonmar <unknown>2005-05-10 13:25:43 +0000
commitbf8219815876579f80b4e30188b982bf3e673199 (patch)
tree04b13067488d0c17caa5a7e6440f03acd4d21ea5 /ghc/rts/StgMiscClosures.cmm
parent24928a554aef287721af3dbe87619743412b1eed (diff)
downloadhaskell-bf8219815876579f80b4e30188b982bf3e673199.tar.gz
[project @ 2005-05-10 13:25:41 by simonmar]
Two SMP-related changes: - New storage manager interface: bdescr *allocateLocal(StgRegTable *reg, nat words) which allocates from the current thread's nursery (being careful not to clash with the heap pointer). It can do this without taking any locks; the lock only has to be taken if a block needs to be allocated. allocateLocal() is now used instead of allocate() in a few PrimOps. This removes locks from most Integer operations, cutting down the overhead for SMP a bit more. To make this work, we have to be able to grab the current thread's Capability out of thin air (i.e. when called from GMP), so the Capability subsystem needs to keep a hash from thread IDs to Capabilities. - Small MVar optimisation: instead of taking the global storage-manager lock, do our own locking of MVars with a bit of inline assembly (x86 only for now).
Diffstat (limited to 'ghc/rts/StgMiscClosures.cmm')
-rw-r--r--ghc/rts/StgMiscClosures.cmm6
1 files changed, 6 insertions, 0 deletions
diff --git a/ghc/rts/StgMiscClosures.cmm b/ghc/rts/StgMiscClosures.cmm
index 4e2c0fbe46..15f27d6bcc 100644
--- a/ghc/rts/StgMiscClosures.cmm
+++ b/ghc/rts/StgMiscClosures.cmm
@@ -419,6 +419,12 @@ INFO_TABLE(stg_SE_CAF_BLACKHOLE,0,1,SE_CAF_BLACKHOLE,"SE_CAF_BLACKHOLE","SE_CAF_
#endif
/* ----------------------------------------------------------------------------
+ ------------------------------------------------------------------------- */
+
+INFO_TABLE(stg_WHITEHOLE, 0,0, INVALID_OBJECT, "WHITEHOLE", "WHITEHOLE")
+{ foreign "C" barf("WHITEHOLE object entered!"); }
+
+/* ----------------------------------------------------------------------------
Some static info tables for things that don't get entered, and
therefore don't need entry code (i.e. boxed but unpointed objects)
NON_ENTERABLE_ENTRY_CODE now defined at the beginning of the file