Skip to content
  • Ömer Sinan Ağacan's avatar
    Cross-module LambdaFormInfo passing · 8822bbc1
    Ömer Sinan Ağacan authored
    - Store LambdaFormInfos of exported Ids in interface files
    - Use them in importing modules
    
    This is for optimization purposes: if we know LambdaFormInfo of imported
    Ids we can generate more efficient calling code, see `getCallMethod`.
    
    Exporting (putting them in interface files or in ModDetails) and
    importing (reading them from interface files) are both optional. We
    don't assume known LambdaFormInfos anywhere and do not change how we
    call Ids with unknown LambdaFormInfos.
    
    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.3%     -0.8%     -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.1%     -0.3%      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.2%      0.0%
          cacheprof           0.0%      0.0%     -0.1%     -0.4%     +0.0%
           calendar           0.0%      0.0%     -0.0%     -0.0%      0.0%
           cichelli           0.0%      0.0%     -0.9%     -2.4%      0.0%
            circsim           0.0%      0.0%     -0.0%     -0.0%      0.0%
           clausify           0.0%      0.0%     -0.1%     -0.3%      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.1%     -0.2%     -0.0%
       cryptarithm1           0.0%      0.0%     -0.0%     -0.0%      0.0%
       cryptarithm2           0.0%      0.0%     -1.4%     -4.1%     -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.1%     -0.2%      0.0%
              eliza           0.0%      0.0%     -0.5%     -1.5%      0.0%
              event           0.0%      0.0%     -0.0%     -0.0%     -0.0%
        exact-reals           0.0%      0.0%     -0.1%     -0.3%     +0.0%
             exp3_8           0.0%      0.0%     -0.0%     -0.0%     -0.0%
             expert           0.0%      0.0%     -0.3%     -1.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.4%     -1.2%     +0.0%
             fulsom           0.0%      0.0%     -0.0%     -0.0%      0.0%
             gamteb           0.0%      0.0%     -0.1%     -0.3%      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.1%     -0.4%     -0.0%
                hpg           0.0%      0.0%     -0.2%     -0.5%     +0.0%
                ida           0.0%      0.0%     -0.0%     -0.0%     +0.0%
              infer           0.0%      0.0%     -0.3%     -0.8%     -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%     -2.2%     -5.4%      0.0%
             lambda           0.0%      0.0%     -0.6%     -1.8%      0.0%
         last-piece           0.0%      0.0%     -0.0%     -0.0%      0.0%
               lcss           0.0%      0.0%     -0.0%     -0.1%      0.0%
               life           0.0%      0.0%     -0.0%     -0.1%      0.0%
               lift           0.0%      0.0%     -0.2%     -0.6%     +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.1%     -0.3%     +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.2%     -1.0%      0.0%
            mkhprog           0.0%      0.0%     -0.1%     -0.2%     -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.1%     -0.2%      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.2%     -0.7%      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.2%     -0.6%     +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.3%     -1.1%      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.7%     -2.5%     -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.1%     -0.2%     -0.0%
              sched           0.0%      0.0%     -0.0%     -0.0%     -0.0%
                scs           0.0%      0.0%     -1.0%     -2.6%     +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.6%     -1.6%      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.2%     -0.4%     +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%     -2.2%     -5.4%     -0.0%
                Max          +0.0%      0.0%     +0.0%     +0.0%     +0.1%
     Geometric Mean          -0.0%     -0.0%     -0.1%     -0.3%     +0.0%
    8822bbc1