1. 25 Sep, 2007 1 commit
  2. 24 Sep, 2007 2 commits
  3. 17 Sep, 2007 1 commit
    • Simon Marlow's avatar
      FIX #1038: failure of selector-thunk machinery to do its job · 2018c430
      Simon Marlow authored
      After a couple of abortive attempts, I think I've got this right.
      When the GC sees a chain of the form 
         snd (_, snd (_, snd (_, ...)))
      it can now deal with an arbitrary nesting depth, whereas previously it
      had a depth limit which was necessitated by the use of recursion.  Now
      we chain all the selector thunks together in the heap, and go back and
      update them all when we find the value at the end of the chain.
      While I was here I removed some old cruft in eval_thunk_selector()
      which was carefully manintaing invariants that aren't necessary any
      more, the main one being that evacuate() can safely be passed a
      to-space pointer now.
      In addition to validate I've tested building a stage3 compiler with
      and without +RTS -c, so I'm reasonably sure this is safe.
  4. 14 Sep, 2007 1 commit
  5. 23 Sep, 2007 7 commits
  6. 20 Sep, 2007 2 commits
  7. 21 Sep, 2007 4 commits
  8. 19 Sep, 2007 2 commits
  9. 20 Sep, 2007 2 commits
  10. 19 Sep, 2007 6 commits
  11. 18 Sep, 2007 1 commit
  12. 19 Sep, 2007 1 commit
  13. 18 Sep, 2007 4 commits
  14. 16 Sep, 2007 2 commits
  15. 18 Sep, 2007 1 commit
  16. 17 Sep, 2007 3 commits
    • Ben.Lippmeier@anu.edu.au's avatar
      Tune coalescing in non-iterative register allocator · fff4dee0
      Ben.Lippmeier@anu.edu.au authored
      If iterative coalescing isn't turned on, then do a single aggressive
      coalescing pass for the first build/color cycle and then back off to 
      conservative coalescing for subseqent passes.
      Aggressive coalescing is a cheap way to eliminate lots of the reg-reg
      moves, but it can make the graph less colorable - if we turn it on 
      for every pass then allocation for code with a large amount of register
      pressure (ie SHA1) doesn't converge in a sensible number of cycles.
    • Ben.Lippmeier@anu.edu.au's avatar
      Bugfix to iterative coalescer · 6a347ffc
      Ben.Lippmeier@anu.edu.au authored
      Coalescences must be applied to the unsimplified graph in the same order 
      they were found by the iterative coalescing algorithm - otherwise
      the vreg rewrite mapping will be wrong and badness will ensue.
    • Ben.Lippmeier@anu.edu.au's avatar
      Add -dasm-lint · 1116b874
      Ben.Lippmeier@anu.edu.au authored
      When -dasm-lint is turned on the register conflict graph is checked for 
      internal consistency after each build/color pass. Make sure that all 
      edges point to valid nodes, that nodes are colored differently to their
      neighbours, and if the graph is supposed to be colored, that all nodes
      actually have a color.