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
