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 .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer.
Last successful update .
- 31 Jul, 2012 1 commit
-
-
Simon Marlow authored
-
- 27 Apr, 2012 1 commit
-
-
Ian Lynagh authored
-
- 26 Apr, 2012 3 commits
-
-
Ian Lynagh authored
It turns out that we can use %zu and %llu on Win32, provided we include PosixSource everywhere we want to use them.
-
Ian Lynagh authored
On Win32 it's not recognised, so we unfortunately can't use it unconditionally.
-
Ian Lynagh authored
Mostly this meant getting pointer<->int conversions to use the right sizes. lnat is now size_t, rather than unsigned long, as that seems a better match for how it's used.
-
- 24 Apr, 2012 1 commit
-
-
Ian Lynagh authored
-
- 19 Mar, 2012 1 commit
-
-
Ian Lynagh authored
It was assuming that long's are word-sized, which is not the case on Win64.
-
- 18 Mar, 2012 1 commit
-
-
Ian Lynagh authored
-
- 15 Jan, 2012 1 commit
-
-
Ian Lynagh authored
I don't think it was causing any problems, but TimeToUS(x+y) would have evaluated to x + (y / 1000)
-
- 25 Nov, 2011 1 commit
-
-
Simon Marlow authored
Terminology cleanup: the type "Ticks" has been renamed "Time", which is an StgWord64 in units of TIME_RESOLUTION (currently nanoseconds). The terminology "tick" is now used consistently to mean the interval between timer signals. The ticker now always ticks in realtime (actually CLOCK_MONOTONIC if we have it). Before it used CPU time in the non-threaded RTS and realtime in the threaded RTS, but I've discovered that the CPU timer has terrible resolution (at least on Linux) and isn't much use for profiling. So now we always use realtime. This should also fix The default tick interval is now 10ms, except when profiling where we drop it to 1ms. This gives more accurate profiles without affecting runtime too much (<1%). Lots of cleanups - the resolution of Time is now in one place only (Rts.h) rather than having calculations that depend on the resolution scattered all over the RTS. I hope I found them all.
-
- 16 Nov, 2011 1 commit
-
-
Simon Marlow authored
Rather than have main() be statically compiled as part of the RTS, we now generate it into the tiny C file that we compile when linking a binary. The main motivation is that we want to pass the settings for the -rtsotps and -with-rtsopts flags into the RTS, rather than relying on fragile linking semantics to override the defaults, which don't work with DLLs on Windows (#5373). In order to do this, we need to extend the API for initialising the RTS, so now we have: void hs_init_ghc (int *argc, char **argv[], // program arguments RtsConfig rts_config); // RTS configuration hs_init_ghc() can optionally be used instead of hs_init(), and allows passing in configuration options for the RTS. RtsConfig is a struct, which currently has two fields: typedef struct { RtsOptsEnabledEnum rts_opts_enabled; const char *rts_opts; } RtsConfig; but might have more in the future. There is a default value for the struct, defaultRtsConfig, the idea being that you start with this and override individual fields as necessary. In fact, main() was in a separate static library, libHSrtsmain.a. That's now gone.
-
- 25 May, 2011 1 commit
-
-
Simon Marlow authored
setupRtsFlags(), rather than sharing the memory. Previously if the caller of hs_init() passed in dynamically-allocated memory and then freed it, random crashes could happen later (#5177).
-
- 14 May, 2011 1 commit
-
-
batterseapower authored
-
- 23 Nov, 2010 1 commit
-
-
Ian Lynagh authored
-
- 17 Jun, 2010 1 commit
-
-
Simon Marlow authored
-
- 29 Mar, 2010 1 commit
-
-
Simon Marlow authored
This replaces the global blackhole_queue with a clever scheme that enables us to queue up blocked threads on the closure that they are blocked on, while still avoiding atomic instructions in the common case. Advantages: - gets rid of a locked global data structure and some tricky GC code (replacing it with some per-thread data structures and different tricky GC code :) - wakeups are more prompt: parallel/concurrent performance should benefit. I haven't seen anything dramatic in the parallel benchmarks so far, but a couple of threading benchmarks do improve a bit. - waking up a thread blocked on a blackhole is now O(1) (e.g. if it is the target of throwTo). - less sharing and better separation of Capabilities: communication is done with messages, the data structures are strictly owned by a Capability and cannot be modified except by sending messages. - this change will utlimately enable us to do more intelligent scheduling when threads block on each other. This is what started off the whole thing, but it isn't done yet (#3838). I'll be documenting all this on the wiki in due course.
-
- 27 Mar, 2010 1 commit
-
-
Ian Lynagh authored
mingw doesn't understand %llu/%lld - it treats them as 32-bit rather than 64-bit. We use %I64u/%I64d instead.
-
- 12 Sep, 2009 1 commit
-
-
Simon Marlow authored
-
- 09 Sep, 2009 1 commit
-
-
Simon Marlow authored
-
- 29 Aug, 2009 2 commits
-
-
Simon Marlow authored
-
Simon Marlow authored
-
- 25 Aug, 2009 1 commit
-
-
Simon Marlow authored
I've updated the wiki page about the RTS headers http://hackage.haskell.org/trac/ghc/wiki/Commentary/SourceTree/Includes to reflect the new layout and explain some of the rationale. All the header files now point to this page.
-
- 03 Aug, 2009 2 commits
-
-
Simon Marlow authored
-
Simon Marlow authored
-
- 02 Aug, 2009 1 commit
-
-
Simon Marlow authored
The first phase of this tidyup is focussed on the header files, and in particular making sure we are exposinng publicly exactly what we need to, and no more. - Rts.h now includes everything that the RTS exposes publicly, rather than a random subset of it. - Most of the public header files have moved into subdirectories, and many of them have been renamed. But clients should not need to include any of the other headers directly, just #include the main public headers: Rts.h, HsFFI.h, RtsAPI.h. - All the headers needed for via-C compilation have moved into the stg subdirectory, which is self-contained. Most of the headers for the rest of the RTS APIs have moved into the rts subdirectory. - I left MachDeps.h where it is, because it is so widely used in Haskell code. - I left a deprecated stub for RtsFlags.h in place. The flag structures are now exposed by Rts.h. - Various internal APIs are no longer exposed by public header files. - Various bits of dead code and declarations have been removed - More gcc warnings are turned on, and the RTS code is more warning-clean. - More source files #include "PosixSource.h", and hence only use standard POSIX (1003.1c-1995) interfaces. There is a lot more tidying up still to do, this is just the first pass. I also intend to standardise the names for external RTS APIs (e.g use the rts_ prefix consistently), and declare the internal APIs as hidden for shared libraries.
-
- 28 Jun, 2009 1 commit
-
-
Simon Marlow authored
-
- 29 Jul, 2009 1 commit
-
-
Simon Marlow authored
For inexpensive assertions
-
- 23 Jul, 2009 1 commit
-
-
Simon Marlow authored
redefinition warnings for all files that are including includes/Rts.h. Contributed by: Krister Walfridsson <krister.walfridsson@gmail.com>
-
- 13 Jun, 2009 2 commits
-
-
Duncan Coutts authored
Nothing from gmp is used in the rts anymore.
-
Duncan Coutts authored
-
- 02 Jun, 2009 2 commits
-
-
Ian Lynagh authored
-
Simon Marlow authored
-
- 16 Apr, 2008 1 commit
-
-
simonmarhaskell@gmail.com authored
-
- 15 Feb, 2008 1 commit
-
-
simonmar@microsoft.com authored
-
- 14 Jun, 2008 1 commit
-
-
Ian Lynagh authored
-
- 17 Apr, 2008 1 commit
-
-
Ian Lynagh authored
-
- 02 Apr, 2008 1 commit
-
-
Simon Marlow authored
This has several advantages: - -fvia-C is consistent with -fasm with respect to FFI declarations: both bind to the ABI, not the API. - foreign calls can now be inlined freely across module boundaries, since a header file is not required when compiling the call. - bootstrapping via C will be more reliable, because this difference in behavour between the two backends has been removed. There is one disadvantage: - we get no checking by the C compiler that the FFI declaration is correct. So now, the c-includes field in a .cabal file is always ignored by GHC, as are header files specified in an FFI declaration. This was previously the case only for -fasm compilations, now it is also the case for -fvia-C too.
-
- 25 Aug, 2007 1 commit
-
-
Ian Lynagh authored
-
- 27 Jul, 2007 1 commit
-
-
Simon Marlow authored
This patch implements pointer tagging as per our ICFP'07 paper "Faster laziness using dynamic pointer tagging". It improves performance by 10-15% for most workloads, including GHC itself. The original patches were by Alexey Rodriguez Yakushev <mrchebas@gmail.com>, with additions and improvements by me. I've re-recorded the development as a single patch. The basic idea is this: we use the low 2 bits of a pointer to a heap object (3 bits on a 64-bit architecture) to encode some information about the object pointed to. For a constructor, we encode the "tag" of the constructor (e.g. True vs. False), for a function closure its arity. This enables some decisions to be made without dereferencing the pointer, which speeds up some common operations. In particular it enables us to avoid costly indirect jumps in many cases. More information in the commentary: http://hackage.haskell.org/trac/ghc/wiki/Commentary/Rts/HaskellExecution/PointerTagging
-
- 06 Jul, 2007 1 commit
-
-
rl@cse.unsw.edu.au authored
On OS X, we have to #include <GMP/gmp.h> if we are using GMP.framework. Before the recent GMP changes, gcc (incorrectly) used the gmp.h supplied by ghc but that is gone now.
-