All data directly accessible from the high-level language is stored in data structures, each of which is called a qnode, which consists of 2 adjacent rows in the right-hand section. Each row is 65,520 bytes long (actually only 4096 bytes long in the Windows version of the GC, to save memory space). In each row, the first bit (leftmost bit) is 0 if this row is a pointer, and 1 if this row contains data. If the row contains data, the next bit determines if the row is a set, and if not, the next 3 bits determine the type of data, the next bit determines if the row is an operator, and if not, the next 16 bits determine the array length (0 to 65,000). If the row is an operator, the next 16 bits determine the op-code. If the array length is 0 and the data type is char, the row equals the null string. A pointer of zero is referred to as nil.
Data Types
|
Length |
Type |
|
1 |
boolean |
|
1 |
byte |
|
2 |
short |
|
4 |
int |
|
8 |
long |
|
8 |
float |
|
2 |
char |
|
N/A |
void |