Great! :)

Cheers,

Alexey

On Jul 27, 2007, at 12:46, Simon Marlow wrote:

Fri Jul 27 03:41:57 PDT 2007  Simon Marlow <[EMAIL PROTECTED]>
  * Pointer Tagging

This patch implements pointer tagging as per our ICFP'07 paper "Faster
  laziness using dynamic pointer tagging".  It improves performance by
  10-15% for most workloads, including GHC itself.

  The original patches were by Alexey Rodriguez Yakushev
  <[EMAIL PROTECTED]>, with additions and improvements by me.  I've
  re-recorded the development as a single patch.

  The basic idea is this: we use the low 2 bits of a pointer to a heap
  object (3 bits on a 64-bit architecture) to encode some information
  about the object pointed to.  For a constructor, we encode the "tag"
  of the constructor (e.g. True vs. False), for a function closure its
  arity.  This enables some decisions to be made without dereferencing
the pointer, which speeds up some common operations. In particular it
  enables us to avoid costly indirect jumps in many cases.

  More information in the commentary:

http://hackage.haskell.org/trac/ghc/wiki/Commentary/Rts/ HaskellExecution/PointerTagging

    M ./compiler/cmm/CmmLint.hs -3 +8
    M ./compiler/cmm/PprC.hs -1 +2
    M ./compiler/codeGen/CgBindery.lhs -12 +56
    M ./compiler/codeGen/CgClosure.lhs -3 +21
    M ./compiler/codeGen/CgCon.lhs -9 +18
    M ./compiler/codeGen/CgHeapery.lhs +3
    M ./compiler/codeGen/CgInfoTbls.hs -3 +22
    M ./compiler/codeGen/CgPrimOp.hs -1 +2
    M ./compiler/codeGen/CgProf.hs -3 +12
    M ./compiler/codeGen/CgTailCall.lhs -3 +63
    M ./compiler/codeGen/CgUtils.hs +62
    M ./compiler/codeGen/ClosureInfo.lhs -5 +33
    M ./compiler/main/Constants.lhs +10
    M ./compiler/nativeGen/MachCodeGen.hs +12
    M ./includes/Closures.h -1 +2
    M ./includes/Cmm.h -4 +41
    M ./includes/InfoTables.h -1 +1
    M ./includes/MachDeps.h +10
    M ./includes/Rts.h +40
    M ./includes/Storage.h -1 +1
    M ./includes/mkDerivedConstants.c +4
    M ./rts/Apply.cmm -10 +24
    M ./rts/HeapStackCheck.cmm -9 +23
    M ./rts/Interpreter.c -5 +6
    M ./rts/PrimOps.cmm -3 +6
    M ./rts/RetainerProfile.c -7 +15
    M ./rts/RtsAPI.c -17 +21
    M ./rts/Sanity.c -6 +11
    M ./rts/Sparks.c +6
    M ./rts/Stable.c -3 +8
    M ./rts/Stats.c +55
    M ./rts/StgMiscClosures.cmm -5 +5
    M ./rts/StgStartup.cmm +1
    M ./rts/StgStdThunks.cmm -5 +24
    M ./rts/sm/Compact.c -13 +26
    M ./rts/sm/Evac.c -23 +59
    M ./rts/sm/GC.c -4 +9
    M ./rts/sm/Scav.c -2 +2
    M ./utils/genapply/GenApply.hs -12 +107

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

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

Reply via email to