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


Ignore:
Timestamp:
Dec 10, 2009 1:50:31 PM (4 years ago)
Author:
simonmar
Comment:

--

Legend:

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

    v11 v12  
    3737Pointer-tagging is a fairly significant optimisation: we measured 10-14% depending on platform.  A large proportion of this comes from eliminating the indirect jumps in a case expression, which are hard to predict by branch-prediction.  The paper has full results and analysis. 
    3838 
    39 The [wiki:Commentary/Rts/Storage/GC garbage collector] maintains tag bits on the pointers it traverses; additionally when it eliminates an indirection it takes the tag bits from the pointer inside the indirection. 
     39== Garbage collection with tagged pointers == 
     40 
     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. 
     42 
     43Additionally, 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. 
    4044 
    4145== Invariants ==