1. 12 Jun, 2012 2 commits
  2. 11 Jun, 2012 1 commit
  3. 05 Jun, 2012 1 commit
  4. 29 May, 2012 1 commit
  5. 15 May, 2012 1 commit
    • batterseapower's avatar
      Support code generation for unboxed-tuple function arguments · 09987de4
      batterseapower authored
      This is done by a 'unarisation' pre-pass at the STG level which
      translates away all (live) binders binding something of unboxed
      tuple type.
      
      This has the following knock-on effects:
        * The subkind hierarchy is vastly simplified (no UbxTupleKind or ArgKind)
        * Various relaxed type checks in typechecker, 'foreign import prim' etc
        * All case binders may be live at the Core level
      09987de4
  6. 02 May, 2012 1 commit
  7. 21 Apr, 2012 1 commit
    • Ian Lynagh's avatar
      Add a quotRemWord2 primop · 5136d64e
      Ian Lynagh authored
      It allows you to do
          (high, low) `quotRem` d
      provided high < d.
      
      Currently only has an inefficient fallback implementation.
      5136d64e
  8. 15 Mar, 2012 1 commit
  9. 02 Mar, 2012 1 commit
  10. 27 Feb, 2012 1 commit
  11. 26 Feb, 2012 1 commit
  12. 24 Feb, 2012 1 commit
  13. 23 Feb, 2012 1 commit
  14. 17 Feb, 2012 1 commit
  15. 14 Feb, 2012 1 commit
  16. 10 Jan, 2012 1 commit
    • dterei's avatar
      Track STG live register information for use in LLVM · 4384e146
      dterei authored
      We now carry around with CmmJump statements a list of
      the STG registers that are live at that jump site.
      This is used by the LLVM backend so it can avoid
      unnesecarily passing around dead registers, improving
      perfromance. This gives us the framework to finally
      fix trac #4308.
      4384e146
  17. 06 Jan, 2012 6 commits
  18. 05 Jan, 2012 1 commit
  19. 03 Jan, 2012 1 commit
  20. 19 Dec, 2011 2 commits
  21. 04 Dec, 2011 1 commit
  22. 29 Nov, 2011 2 commits
    • Simon Marlow's avatar
      Make profiling work with multiple capabilities (+RTS -N) · 50de6034
      Simon Marlow authored
      This means that both time and heap profiling work for parallel
      programs.  Main internal changes:
      
        - CCCS is no longer a global variable; it is now another
          pseudo-register in the StgRegTable struct.  Thus every
          Capability has its own CCCS.
      
        - There is a new built-in CCS called "IDLE", which records ticks for
          Capabilities in the idle state.  If you profile a single-threaded
          program with +RTS -N2, you'll see about 50% of time in "IDLE".
      
        - There is appropriate locking in rts/Profiling.c to protect the
          shared cost-centre-stack data structures.
      
      This patch does enough to get it working, I have cut one big corner:
      the cost-centre-stack data structure is still shared amongst all
      Capabilities, which means that multiple Capabilities will race when
      updating the "allocations" and "entries" fields of a CCS.  Not only
      does this give unpredictable results, but it runs very slowly due to
      cache line bouncing.
      
      It is strongly recommended th...
      50de6034
    • Simon Marlow's avatar
      Get rid of the "safety" field of CmmCall (OldCmm) · cbe24168
      Simon Marlow authored
      This field was doing nothing.  I think it originally appeared in a
      very old incarnation of the new code generator.
      cbe24168
  23. 28 Nov, 2011 1 commit
    • Ian Lynagh's avatar
      Implement a capi calling convention; fixes #2979 · 36f8cabe
      Ian Lynagh authored
      In GHC, this provides an easy way to call a C function via a C wrapper.
      This is important when the function is really defined by CPP.
      
      Requires the new CApiFFI extension.
      
      Not documented yet, as it's still an experimental feature at this stage.
      36f8cabe
  24. 26 Nov, 2011 1 commit
  25. 22 Nov, 2011 6 commits
  26. 05 Nov, 2011 2 commits