Next: , Up: layout intro   [Contents][Index]


2.1.1 Immediate values

These are the typical “atomic” values that come up a lot in computations. It is important to represent these as efficiently as possible, so they are packed directly in a ‘C_word’. This includes booleans, the empty list, small integers (these are called fixnums), characters and a few other special values.

Because these values are represented directly by a ‘C_word’, they can be compared in one instruction: eq? in Scheme. These values do not need to be heap–allocated: they fit directly in a register, and can be passed around “by value” in C. This also means they don’t need to be tracked by the garbage collector!

At a high enough level, these values simply look like this:

#t #f () 42 #\x

Next: , Up: layout intro   [Contents][Index]