Skip to content

[WIP] Don't add SRT entries for non-updatable thunks

Ömer Sinan Ağacan requested to merge osa1/ghc:single_entry_srts into master

Non-updatable thunks are currently added to SRTs even though they can't really point to heap, because they're don't become indirections to heap after being evaluated.

With this patch we avoid doing this.

TODO: Non-updatable thunks are currently called single-entry, which is misleading, as it is possible to evaluate (or enter) them multiple times. Perhaps we should rename this.

NoFib results
--------------------------------------------------------------------------------
        Program           Size    Allocs    Instrs     Reads    Writes
--------------------------------------------------------------------------------
             CS           0.0%      0.0%     -0.0%     -0.0%     -0.0%
            CSD           0.0%      0.0%      0.0%     -0.0%     -0.0%
             FS           0.0%      0.0%     -0.0%     -0.0%     -0.0%
              S           0.0%      0.0%     -0.0%     -0.0%     -0.0%
             VS           0.0%      0.0%     -0.0%     -0.0%     -0.0%
            VSD           0.0%      0.0%      0.0%     -0.0%     -0.1%
            VSM           0.0%      0.0%     +0.0%      0.0%     -0.0%
           anna           0.0%      0.0%     +0.0%     +0.0%     +0.0%
           ansi           0.0%      0.0%     +0.0%     +0.0%     +0.0%
           atom           0.0%      0.0%     +0.0%     +0.0%      0.0%
         awards           0.0%      0.0%     +0.0%     -0.0%     -0.0%
         banner           0.0%      0.0%     +0.0%     +0.0%     -0.0%
     bernouilli           0.0%      0.0%     -0.0%     -0.0%     -0.0%
   binary-trees           0.0%      0.0%     -0.0%     -0.0%     -0.0%
          boyer           0.0%      0.0%     +0.0%      0.0%     -0.0%
         boyer2           0.0%      0.0%     +0.0%      0.0%     -0.0%
           bspt           0.0%      0.0%     +0.0%     +0.0%     +0.0%
      cacheprof           0.0%      0.0%      0.0%     -0.0%      0.0%
       calendar           0.0%      0.0%     +0.0%     +0.0%     +0.0%
       cichelli           0.0%      0.0%     -0.0%     +0.0%      0.0%
        circsim           0.0%      0.0%     +0.0%      0.0%     +0.0%
       clausify           0.0%      0.0%     +0.0%     +0.0%     +0.0%
  comp_lab_zift           0.0%      0.0%     +0.0%      0.0%      0.0%
       compress           0.0%      0.0%     +0.0%     -0.0%      0.0%
      compress2           0.0%      0.0%     +0.0%     +0.0%      0.0%
    constraints           0.0%      0.0%     -0.0%      0.0%     -0.0%
   cryptarithm1           0.0%      0.0%     +0.0%     +0.0%      0.0%
   cryptarithm2           0.0%      0.0%     +0.0%     +0.0%     -0.0%
            cse           0.0%      0.0%     +0.0%     +0.0%     -0.0%
   digits-of-e1           0.0%      0.0%     +0.0%     -0.0%     -0.0%
   digits-of-e2           0.0%      0.0%     -0.0%     -0.0%      0.0%
         dom-lt          -0.0%      0.0%     -0.0%     -0.0%     -0.0%
          eliza           0.0%      0.0%     -0.0%     +0.0%     +0.0%
          event           0.0%      0.0%     -0.0%      0.0%     -0.0%
    exact-reals           0.0%      0.0%     -0.0%     -0.0%     -0.0%
         exp3_8           0.0%      0.0%      0.0%     -0.0%     -0.0%
         expert           0.0%      0.0%     +0.0%     +0.0%     +0.0%
 fannkuch-redux           0.0%      0.0%     -0.0%     -0.0%     -0.0%
          fasta           0.0%      0.0%     -0.0%     -0.0%     -0.0%
            fem           0.0%      0.0%     -0.0%      0.0%     -0.0%
            fft           0.0%      0.0%     -0.0%     -0.0%     -0.0%
           fft2           0.0%      0.0%     -0.0%     -0.0%     -0.0%
       fibheaps           0.0%      0.0%     +0.0%     -0.0%     -0.0%
           fish           0.0%      0.0%      0.0%     -0.0%     -0.0%
          fluid           0.0%      0.0%     +0.0%     +0.0%     -0.0%
         fulsom           0.0%      0.0%     +0.0%      0.0%     -0.0%
         gamteb           0.0%      0.0%     +0.0%     +0.0%      0.0%
            gcd           0.0%      0.0%     +0.0%     +0.0%     +0.0%
    gen_regexps           0.0%      0.0%     -0.0%     -0.0%     -0.0%
         genfft           0.0%      0.0%     -0.0%     +0.0%     +0.0%
             gg           0.0%      0.0%     -0.0%     -0.0%     -0.0%
           grep           0.0%      0.0%     -0.0%     +0.0%      0.0%
         hidden           0.0%      0.0%     +0.0%     -0.0%     +0.0%
            hpg           0.0%      0.0%     +0.0%     +0.0%      0.0%
            ida           0.0%      0.0%     -0.0%     -0.0%     -0.0%
          infer           0.0%      0.0%     +0.0%     -0.0%     -0.0%
        integer           0.0%      0.0%     +0.0%     -0.0%     -0.0%
      integrate           0.0%      0.0%     -0.0%     -0.0%     -0.0%
   k-nucleotide           0.0%      0.0%     -0.0%     -0.0%     -0.0%
          kahan           0.0%      0.0%     +0.0%     +0.0%     +0.0%
        knights           0.0%      0.0%     +0.0%     -0.0%     -0.0%
         lambda           0.0%      0.0%     +0.0%      0.0%      0.0%
     last-piece           0.0%      0.0%     +0.0%     +0.0%      0.0%
           lcss           0.0%      0.0%     +0.0%     -0.0%     -0.0%
           life           0.0%      0.0%     -0.0%     -0.0%     -0.0%
           lift           0.0%      0.0%     -0.0%     -0.0%     -0.0%
         linear           0.0%      0.0%     -0.0%     -0.0%      0.0%
      listcompr           0.0%      0.0%     +0.0%     -0.0%      0.0%
       listcopy           0.0%      0.0%     +0.0%     -0.0%      0.0%
       maillist           0.0%      0.0%     +0.0%     -0.0%     -0.0%
         mandel           0.0%      0.0%     +0.0%      0.0%     -0.0%
        mandel2           0.0%      0.0%     -0.0%     -0.0%     +0.0%
           mate           0.0%      0.0%     +0.0%     +0.0%     +0.0%
        minimax           0.0%      0.0%     +0.0%     +0.0%     +0.0%
        mkhprog           0.0%      0.0%     +0.0%     +0.0%      0.0%
     multiplier           0.0%      0.0%     +0.0%     -0.0%     -0.0%
         n-body           0.0%      0.0%     -0.0%     -0.0%     -0.0%
       nucleic2           0.0%      0.0%     +0.0%     +0.0%      0.0%
           para           0.0%      0.0%     +0.0%     +0.0%     +0.0%
      paraffins           0.0%      0.0%     +0.0%     +0.0%     -0.0%
         parser           0.0%      0.0%      0.0%     -0.0%     +0.0%
        parstof           0.0%      0.0%     +0.0%     +0.0%     +0.0%
            pic           0.0%      0.0%     -0.0%      0.0%      0.0%
       pidigits           0.0%      0.0%     +0.0%     -0.0%     -0.0%
          power           0.0%      0.0%     +0.0%     +0.0%     +0.0%
         pretty           0.0%      0.0%     -0.0%     -0.0%     -0.0%
         primes           0.0%      0.0%     -0.0%     -0.0%     +0.0%
      primetest           0.0%      0.0%      0.0%     +0.0%     +0.0%
         prolog           0.0%      0.0%     -0.0%     -0.0%     -0.0%
         puzzle           0.0%      0.0%      0.0%      0.0%      0.0%
         queens           0.0%      0.0%     +0.0%     +0.0%      0.0%
        reptile           0.0%      0.0%     +0.0%     +0.0%      0.0%
