1. 26 Mar, 2009 3 commits
  2. 23 Mar, 2009 1 commit
    • Bertram Felgenhauer's avatar
      update list of C math functions · f7ecb11b
      Bertram Felgenhauer authored
      Fix via C compilation of modules that import, say, log1p from math.h (#3117)
      
      The list is based on preprocessing Stg.h with glibc 2.6.1 headers, and
      cross-checked with the ISO C 99 standard (draft).
      f7ecb11b
  3. 25 Mar, 2009 1 commit
    • chak@cse.unsw.edu.au.'s avatar
      Template Haskell: make reify aware of type families · 3517c53d
      chak@cse.unsw.edu.au. authored
      - Reifying a type family returns a TH family declaration
      - Reifying a data constructor from a data instance attributes that
        constructor to the family (not the representation tycon)
      - Ideally, we should have facilities to reify all type/data instances of a 
        given family (and the same for instances of a class).  I haven't added that
        here as it involves some API design.
      3517c53d
  4. 24 Mar, 2009 1 commit
  5. 22 Mar, 2009 2 commits
  6. 23 Mar, 2009 1 commit
  7. 20 Mar, 2009 2 commits
  8. 18 Mar, 2009 1 commit
  9. 19 Mar, 2009 2 commits
  10. 20 Mar, 2009 2 commits
  11. 19 Mar, 2009 1 commit
  12. 18 Mar, 2009 2 commits
  13. 19 Mar, 2009 4 commits
  14. 18 Mar, 2009 3 commits
  15. 17 Mar, 2009 1 commit
  16. 16 Mar, 2009 2 commits
  17. 18 Mar, 2009 2 commits
    • simonpj@microsoft.com's avatar
      Add the notion of "constructor-like" Ids for rule-matching · 4bc25e8c
      simonpj@microsoft.com authored
      This patch adds an optional CONLIKE modifier to INLINE/NOINLINE pragmas, 
         {-# NOINLINE CONLIKE [1] f #-}
      The effect is to allow applications of 'f' to be expanded in a potential
      rule match.  Example
        {-# RULE "r/f" forall v. r (f v) = f (v+1) #-}
      
      Consider the term
           let x = f v in ..x...x...(r x)...
      Normally the (r x) would not match the rule, because GHC would be scared
      about duplicating the redex (f v). However the CONLIKE modifier says to
      treat 'f' like a constructor in this situation, and "look through" the
      unfolding for x.  So (r x) fires, yielding (f (v+1)).
      
      The main changes are:
        - Syntax
      
        - The inlinePragInfo field of an IdInfo has a RuleMatchInfo
          component, which records whether or not the Id is CONLIKE.
          Of course, this needs to be serialised in interface files too.
      
        - The occurrence analyser (OccAnal) and simplifier (Simplify) treat
          CONLIKE thing like constructors, by ANF-ing them
      
        - New function coreUtils.exprIsExpandable is like exprIsCheap, but
          additionally spots applications of CONLIKE functions
      
        - A CoreUnfolding has a field that caches exprIsExpandable
      
        - The rule matcher consults this field.  See 
          Note [Expanding variables] in Rules.lhs.
      
      On the way I fixed a lurking variable bug in the way variables are
      expanded.  See Note [Do not expand locally-bound variables] in
      Rule.lhs.  I also did a bit of reformatting and refactoring in
      Rules.lhs, so the module has more lines changed than are really
      different.
      4bc25e8c
    • Simon Marlow's avatar
      bd78c94a
  18. 17 Mar, 2009 3 commits
    • Simon Marlow's avatar
      Add fast event logging · 8b18faef
      Simon Marlow authored
      Generate binary log files from the RTS containing a log of runtime
      events with timestamps.  The log file can be visualised in various
      ways, for investigating runtime behaviour and debugging performance
      problems.  See for example the forthcoming ThreadScope viewer.
      
      New GHC option:
      
        -eventlog   (link-time option) Enables event logging.
      
        +RTS -l     (runtime option) Generates <prog>.eventlog with
                    the binary event information.
      
      This replaces some of the tracing machinery we already had in the RTS:
      e.g. +RTS -vg  for GC tracing (we should do this using the new event
      logging instead).
      
      Event logging has almost no runtime cost when it isn't enabled, though
      in the future we might add more fine-grained events and this might
      change; hence having a link-time option and compiling a separate
      version of the RTS for event logging.  There's a small runtime cost
      for enabling event-logging, for most programs it shouldn't make much
      difference.
      
      (Todo: docs)
      8b18faef
    • Simon Marlow's avatar
      FIX biographical profiling (#3039, probably #2297) · f8f4cb3f
      Simon Marlow authored
      Since we introduced pointer tagging, we no longer always enter a
      closure to evaluate it.  However, the biographical profiler relies on
      closures being entered in order to mark them as "used", so we were
      getting spurious amounts of data attributed to VOID.  It turns out
      there are various places that need to be fixed, and I think at least
      one of them was also wrong before pointer tagging (CgCon.cgReturnDataCon).
      f8f4cb3f
    • Simon Marlow's avatar
      Add getNumberOfProcessors(), FIX MacOS X build problem (hopefully) · 0ee0be10
      Simon Marlow authored
      Somebody needs to implement getNumberOfProcessors() for MacOS X,
      currently it will return 1.
      0ee0be10
  19. 16 Mar, 2009 3 commits
  20. 13 Mar, 2009 2 commits
  21. 17 Feb, 2009 1 commit