1.1 --- a/docs/concepts.txt Thu Jan 13 23:58:12 2011 +0100
1.2 +++ b/docs/concepts.txt Sat Jan 29 21:07:27 2011 +0100
1.3 @@ -217,11 +217,10 @@
1.4 Attribute Locations
1.5 -------------------
1.6
1.7 -The locations stored in table/list elements are for instance attributes
1.8 -relative to the location of the instance, whereas those for class attributes
1.9 -and modules are absolute addresses (although these could also be changed to
1.10 -object-relative locations). Thus, each occupied table cell has the following
1.11 -structure:
1.12 +The locations stored in table/list elements are generally for instance
1.13 +attributes relative to the location of the instance, whereas those for class
1.14 +attributes and module attributes are generally absolute addresses. Thus, each
1.15 +occupied table cell has the following structure:
1.16
1.17 attrcode, uses-absolute-address, address (or location)
1.18
1.19 @@ -233,6 +232,18 @@
1.20 is a need to test for classes and modules to prevent assignment to attributes
1.21 of such objects, this particular information is always required.
1.22
1.23 +The __class__ Attribute
1.24 +-----------------------
1.25 +
1.26 +The exception to the above general rules about relative locations and absolute
1.27 +addresses involves the __class__ attribute which is defined differently for
1.28 +each class and its instances. Since the table elements can only refer to a
1.29 +single absolute address, thus providing only a single value, such absolute
1.30 +references which are sufficient for most class attributes would not be
1.31 +appropriate for the __class__ attribute. However, using an object-relative
1.32 +location would require both classes and instances to retain an attribute
1.33 +location specifically to hold the value appropriate for each object type.
1.34 +
1.35 Comparing Tables as Matrices with Displacement Lists
1.36 ----------------------------------------------------
1.37