Changes between Version 21 and Version 22 of SemiTagging
- Timestamp:
- 11/03/06 09:44:22 (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SemiTagging
v21 v22 93 93 This would require modifying 94 94 * 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) 95 * 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 secondelement of the list, and return to the caller with appropriate tag bits set.95 * perhaps, make the entry code for a constructor return a pointer with the appropriate bits set. That way, a function like `f xs = head xs` would enter the first element of the list, and return to the caller with appropriate tag bits set. 96 96 * the GC to set the LSB bit of constructor closure pointers, 97 97 * the GC and the RTS code to mask out the LSB pointer when dereferencing it, 98 98 * the code generation to test the LSB bit and case expressions and avoid the indirect jump. 99 100 (Simon, thanks for the example. I was hoping to not have to enter constructor closures but the second bullet example shows why entering constructors can still happen. However, can't the example just be {{{f xs = head xs}}}? --Alexey)101 99 102 100 {{{
