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. 14 Oct, 2012 1 commit
    • ian@well-typed.com's avatar
      Don't set dynlib install names when building · b3dacbdb
      ian@well-typed.com authored
      When building things to run in the build tree, we want the install name
      to be the location in the build tree.
      
      Bindists may be installed somewhere other than the configured install
      location, so we weren't even necessarily setting it to the right value.
      b3dacbdb
  2. 13 Oct, 2012 2 commits
  3. 09 Oct, 2012 1 commit
  4. 08 Oct, 2012 2 commits
    • Simon Marlow's avatar
      fix a warning · 6e95114e
      Simon Marlow authored
      6e95114e
    • 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
  5. 03 Oct, 2012 1 commit
    • ian@well-typed.com's avatar
      Build the dynamic way by default on Linux/amd64 · 898cb090
      ian@well-typed.com authored
      This required various build system changes to get the build to go
      through.
      
      In the inplace shell wrappers, we set LD_LIBRARY_PATH to allow programs
      to find their libraries. In the future, we might change the inplace tree
      to be the same shape as an installed tree instead. However, this would
      mean changing the way we do installation, as currently we use cabal's
      installation methods to install the libraries, but that only works if
      the libraries are under libraries/foo/dist-install/build/..., rather
      than in inplace/lib/...
      898cb090
  6. 24 Sep, 2012 2 commits
    • Simon Marlow's avatar
      Another overhaul of the recent_activity / idle GC handling (#5991) · 0b79d5cd
      Simon Marlow authored
      Improvements:
      
       - we now turn off the timer signal in the non-threaded RTS after
         idleGCDelay.  This should make the xmonad users on #5991 happy.
      
       - we now turn off the timer signal after idleGCDelay even if the
         idle GC is disabled with +RTS -I0.
      
       - we now do *not* turn off the timer when profiling.
      
       - more comments to explain the meaning of the various ACTIVITY_*
         values
      0b79d5cd
    • Simon Marlow's avatar
      Revert "Disable the timer signal while blocked in select() (#5991)" · 673b6f50
      Simon Marlow authored
      This reverts commit dd24d6bc.
      
      This attempt to fix the problem was misguided: the program might be
      stuck in a foreign call rather than awaitEvent(), and then the timer
      signal will never get disabled.  The only way to turn off the timer
      signal in this case is in the timer interrupt handler itself.
      673b6f50
  7. 21 Sep, 2012 6 commits
  8. 18 Sep, 2012 1 commit
  9. 14 Sep, 2012 1 commit
  10. 12 Sep, 2012 1 commit
  11. 07 Sep, 2012 6 commits
  12. 31 Aug, 2012 1 commit
  13. 25 Aug, 2012 2 commits
    • ian@well-typed.com's avatar
      More CPP macros -> inline functions · 0ab537c5
      ian@well-typed.com authored
      All the wibble seem to have cancelled out, and (non-debug) object sizes
      are back to where they started.
      
      I'm not 100% sure that the types are optimal, but at least now the
      functions have types and we can fix them if necessary.
      0ab537c5
    • ian@well-typed.com's avatar
      Make a function for get_itbl, rather than using a CPP macro · 8413d838
      ian@well-typed.com authored
      This has several advantages:
      * It can be called from gdb
      * There is more type information for the user, and type checking
        for the compiler
      * Less opportunity for things to go wrong, e.g. due to missing
        parentheses or repeated execution
      
      The sizes of the non-debug .o files hasn't changed (other than
      Inlines.o), so I'm pretty sure the compiled code is identical.
      8413d838
  14. 23 Aug, 2012 1 commit
  15. 21 Aug, 2012 8 commits
  16. 20 Aug, 2012 2 commits
  17. 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
      segfault.
      
      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.
      3e6c9308
  18. 10 Aug, 2012 1 commit