• Ben Gamari's avatar
    TcTypeable: Try to reuse KindReps · a694cee7
    Ben Gamari authored
    Here we rework the TcTypeable implementation to reuse KindRep bindings
    when possible. This is an attempt at minimizing the impact of Typeable
    binding generation by reducing the number of bindings that we produce.
    
    It turns out that this produces some pretty reasonable compiler
    allocations improvements. It seems to erase most of the increases
    initially introduced by TTypeable in the testsuite. Moreover, nofib
    shows,
    ```
            -1 s.d.                -----          -3.555%
            +1 s.d.                -----          +1.937%
            Average                -----          -0.847%
    ```
    
    Here are a few of the high-scorers (ignore last column, which is for
    D3219),
    ```
    veritas
              Types             88800920         -18.945%         -21.480%
    
    veritas
            Tactics            540766744         -27.256%         -27.338%
    
    sched
               Main            567013384          -4.947%          -5.358%
    
    listcompr
               Main            532300000          -4.273%          -4.572%
    
    listcopy
               Main            537785392          -4.382%          -4.635%
    
    anna
           BaseDefs           1984225032         -10.639%         -10.832%
    
    ```
    as expected, these tend to be modules with either very many or very
    large types.
    
    Test Plan: Validate
    
    Reviewers: austin, dfeuer
    
    Subscribers: simonmar, dfeuer, thomie
    
    Differential Revision: https://phabricator.haskell.org/D3166
    a694cee7
Roles4.stderr 1.94 KB