1. 04 May, 2014 1 commit
  2. 02 May, 2014 1 commit
    • Simon Marlow's avatar
      Per-thread allocation counters and limits · b0534f78
      Simon Marlow authored
      This tracks the amount of memory allocation by each thread in a
      counter stored in the TSO.  Optionally, when the counter drops below
      zero (it counts down), the thread can be sent an asynchronous
      exception: AllocationLimitExceeded.  When this happens, given a small
      additional limit so that it can handle the exception.  See
      documentation in GHC.Conc for more details.
      
      Allocation limits are similar to timeouts, but
      
        - timeouts use real time, not CPU time.  Allocation limits do not
          count anything while the thread is blocked or in foreign code.
      
        - timeouts don't re-trigger if the thread catches the exception,
          allocation limits do.
      
        - timeouts can catch non-allocating loops, if you use
          -fno-omit-yields.  This doesn't work for allocation limits.
      
      I couldn't measure any impact on benchmarks with these changes, even
      for nofib/smp.
      b0534f78
  3. 23 Sep, 2013 3 commits
  4. 06 Aug, 2013 1 commit
  5. 01 Feb, 2013 2 commits
  6. 30 Oct, 2012 1 commit
    • gmainlan@microsoft.com's avatar
      Draw STG F and D registers from the same pool of available SSE registers on x86-64. · e2f6bbd3
      gmainlan@microsoft.com authored
      On x86-64 F and D registers are both drawn from SSE registers, so there is no
      reason not to draw them from the same pool of available SSE registers. This
      means that whereas previously a function could only receive two Double arguments
      in registers even if it did not have any Float arguments, now it can receive up
      to 6 arguments that are any mix of Float and Double in registers.
      
      This patch breaks the LLVM back end. The next patch will fix this breakage.
      e2f6bbd3
  7. 28 Aug, 2012 1 commit
    • ian@well-typed.com's avatar
      Move more code into codeGen/CodeGen/Platform.hs · c0907ed2
      ian@well-typed.com authored
      HaskellMachRegs.h is no longer included in anything under compiler/
      
      Also, includes/CodeGen.Platform.hs now includes "stg/MachRegs.h"
      rather than <stg/MachRegs.h> which means that we always get the file
      from the tree, rather than from the bootstrapping compiler.
      c0907ed2
  8. 21 Aug, 2012 3 commits
  9. 07 Aug, 2012 1 commit
    • ian@well-typed.com's avatar
      Define callerSaves for all platforms · 46b5c197
      ian@well-typed.com authored
      This means that we now generate the same code whatever platform we are
      on, which should help avoid changes on one platform breaking the build
      on another.
      
      It's also another step towards full cross-compilation.
      46b5c197