Repository : ssh://darcs.haskell.org//srv/darcs/packages/containers

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/3f798e333509f02eb44d39a41068c76863064097

>---------------------------------------------------------------

commit 3f798e333509f02eb44d39a41068c76863064097
Author: Milan Straka <[email protected]>
Date:   Fri Nov 25 15:55:06 2011 +0100

    Overhaul INLINE and INLINABLE in Map and Set.
    
    * Rename INLINEABLE -> INLINABLE
      Though both work, the latter is the preferred according the docs.
    
    * Remove INLINABLE on methods not using type classes, as INLINABLE has
      real effect only on functions that use type classes (they get
      specialised in the call-site module).
    
      It also allows worker-wrapper transform on functions not marked
      INLINABLE (which surprisingly did not happen with INLINABLE).
    
    * In GHC, INLINing the INLINABLE method as in
        update f = updateWithKey (\_ x -> f x)
        {-# INLINE update #-}
        updateWithKey = ...
        {-# INLINABLE updateWithKey #-}
      does not produce wanted result -- the updateWithKey does not get
      specialized in the call-site module.
    
      The solution is to mark both functions INLINABLE.
    
    * Mark trivial functions as INLINE.

 Data/Map/Base.hs   |  218 +++++++++++++---------------------------------------
 Data/Map/Strict.hs |  101 +++++++++----------------
 Data/Set.hs        |   85 +++-----------------
 3 files changed, 103 insertions(+), 301 deletions(-)


Diff suppressed because of size. To see it, use:

    git show 3f798e333509f02eb44d39a41068c76863064097

_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to