- 07 Nov, 2008 1 commit
-
-
Simon Marlow authored
-
- 06 Nov, 2008 2 commits
-
-
Simon Marlow authored
lost in patch "Run sparks in batches"
-
Simon Marlow authored
Signficantly reduces the overhead for par, which means that we can make use of paralellism at a much finer granularity.
-
- 10 Oct, 2008 1 commit
-
-
Simon Marlow authored
-
- 08 Oct, 2008 1 commit
-
-
Simon Marlow authored
This should improve scaling when using atomicModifyIORef
-
- 19 Sep, 2008 1 commit
-
-
Simon Marlow authored
Fixes a long-standing bug that could in some cases cause sub-optimal scheduling behaviour.
-
- 12 Aug, 2008 1 commit
-
-
Ross Paterson authored
-
- 30 Jul, 2008 1 commit
-
-
Ian Lynagh authored
-
- 28 Jul, 2008 1 commit
-
-
Simon Marlow authored
When returning an unboxed tuple with a single non-void component, we now use the same calling convention as for returning a value of the same type as that component. This means that the return convention for IO now doesn't vary depending on the platform, which make some parts of the RTS simpler, and fixes a problem I was having with making the FFI work in unregisterised GHCi (the byte-code compiler makes some assumptions about calling conventions to keep things simple).
-
- 10 Jul, 2008 2 commits
-
-
Simon Marlow authored
-
Simon Marlow authored
fixes crash with -threaded -debug for me
-
- 09 Jul, 2008 1 commit
-
-
Simon Marlow authored
This showed up as a crash in conc032 for me.
-
- 17 Jun, 2008 1 commit
-
-
Simon Marlow authored
-
- 03 Jun, 2008 1 commit
-
-
Simon Marlow authored
-
- 16 Apr, 2008 3 commits
-
-
simonmarhaskell@gmail.com authored
-
simonmarhaskell@gmail.com authored
-
simonmarhaskell@gmail.com authored
-
- 14 Jun, 2008 1 commit
-
-
Ian Lynagh authored
-
- 26 Apr, 2008 1 commit
-
-
Ian Lynagh authored
In delayzh_fast we act as if tickInterval was 50, not 0.
-
- 24 Apr, 2008 1 commit
-
-
Ian Lynagh authored
Patch from Mike Gunter.
-
- 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.
-
- 01 Jan, 2008 1 commit
-
-
Clemens Fruhwirth authored
-
- 04 Dec, 2007 1 commit
-
-
Simon Marlow authored
-
- 18 Oct, 2007 1 commit
-
-
Simon Marlow authored
-
- 11 Oct, 2007 1 commit
-
-
Simon Marlow authored
Previously MVars were always on the mutable list of the old generation, which meant every MVar was visited during every minor GC. With lots of MVars hanging around, this gets expensive. We addressed this problem for MUT_VARs (aka IORefs) a while ago, the solution is to use a traditional GC write-barrier when the object is modified. This patch does the same thing for MVars. TVars are still done the old way, they could probably benefit from the same treatment too.
-
- 05 Sep, 2007 2 commits
-
-
Simon Marlow authored
-
chak@cse.unsw.edu.au. authored
-
- 04 Sep, 2007 1 commit
-
-
Simon Marlow authored
This applies to EnterCriticalSection and LeaveCriticalSection in the RTS
-
- 29 Aug, 2007 1 commit
-
-
Simon Marlow authored
The C-- parser was missing the "stdcall" calling convention for foreign calls, but once added we can call {Enter,Leave}CricialSection directly.
-
- 20 Aug, 2007 1 commit
-
-
nr@eecs.harvard.edu authored
* The correct definition of C-- requires that a procedure not 'fall off the end'. The 'never returns' annotation tells us if a (foreign) call is not going to return. Validated!
-
- 10 Aug, 2007 1 commit
-
-
Clemens Fruhwirth authored
Properly guard imports because they have to be precise on Windows and Darwin sets __PIC__ automatically
-
- 06 Aug, 2007 1 commit
-
-
Clemens Fruhwirth 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
-
- 03 Jul, 2007 1 commit
-
-
Simon Marlow authored
-
- 27 Jun, 2007 1 commit
-
-
Michael D. Adams authored
-
- 26 Jun, 2007 1 commit
-
-
Simon Marlow authored
We needed to turn some inline C functions and C macros into either real C functions or C-- macros.
-
- 25 May, 2007 1 commit
-
-
Simon Marlow authored
-
- 03 May, 2007 1 commit
-
-
Simon Marlow authored
This means we can avoid some StablePtrs, and also catch cases where the AP_STACK has been evaluated (this can happen with :history, see the hist001 test).
-
- 17 Apr, 2007 1 commit
-
-
Simon Marlow authored
This is the result of Bernie Pope's internship work at MSR Cambridge, with some subsequent improvements by me. The main plan was to (a) Reduce the overhead for breakpoints, so we could enable the feature by default without incurrent a significant penalty (b) Scatter more breakpoint sites throughout the code Currently we can set a breakpoint on almost any subexpression, and the overhead is around 1.5x slower than normal GHCi. I hope to be able to get this down further and/or allow breakpoints to be turned off. This patch also fixes up :print following the recent changes to constructor info tables. (most of the :print tests now pass) We now support single-stepping, which just enables all breakpoints. :step <expr> executes <expr> with single-stepping turned on :step single-steps from the current breakpoint The mechanism is quite different to the previous implementation. We share code with the HPC (haskell program coverage) implementation now. The coverage pass annotates source code with "tick" locations which are tracked by the coverage tool. In GHCi, each "tick" becomes a potential breakpoint location. Previously breakpoints were compiled into code that magically invoked a nested instance of GHCi. Now, a breakpoint causes the current thread to block and control is returned to GHCi. See the wiki page for more details and the current ToDo list: http://hackage.haskell.org/trac/ghc/wiki/NewGhciDebugger
-