~ 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