• Edward Z. Yang's avatar
    Partially fix #367 by adding HpLim checks to entry with -fno-omit-yields. · d3128bfc
    Edward Z. Yang authored
    
    
    The current fix is relatively dumb as far as where to add HpLim
    checks: it will always perform a check unless we know that we're
    returning from a closure or we are doing a non let-no-escape case
    analysis.  The performance impact on the nofib suite looks like this:
    
                Min          +5.7%     -0.0%     -6.5%     -6.4%    -50.0%
                Max          +6.3%     +5.8%     +5.0%     +5.5%     +0.8%
     Geometric Mean          +6.2%     +0.1%     +0.5%     +0.5%     -0.8%
    
    Overall, the executable bloat is the biggest problem, so we keep the old
    omit-yields optimization on by default. Remember that if you need an
    interruptibility guarantee, you need to recompile all of your libraries
    with -fno-omit-yields.
    
    A better fix would involve only inserting the yields necessary to break
    loops; this is left as future work.
    Signed-off-by: Edward Z. Yang's avatarEdward Z. Yang <ezyang@mit.edu>
    d3128bfc
StgCmmHeap.hs 24.3 KB