Page Information Structure

PageInfo structure:
  1. A header word for the page.
  2. A previous and next pointer for linked list management.
  3. A reserved word to make the PageInfo structure a power of two.

Page Header values

Bit SetMeaningComments
0 Reserved This is mainly for debugging purposes. Internally the memory subsystem handles page requests and maintains the invariant that every page that is not free has this bit set.
1 User Page Any page in to-Space or from-Space is a User page. Pages for queues and such are not user pages.
2 System Page Pages marked as System pages are used for internal data structures. Mostly these are queues. Pages in the free list are not considered system pages.
3 Pinned Used to denote a page that cannot be moved.
4 Old This bit designates the page as old(i.e. belonging to an older generation).
5 Modified Used for card marking in the generational scheme.
6 Blacklisted If blacklisting is in effect this marks a page as blacklisted.
7 Bitmask Updated Earlier we had associated a bitmask with each page to denote which words were header words and which weren't. This has been abandoned since but a lot of code is still lying around which may be reused at some future date.
?-31 Offset The offset records where the first header word occurs on this page. We are currently not using this at all. But it may be useful for squeezing multiple large objects on the same page.
If no bits are set the page is "free" or unused.