This project is mirrored from https://gitlab.haskell.org/ghc/ghc.git. Pull mirroring failed .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer.
Last successful update .
  1. 08 Oct, 2012 2 commits
    • rl@cse.unsw.edu.au's avatar
      5cff4fb0
    • 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
  2. 16 Sep, 2012 1 commit
  3. 14 Sep, 2012 2 commits
  4. 13 Sep, 2012 2 commits
  5. 12 Sep, 2012 3 commits
  6. 10 Sep, 2012 2 commits
  7. 04 Sep, 2012 1 commit
  8. 31 Aug, 2012 2 commits
  9. 02 Aug, 2012 1 commit
    • Simon Marlow's avatar
      Explicitly share some return continuations · 6ede0067
      Simon Marlow authored
      Instead of relying on common-block-elimination to share return
      continuations in the common case (case-alternative heap checks) we do
      it explicitly.  This isn't hard to do, is more robust, and saves some
      compilation time.  Full commentary in Note [sharing continuations].
      6ede0067
  10. 24 Jul, 2012 1 commit
  11. 11 Jul, 2012 1 commit
  12. 05 Jun, 2012 1 commit
  13. 28 May, 2012 1 commit
  14. 06 Mar, 2012 1 commit
    • Simon Marlow's avatar
      Lower safe foreign calls in the new CmmLayoutStack · 93e42a68
      Simon Marlow authored
      We also generate much better code for safe foreign calls (and maybe
      also unsafe foreign calls) than previously.  See the two new Notes:
      
      Note [lower safe foreign calls]
      Note [safe foreign call convention]
      93e42a68
  15. 15 Feb, 2012 1 commit
  16. 25 Jan, 2012 1 commit
  17. 20 Jan, 2012 1 commit
  18. 07 Dec, 2011 1 commit
    • chak@cse.unsw.edu.au.'s avatar
      Add new primtypes 'ArrayArray#' and 'MutableArrayArray#' · 021a0dd2
      chak@cse.unsw.edu.au. authored
      The primitive array types, such as 'ByteArray#', have kind #, but are represented by pointers. They are boxed, but unpointed types (i.e., they cannot be 'undefined').
      
      The two categories of array types —[Mutable]Array# and [Mutable]ByteArray#— are containers for unboxed (and unpointed) as well as for boxed and pointed types.  So far, we lacked support for containers for boxed, unpointed types (i.e., containers for the primitive arrays themselves).  This is what the new primtypes provide.
      
      Containers for boxed, unpointed types are crucial for the efficient implementation of scattered nested arrays, which are central to the new DPH backend library dph-lifted-vseg.  Without such containers, we cannot eliminate all unboxing from the inner loops of traversals processing scattered nested arrays.
      021a0dd2
  19. 06 Dec, 2011 1 commit
  20. 30 Nov, 2011 1 commit
    • Simon Marlow's avatar
      Further tweaks to the ccs primops · 1fc25dfd
      Simon Marlow authored
       - add getCCSOf# :: a -> State# s -> (# State# s, Addr# #)
         (returns the CCS attached to the supplied object)
      
       - remove traceCcs# (obsoleted by getCCSOf#)
      
       - rename getCCCS# to getCurrentCCS#
      1fc25dfd
  21. 29 Nov, 2011 1 commit
  22. 14 Nov, 2011 1 commit
  23. 04 Nov, 2011 1 commit
  24. 03 Oct, 2011 1 commit
    • Ian Lynagh's avatar
      Handle HValues slightly nicer · aff9d690
      Ian Lynagh authored
      We now have addrToAny# rather than addrToHValue#, and both addrToAny#
      and mkApUpd0# return "Any" rather than "a". This makes it a little
      easier to see what's going on, and fixes a warning in ByteCodeLink.
      aff9d690
  25. 25 Aug, 2011 1 commit
  26. 16 Aug, 2011 1 commit
  27. 08 Jul, 2011 1 commit
  28. 17 Jun, 2011 2 commits
  29. 15 Jun, 2011 1 commit
  30. 13 Jun, 2011 1 commit
  31. 24 Jan, 2011 1 commit
    • Simon Marlow's avatar
      Merge in new code generator branch. · 889c084e
      Simon Marlow authored
      This changes the new code generator to make use of the Hoopl package
      for dataflow analysis.  Hoopl is a new boot package, and is maintained
      in a separate upstream git repository (as usual, GHC has its own
      lagging darcs mirror in http://darcs.haskell.org/packages/hoopl).
      
      During this merge I squashed recent history into one patch.  I tried
      to rebase, but the history had some internal conflicts of its own
      which made rebase extremely confusing, so I gave up. The history I
      squashed was:
      
        - Update new codegen to work with latest Hoopl
        - Add some notes on new code gen to cmm-notes
        - Enable Hoopl lag package.
        - Add SPJ note to cmm-notes
        - Improve GC calls on new code generator.
      
      Work in this branch was done by:
         - Milan Straka <fox@ucw.cz>
         - John Dias <dias@cs.tufts.edu>
         - David Terei <davidterei@gmail.com>
      
      Edward Z. Yang <ezyang@mit.edu> merged in further changes from GHC HEAD
      and fixed a few bugs.
      889c084e
  32. 01 Feb, 2011 1 commit