~ chicken-core (chicken-5) 8a65dc646b3848ce0a6100c017bfe900d54231e2


commit 8a65dc646b3848ce0a6100c017bfe900d54231e2
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Sun Jan 2 11:55:09 2011 +0100
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Sun Jan 2 11:55:09 2011 +0100

    added explanations for data-representation of locatives (pointed out by mario)

diff --git a/manual/Data representation b/manual/Data representation
index 17a9b96e..53b462c3 100644
--- a/manual/Data representation	
+++ b/manual/Data representation	
@@ -96,8 +96,14 @@ slots contain the actual record items.
 '''pointers''': special vector objects with type bits
 {{C_POINTER_TYPE}}, currently 1001. The single slot contains a machine pointer.
 
-'''locatives''': special vector objects with type bits {{C_LOCATIVE_TYPE}}, currently 1010.
-FIXME FIXME FIXME.
+'''locatives''': special vector objects with type bits
+{{C_LOCATIVE_TYPE}}, currently 1010.  A locative object holds 4 slots:
+a raw pointer to the location inside the object referred to by the locative,
+the offset in bytes from the start of the object referred to, the type of
+the location (whether it refers to an unboxed numeric value or a normal
+object slot that holds a pointer to Scheme data) and a flag indicating
+whether this locative is "weak". If the locative is non-weak, slot #4 holds
+a pointer to the object referred to.
 
 '''tagged pointers''': special vector objects with type bits 
 {{C_TAGGED_POINTER_TYPE}}, currently 1011, Tagged pointers are similar to pointers,
Trap