1. 12 Feb, 2013 1 commit
  2. 01 Feb, 2013 1 commit
  3. 29 Jan, 2013 1 commit
  4. 23 Jan, 2013 1 commit
  5. 11 Dec, 2012 1 commit
  6. 23 Nov, 2012 1 commit
  7. 16 Nov, 2012 1 commit
    • Simon Marlow's avatar
      Add a write barrier for TVAR closures · 6d784c43
      Simon Marlow authored
      This improves GC performance when there are a lot of TVars in the
      heap.  For instance, a TChan with a lot of elements causes a massive
      GC drag without this patch.
      There's more to do - several other STM closure types don't have write
      barriers, so GC performance when there are a lot of threads blocked on
      STM isn't great.  But fixing the problem for TVar is a good start.
  8. 26 Oct, 2012 1 commit
  9. 15 Oct, 2012 1 commit
    • Duncan Coutts's avatar
      Add a new traceMarker# primop for use in profiling output · a609027d
      Duncan Coutts authored
      In time-based profiling visualisations (e.g. heap profiles and ThreadScope)
      it would be useful to be able to mark particular points in the execution and
      have those points in time marked in the visualisation.
      The traceMarker# primop currently emits an event into the eventlog. In
      principle it could be extended to do something in the heap profiling too.
  10. 13 Oct, 2012 2 commits
  11. 08 Oct, 2012 1 commit
    • 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.
  12. 14 Sep, 2012 1 commit
  13. 07 Sep, 2012 1 commit
    • Simon Marlow's avatar
      Deprecate lnat, and use StgWord instead · 41737f12
      Simon Marlow authored
      lnat was originally "long unsigned int" but we were using it when we
      wanted a 64-bit type on a 64-bit machine.  This broke on Windows x64,
      where long == int == 32 bits.  Using types of unspecified size is bad,
      but what we really wanted was a type with N bits on an N-bit machine.
      StgWord is exactly that.
      lnat was mentioned in some APIs that clients might be using
      (e.g. StackOverflowHook()), so we leave it defined but with a comment
      to say that it's deprecated.
  14. 21 Aug, 2012 2 commits
  15. 20 Aug, 2012 1 commit
  16. 13 Aug, 2012 1 commit
    • Erik de Castro Lopo's avatar
      Fix GHCi segfault during startup on linux-powerpc (#2972). · 3e6c9308
      Erik de Castro Lopo authored
      Slightly modified version of a patch from Ben Collins <bcollins@ubuntu.com>
      who did the final debugging that showed the segfault was being caused the
      memory protection mechanism.
      Due to the requirement of "jump islands" to handle 24 bit relative jump
      offsets, GHCi on PowerPC did not use mmap to load object files like the
      other architectures. Instead, it allocated memory using malloc and fread
      to load the object code. However there is a quirk in the GNU libc malloc
      implementation. For memory regions over certain size (dynamic and
      configurable), malloc will use mmap to obtain the required memory instead
      of sbrk and malloc's call to mmap sets the memory readable and writable,
      but not executable. That means when GHCi loads code into a memory region
      that was mmapped instead of malloc-ed and tries to execute it we get a
      This solution drops the malloc/fread object loading in favour of using
      mmap and then puts the jump island for each object code module at the
      end of the mmaped region for that object.
      This patch may also be a solution on other ELF based powerpc systems
      but does not work on darwin-powerpc.
  17. 10 Aug, 2012 1 commit
  18. 31 Jul, 2012 1 commit
  19. 19 Jun, 2012 1 commit
  20. 17 Jun, 2012 1 commit
  21. 16 Jun, 2012 1 commit
  22. 09 Jun, 2012 1 commit
  23. 09 May, 2012 2 commits
  24. 08 May, 2012 2 commits
  25. 07 May, 2012 3 commits
  26. 06 May, 2012 2 commits
  27. 03 May, 2012 1 commit
  28. 02 May, 2012 3 commits
    • Ian Lynagh's avatar
      More Win64 ghci fixes · 3a8c7c8e
      Ian Lynagh authored
    • Ian Lynagh's avatar
      Win64 Linker improvements · 18b4ad9a
      Ian Lynagh authored
      We now detect if we are given a value that is out of range for a
      32bit relocation, and fail with an error.
      Added a load more symbols to rtsSyms.
    • Ian Lynagh's avatar
      Add 'free' to the list of rtsSyms on Win64 · afbaa112
      Ian Lynagh authored
      Without this, we ended up using
          (gdb) info symbol 0x7ff756a10ac
          msvcrt!free in section .text of C:\Windows\system32\msvcrt.dll
      for free, rather than
          (gdb) info symbol 0x2584128
          free in section .text of C:\m64\ghci2\q/../inplace/bin/ghc-stage2.exe
      but we were trying to put the address into a 32bit relocation.
  29. 01 May, 2012 3 commits