... | ... | @@ -51,6 +51,8 @@ The benefit is that processors are typically faster at "test-and-jump to known l |
|
|
|
|
|
This would require modifying
|
|
|
|
|
|
- the code generation so that when allocating a constructor, the pointer to it has the appropriate bits set (just a matter of adjusting the offset from Hp)
|
|
|
- perhaps, make the entry code for a constructor return a pointer with the appropriate bits set. That way, a function like `f xs = head (tail xs)` would enter the second element of the list, and return to the caller with appropriate tag bits set.
|
|
|
- the GC to set the LSB bit of constructor closure pointers,
|
|
|
- the GC and the RTS code to mask out the LSB pointer when dereferencing it,
|
|
|
- the code generation to test the LSB bit and case expressions and avoid the indirect jump.
|
... | ... | |