1. 05 Nov, 2012 1 commit
  2. 30 Oct, 2012 5 commits
  3. 25 Oct, 2012 2 commits
  4. 24 Oct, 2012 2 commits
  5. 23 Oct, 2012 4 commits
  6. 22 Oct, 2012 1 commit
    • Simon Marlow's avatar
      Foreign calls can clobber heap & stack memory too · 412af8c2
      Simon Marlow authored
      We were making an aggressive assumption that foreign calls cannot
      clobber heap or stack memory, which for the majority of foreign calls
      is true, but we violate the assumption in the implementation of
      primops in the RTS.  This was causing crashes in some STM tests.
      412af8c2
  7. 19 Oct, 2012 1 commit
    • Simon Marlow's avatar
      Remove the old codegen · 6fbd46b0
      Simon Marlow authored
      Except for CgUtils.fixStgRegisters that is used in the NCG and LLVM
      backends, and should probably be moved somewhere else.
      6fbd46b0
  8. 18 Oct, 2012 1 commit
    • ian@well-typed.com's avatar
      Refactor the way dump flags are handled · d4a19643
      ian@well-typed.com authored
      We were being inconsistent about how we tested whether dump flags
      were enabled; in particular, sometimes we also checked the verbosity,
      and sometimes we didn't.
      
      This lead to oddities such as "ghc -v4" printing an "Asm code" section
      which didn't contain any code, and "-v4" enabled some parts of
      "-ddump-deriv" but not others.
      
      Now all the tests use dopt, which also takes the verbosity into account
      as appropriate.
      d4a19643
  9. 16 Oct, 2012 2 commits
  10. 12 Oct, 2012 1 commit
  11. 08 Oct, 2012 2 commits
    • Simon Marlow's avatar
      untab · a94144b8
      Simon Marlow authored
      a94144b8
    • Simon Marlow's avatar
      Produce new-style Cmm from the Cmm parser · a7c0387d
      Simon Marlow authored
      The main change here is that the Cmm parser now allows high-level cmm
      code with argument-passing and function calls.  For example:
      
      foo ( gcptr a, bits32 b )
      {
        if (b > 0) {
           // we can make tail calls passing arguments:
           jump stg_ap_0_fast(a);
        }
      
        return (x,y);
      }
      
      More details on the new cmm syntax are in Note [Syntax of .cmm files]
      in CmmParse.y.
      
      The old syntax is still more-or-less supported for those occasional
      code fragments that really need to explicitly manipulate the stack.
      However there are a couple of differences: it is now obligatory to
      give a list of live GlobalRegs on every jump, e.g.
      
        jump %ENTRY_CODE(Sp(0)) [R1];
      
      Again, more details in Note [Syntax of .cmm files].
      
      I have rewritten most of the .cmm files in the RTS into the new
      syntax, except for AutoApply.cmm which is generated by the genapply
      program: this file could be generated in the new syntax instead and
      would probably be better off for it, but I ran out of enthusiasm.
      
      Some other changes in this batch:
      
       - The PrimOp calling convention is gone, primops now use the ordinary
         NativeNodeCall convention.  This means that primops and "foreign
         import prim" code must be written in high-level cmm, but they can
         now take more than 10 arguments.
      
       - CmmSink now does constant-folding (should fix #7219)
      
       - .cmm files now go through the cmmPipeline, and as a result we
         generate better code in many cases.  All the object files generated
         for the RTS .cmm files are now smaller.  Performance should be
         better too, but I haven't measured it yet.
      
       - RET_DYN frames are removed from the RTS, lots of code goes away
      
       - we now have some more canned GC points to cover unboxed-tuples with
         2-4 pointers, which will reduce code size a little.
      a7c0387d
  12. 05 Oct, 2012 1 commit
  13. 25 Sep, 2012 2 commits
  14. 24 Sep, 2012 2 commits
  15. 20 Sep, 2012 4 commits
  16. 19 Sep, 2012 3 commits
  17. 18 Sep, 2012 6 commits