From c4d0c0c930b38d21dd782668cf522875459dadbb Mon Sep 17 00:00:00 2001
From: simonm <unknown>
Date: Mon, 1 Feb 1999 10:19:02 +0000
Subject: [PATCH] [project @ 1999-02-01 10:19:02 by simonm] Clarification about
 the root set and top-level objects for the reachability property.

---
 ghc/docs/libraries/Weak.sgml | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/ghc/docs/libraries/Weak.sgml b/ghc/docs/libraries/Weak.sgml
index bc88b042bfd3..0f223f42f36a 100644
--- a/ghc/docs/libraries/Weak.sgml
+++ b/ghc/docs/libraries/Weak.sgml
@@ -215,6 +215,7 @@ follows
 A heap object is reachable if:
 
 <itemize>
+<item> It is a member of the <em/root set/.
 <item> It is directly pointed to by a reachable object, other than
 a weak pointer object.
 <item> It is a weak pointer object whose key is reachable.
@@ -222,6 +223,14 @@ a weak pointer object.
 reachable.
 </itemize>
 
+The root set consists of all runnable threads, and all stable pointers
+(see Section <ref id="sec:stable-pointers" name="Stable Pointers">).
+NOTE: currently all top-level objects are considered to be reachable,
+although we hope to remove this restriction in the future.  A
+<tt/Char/ or small <tt/Int/ will also be constantly reachable, since
+the garbage collector replaces heap-resident <tt/Char/s and small
+<tt/Int/s with pointers to static copies.
+
 Notice that a pointer to the key from its associated 
 value or finaliser does not make the key reachable.
 However, if the key is reachable some other way, then the value
-- 
GitLab