[GHC] #6084: Add stg_ap_pnnv and related call patterns

GHC cvs-ghc at haskell.org
Mon Feb 25 17:47:49 CET 2013


#6084: Add stg_ap_pnnv and related call patterns
---------------------------------+------------------------------------------
    Reporter:  SimonMeier        |       Owner:  simonmar        
        Type:  feature request   |      Status:  infoneeded      
    Priority:  normal            |   Milestone:  7.8.1           
   Component:  Runtime System    |     Version:  7.4.1           
    Keywords:                    |          Os:  Unknown/Multiple
Architecture:  Unknown/Multiple  |     Failure:  None/Unknown    
  Difficulty:  Unknown           |    Testcase:                  
   Blockedby:                    |    Blocking:                  
     Related:                    |  
---------------------------------+------------------------------------------

Comment(by simonmar):

 I don't think they're orthogonal: both ways avoid building the
 intermediate PAP(s).  The tradeoffs are:

  * with extra call patterns, we have to predict which patterns we need,
 and we can easily get it wrong (e.g. we're talking here about needing
 `ppnnnv`, which is quite obscure)

  * extra call patterns take up static code space in the RTS whether we use
 them or not.

  * Generating the saturation check at the call site means extra code, but
 it works for any pattern, and you don't pay for it if you don't need it
 (the case in the codegen was not triggered at all in nofib, and was only
 triggered once in the codeGen tests, unless I did something wrong).

 The short-cut isn't the same as generating a fresh slow-call pattern at
 the call site.  It only does the saturation check, and delegates
 everything else to the existing slow call patterns.  I think it should be
 exactly what's needed in these cases, but I'd like to see some benchmarks.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/6084#comment:9>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler



More information about the ghc-tickets mailing list