reverse-complem           0.0%      0.0%     +0.0%     -0.0%     -0.0%
        rewrite           0.0%      0.0%     +0.0%     -0.0%     -0.0%
           rfib           0.0%      0.0%     +0.0%     +0.0%     +0.0%
            rsa           0.0%      0.0%     -0.0%     +0.0%     +0.0%
            scc           0.0%      0.0%     +0.0%     -0.0%     +0.0%
          sched           0.0%      0.0%     +0.0%     +0.0%     +0.0%
            scs           0.0%      0.0%     +0.0%      0.0%      0.0%
         simple           0.0%      0.0%     +0.0%      0.0%      0.0%
          solid           0.0%      0.0%     +0.0%     +0.0%     +0.0%
        sorting           0.0%      0.0%      0.0%      0.0%      0.0%
  spectral-norm           0.0%      0.0%     -0.0%     -0.0%     -0.0%
         sphere           0.0%      0.0%     +0.0%     -0.0%     -0.0%
         symalg           0.0%      0.0%     -0.0%     -0.0%     -0.0%
            tak           0.0%      0.0%     +0.0%     +0.0%      0.0%
      transform           0.0%      0.0%     -0.0%     -0.0%      0.0%
       treejoin           0.0%      0.0%     +0.0%      0.0%     +0.0%
      typecheck           0.0%      0.0%     -0.0%     -0.0%     -0.0%
        veritas           0.0%      0.0%     -0.0%     -0.0%     -0.0%
           wang           0.0%      0.0%     -0.0%      0.0%     +0.0%
      wave4main           0.0%      0.0%     +0.0%     +0.0%      0.0%
   wheel-sieve1           0.0%      0.0%     -0.0%     -0.0%     -0.0%
   wheel-sieve2           0.0%      0.0%     -0.0%     -0.0%     -0.0%
           x2n1           0.0%      0.0%     +0.0%     -0.0%     -0.0%
--------------------------------------------------------------------------------
            Min          -0.0%      0.0%     -0.0%     -0.0%     -0.1%
            Max           0.0%      0.0%     +0.0%     +0.0%     +0.0%
 Geometric Mean          -0.0%     -0.0%     -0.0%     -0.0%     -0.0%
Edited by Ömer Sinan Ağacan

Merge request reports