1. 25 Oct, 2013 1 commit
  2. 24 Oct, 2013 1 commit
  3. 18 Oct, 2013 4 commits
  4. 17 Oct, 2013 1 commit
  5. 16 Oct, 2013 3 commits
    • Jan Stolarek's avatar
      Remove unused code · a05ffbd9
      Jan Stolarek authored
      I am removing old loopification code that has been commented out
      for long long time. We now have loopification implemented in
      the code generator (see Note [Self-recursive tail calls]) so we
      won't need to resurect this old code.
      a05ffbd9
    • Jan Stolarek's avatar
      Trailing whitespaces · 738e2f12
      Jan Stolarek authored
      738e2f12
    • Jan Stolarek's avatar
      Generate (old + 0) instead of Sp in stack checks · 94125c97
      Jan Stolarek authored
      When compiling a function we can determine how much stack space it will
      use. We therefore need to perform only a single stack check at the beginning
      of a function to see if we have enough stack space. Instead of referring
      directly to Sp - as we used to do in the past - the code generator uses
      (old + 0) in the stack check. Stack layout phase turns (old + 0) into Sp.
      
      The idea here is that, while we need to perform only one stack check for
      each function, we could in theory place more stack checks later in the
      function. They would be redundant, but not incorrect (in a sense that they
      should not change program behaviour). We need to make sure however that a
      stack check inserted after incrementing the stack pointer checks for a
      respectively smaller stack space. This would not be the case if the code
      generator produced direct references to Sp. By referencing (old + 0) we make
      sure that we always check for a correct amount of stack: when converting
      (old + 0) to Sp the stack layout phase takes into account changes already
      made to stack pointer. The idea for this change came from observations made
      while debugging #8275.
      94125c97
  6. 12 Oct, 2013 2 commits
  7. 11 Oct, 2013 1 commit
  8. 02 Oct, 2013 1 commit
  9. 01 Oct, 2013 3 commits
  10. 29 Sep, 2013 1 commit
  11. 23 Sep, 2013 7 commits
  12. 20 Sep, 2013 1 commit
  13. 14 Sep, 2013 1 commit
  14. 13 Sep, 2013 1 commit
  15. 12 Sep, 2013 1 commit
    • Jan Stolarek's avatar
      Improve sinking pass · ad15c2b4
      Jan Stolarek authored
      This commit does two things:
      
        * Allows duplicating of global registers and literals by inlining
          them. Previously we would only inline global register or literal
          if it was used only once.
      
        * Changes method of determining conflicts between a node and an
          assignment. New method has two advantages. It relies on
          DefinerOfRegs and UserOfRegs typeclasses, so if a set of registers
          defined or used by a node should ever change, `conflicts` function
          will use the changed definition. This definition also catches
          more cases than the previous one (namely CmmCall and CmmForeignCall)
          which is a step towards making it possible to run sinking pass
          before stack layout (currently this doesn't work).
      
      This patch also adds a lot of comments that are result of about two-week
      long investigation of how sinking pass works and why it does what it does.
      ad15c2b4
  16. 11 Sep, 2013 2 commits
  17. 10 Sep, 2013 1 commit
  18. 06 Sep, 2013 1 commit
    • thoughtpolice's avatar
      Add basic support for GHCJS · b372e8ea
      thoughtpolice authored
      
      
      This patch encompasses most of the basic infrastructure for GHCJS. It
      includes:
      
        * A new extension, -XJavaScriptFFI
        * A new architecture, ArchJavaScript
        * Parser and lexer support for 'foreign import javascript', only
          available under -XJavaScriptFFI, using ArchJavaScript.
        * As a knock-on, there is also a new 'WayCustom' constructor in
          DynFlags, so clients of the GHC API can add custom 'tags' to their
          built files. This should be useful for other users as well.
      
      The remaining changes are really just the resulting fallout, making sure
      all the cases are handled appropriately for DynFlags and Platform.
      Authored-by: Luite Stegeman's avatarLuite Stegeman <stegeman@gmail.com>
      Signed-off-by: thoughtpolice's avatarAustin Seipp <aseipp@pobox.com>
      b372e8ea
  19. 04 Sep, 2013 1 commit
  20. 03 Sep, 2013 1 commit
  21. 02 Sep, 2013 1 commit
  22. 29 Aug, 2013 1 commit
  23. 22 Aug, 2013 1 commit
  24. 06 Aug, 2013 2 commits
    • gmainland's avatar
      Only use real XMM registers when assigning arguments. · 3e598fe0
      gmainland authored
      My original change to the calling convention mistakenly used all 6 XMM
      registers---which live in the global register table---on x86 (32 bit). This
      royally screwed up the floating point code generated for that platform because
      floating point arguments were passed in global registers instead of on the
      stack!
      3e598fe0
    • gmainland's avatar
      Rename SSE -> XMM for consistency. · 253a5b75
      gmainland authored
      We were using SSE is some places and XMM in others. Better to keep a consistent
      naming scheme.
      253a5b75