1. 18 Nov, 2008 1 commit
    • Simon Marlow's avatar
      Add optional eager black-holing, with new flag -feager-blackholing · d600bf7a
      Simon Marlow authored
      Eager blackholing can improve parallel performance by reducing the
      chances that two threads perform the same computation.  However, it
      has a cost: one extra memory write per thunk entry.  
      
      To get the best results, any code which may be executed in parallel
      should be compiled with eager blackholing turned on.  But since
      there's a cost for sequential code, we make it optional and turn it on
      for the parallel package only.  It might be a good idea to compile
      applications (or modules) with parallel code in with
      -feager-blackholing.
      
      ToDo: document -feager-blackholing.
      d600bf7a
  2. 17 Nov, 2008 5 commits
    • Simon Marlow's avatar
      Fix #2783: detect black-hole loops properly · 0fa59deb
      Simon Marlow authored
      At some point we regressed on detecting simple black-hole loops.  This
      happened due to the introduction of duplicate-work detection for
      parallelism: a black-hole loop looks very much like duplicate work,
      except it's duplicate work being performed by the very same thread.
      So we have to detect and handle this case.
      0fa59deb
    • Simon Marlow's avatar
    • Simon Marlow's avatar
      fix compile breakage on Windows · 27f66c28
      Simon Marlow authored
      27f66c28
    • Simon Marlow's avatar
      Attempt to fix #2512 and #2063; add +RTS -xm<address> -RTS option · 11f6f411
      Simon Marlow authored
      On x86_64, the RTS needs to allocate memory in the low 2Gb of the
      address space.  On Linux we can do this with MAP_32BIT, but sometimes
      this doesn't work (#2512) and other OSs don't support it at all
      (#2063).  So to work around this:
      
        - Try MAP_32BIT first, if available.
      
        - Otherwise, try allocating memory from a fixed address (by default
          1Gb)
      
        - We now provide an option to configure the address to allocate
          from.  This allows a workaround on machines where the default
          breaks, and also provides a way for people to test workarounds
          that we can incorporate in future releases.
      11f6f411
    • Simon Marlow's avatar
      Another shutdown fix · cb905327
      Simon Marlow authored
      If we encounter a runnable thread during shutdown, just kill it.  All
      the threads are supposed to be dead at this stage, but this catches
      threads that might have just returned from a foreign call, or were
      finalizers created by the GC.
      
      Fixes memo002(threaded1)
      cb905327
  3. 16 Nov, 2008 2 commits
  4. 14 Nov, 2008 7 commits
  5. 13 Nov, 2008 7 commits
  6. 12 Nov, 2008 2 commits
  7. 11 Nov, 2008 2 commits
    • Simon Marlow's avatar
      Fix parse error with older gccs (#2752) · 7ebf1a69
      Simon Marlow authored
      7ebf1a69
    • Simon Marlow's avatar
      Fix to i386_insert_ffrees (#2724, #1944) · dcd38ff7
      Simon Marlow authored
      The i386 native code generator has to arrange that the FPU stack is
      clear on exit from any function that uses the FPU.  Unfortunately it
      was getting this wrong (and has been ever since this code was written,
      I think): it was looking for basic blocks that used the FPU and adding
      the code to clear the FPU stack on any non-local exit from the block.
      In fact it should be doing this on a whole-function basis, rather than
      individual basic blocks.
      dcd38ff7
  8. 10 Nov, 2008 1 commit
  9. 05 Nov, 2008 1 commit
  10. 10 Nov, 2008 5 commits
  11. 08 Nov, 2008 7 commits