Tagged Pointers in GOODS
Last updated at 11:54 am UTC on 17 January 2006
GOODS assumes that static type information is available, and so distinguishes between reference fields and immediate fields. In Smalltalk, of course, the same field could hold a string one moment and an integer the next. To accomodate this, the Squeak GOODS client uses "tagged pointers" - the high bit of the reference field (actually of the storage id word of the reference field) is used to mark immediate values such as integers, floats, and booleans.
This is directly supported by GOODS as of version 2.72. Previous versions of GOODS require the patch below.
This patch does have the side effect of reducing the maximum possible number of GOODS servers for a single database to around 32000. 32k should be enough for anyone.