Changes between Version 12 and Version 13 of Commentary/Rts/HaskellExecution/PointerTagging


Ignore:
Timestamp:
Dec 10, 2009 1:51:54 PM (6 years ago)
Author:
simonmar
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Commentary/Rts/HaskellExecution/PointerTagging

    v12 v13  
    3939== Garbage collection with tagged pointers == 
    4040 
    41 The [wiki:Commentary/Rts/Storage/GC garbage collector] maintains tag bits on the pointers it traverses.  This is easier, it turns out, than ''reconstructing'' tag bits.  Reconstructing tag bits would require that the GC knows not only the tag of the constructor (which is in the info table), but also the family size (which is currently not in the info table), since a constructor from a large family should always have tag 1. 
     41The [wiki:Commentary/Rts/Storage/GC garbage collector] maintains tag bits on the pointers it traverses.  This is easier, it turns out, than ''reconstructing'' tag bits.  Reconstructing tag bits would require that the GC knows not only the tag of the constructor (which is in the info table), but also the family size (which is currently not in the info table), since a constructor from a large family should always have tag 1.  To make this practical we would probably need different closure types for "small family" and "large family" constructors, and we already subdivide the constructor closures types by their layout. 
    4242 
    4343Additionally, when the GC eliminates an indirection it takes the tag bits from the pointer inside the indirection.  Pointers to indirections always have zero tag bits.