summaryrefslogtreecommitdiff
path: root/includes
Commit message (Collapse)AuthorAgeFilesLines
* use RTS_VAR()Simon Marlow2008-04-161-1/+1
|
* treat the global work list as a queue rather than a stackSimon Marlow2008-04-161-0/+1
|
* GC: move static object processinng into thread-local storageSimon Marlow2008-04-161-1/+0
|
* Add +RTS -vg flag for requesting some GC trace messages, outside DEBUGSimon Marlow2008-04-161-0/+1
| | | | | | | DEBUG imposes a significant performance hit in the GC, yet we often want some of the debugging output, so -vg gives us the cheap trace messages without the sanity checking of DEBUG, just like -vs for the scheduler.
* GC: rearrange storage to reduce memory accesses in the inner loopSimon Marlow2008-04-161-6/+15
|
* Add profiling of spinlocksSimon Marlow2008-04-161-0/+4
|
* rename StgSync to SpinLockSimon Marlow2008-04-161-24/+19
|
* Release some of the memory allocated to a stack when it shrinks (#2090)simonmar@microsoft.com2008-02-282-9/+21
| | | | | | When a stack is occupying less than 1/4 of the memory it owns, and is larger than a megablock, we release half of it. Shrinking is O(1), it doesn't need to copy the stack.
* round_to_mblocks: should use StgWord not natSimon Marlow2008-02-201-2/+2
|
* add ROUNDUP_BYTES_TO_WDSsimonmar@microsoft.com2008-02-151-1/+3
|
* memInventory: optionally dump the memory inventorysimonmar@microsoft.com2008-01-301-1/+1
| | | | in addition to checking for leaks
* recordMutableGen_GC: we must call the spinlocked version of allocBlock()Simon Marlow2008-01-111-1/+18
|
* calculate wastage due to unused memory at the end of each blocksimonmar@microsoft.com2007-12-141-1/+3
|
* remove declarations for variables that no longer existsimonmar@microsoft.com2007-12-131-3/+0
|
* improvements to PAPI supportsimonmar@microsoft.com2007-11-201-2/+7
| | | | | | | - major (multithreaded) GC is measured separately from minor GC - events to measure can now be specified on the command line, e.g prog +RTS -a+PAPI_TOT_CYC
* Initial parallel GC supportSimon Marlow2007-10-311-1/+2
| | | | | | | | | eg. use +RTS -g2 -RTS for 2 threads. Only major GCs are parallelised, minor GCs are still sequential. Don't use more threads than you have CPUs. It works most of the time, although you won't see much speedup yet. Tuning and more work on stability still required.
* Refactoring of the GC in preparation for parallel GCSimon Marlow2007-10-312-40/+60
| | | | | | | | | | | | This patch localises the state of the GC into a gc_thread structure, and reorganises the inner loop of the GC to scavenge one block at a time from global work lists in each "step". The gc_thread structure has a "workspace" for each step, in which it collects evacuated objects until it has a full block to push out to the step's global list. Details of the algorithm will be on the wiki in due course. At the moment, THREADED_RTS does not compile, but the single-threaded GC works (and is 10-20% slower than before).
* move GetRoots() to GC.cSimon Marlow2007-10-301-2/+2
|
* Fix conversions between Double/Float and simple-integerIan Lynagh2008-06-142-1/+3
|
* Fix unreg buildSimon Marlow2008-06-041-0/+1
|
* FIX #1861: floating-point constants for infinity and NaN in via-CSimon Marlow2008-05-121-0/+3
|
* Fix the ticky ticky buildIan Lynagh2008-04-251-0/+4
| | | | Include TickyCounters.h in Stg.h if we are doing Ticky Ticky.
* Remove some duplicate extern declsIan Lynagh2008-04-161-3/+0
|
* Add some more generic (en|de)code(Double|Float) codeIan Lynagh2008-04-173-0/+5
|
* add pointers to the wiki for the rules about C prototypesSimon Marlow2008-04-091-0/+2
|
* FIX BUILD (bootstrap with -fvia-C): prototype fixesSimon Marlow2008-04-091-6/+12
|
* FIX BUILD on non-x86: add missing prototypesSimon Marlow2008-04-071-0/+2
|
* update a commentSimon Marlow2008-04-071-12/+2
|
* Do not #include external header files when compiling via CSimon Marlow2008-04-0210-179/+256
| | | | | | | | | | | | | | | | | | | | | | | 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.
* Fix warnings in main/ConstantsIan Lynagh2008-03-251-4/+6
|
* Fix warnings in the RTSIan Lynagh2008-03-252-4/+10
| | | | For some reason this causes build failures for me in my 32-bit chroot,
* Fix setting argv[0] in shell-utils.c on WindowsIan Lynagh2008-01-231-2/+3
|
* Escape arguments for Windows in shell-tools.cIan Lynagh2008-01-231-1/+6
|
* Refactor cross-plattform process spawning from ghc-inplace into shell-tools.cClemens Fruhwirth2008-01-101-0/+133
|
* Fix warnings with newer gcc versions (I hope)Simon Marlow2008-01-031-3/+3
|
* Move file locking into the RTS, fixing #629, #1109Simon Marlow2007-11-201-0/+12
| | | | | | | | | | | | | | | File locking (of the Haskell 98 variety) was previously done using a static table with linear search, which had two problems: the array had a fixed size and was sometimes too small (#1109), and performance of lockFile/unlockFile was suboptimal due to the linear search. Also the algorithm failed to count readers as required by Haskell 98 (#629). Now it's done using a hash table (provided by the RTS). Furthermore I avoided the extra fstat() for every open file by passing the dev_t and ino_t into lockFile. This and the improvements to the locking algorithm result in a healthy 20% or so performance increase for opening/closing files (see openFile008 test).
* second attempt to fix C compiler warnings with -fhpcSimon Marlow2007-10-191-4/+4
| | | | | | | | | | | | | The hs_hpc_module() prototype in RtsExternal.h didn't match its usage: we were passing StgWord-sized parameters but the prototype used C ints. I think it accidentally worked because we only ever passed constants that got promoted. The constants unfortunately were sometimes negative, which caused the C compiler to emit warnings. I suspect PprC.pprHexVal may be wrong to emit negative constants in the generated C, but I'm not completely sure. Anyway, it's easy to fix this in CgHpc, which is what I've done.
* Change some ints to unsigned intsSimon Marlow2007-10-181-4/+4
| | | | Fixes some gratuitous warnings when compiling via C with -fhpc
* recordMutable: test for gen>0 before calling recordMutableCapSimon Marlow2007-10-171-4/+8
| | | | | | | For some reason the C-- version of recordMutable wasn't verifying that the object was in an old generation before attempting to add it to the mutable list, and this broke maessen_hashtab. This version of recordMutable is only used in unsafeThaw#.
* Add allocateInGen() for allocating in a specific generation, and cleanupsSimon Marlow2007-10-121-4/+8
| | | | | | | | Now allocate() is a synonym for allocateInGen(). I also made various cleanups: there is now less special-case code for supporting -G1 (two-space collection), and -G1 now works with -threaded.
* Add a proper write barrier for MVarsSimon Marlow2007-10-113-29/+33
| | | | | | | | | | | | 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.
* FIX BUILD (when compiling base via C): declare n_capabilitiesSimon Marlow2007-10-101-0/+1
|
* GHCi: use non-updatable thunks for breakpointsSimon Marlow2007-10-102-26/+29
| | | | | | | | | The extra safe points introduced for breakpoints were previously compiled as normal updatable thunks, but they are guaranteed single-entry, so we can use non-updatable thunks here. This restores the tail-call property where it was lost in some cases (although stack squeezing probably often recovered it), and should improve performance.
* FIX BUILD addDLL returns const char*jochemberndsen@dse.nl2007-09-271-1/+1
| | | | | addDLL returns const char*, not just a char*. Fix compiler warning
* export stopTimer(), we need this in the unix packageSimon Marlow2007-09-121-0/+1
|
* FIX #1466 (partly), which was causing concprog001(ghci) to failSimon Marlow2007-09-111-0/+7
| | | | | | | | | | An AP_STACK now ensures that there is at least AP_STACK_SPLIM words of stack headroom available after unpacking the payload. Continuations that require more than AP_STACK_SPLIM words of stack must do their own stack checks instead of aggregating their stack usage into the parent frame. I have made this change for the interpreter, but not for compiled code yet - we should do this in the glorious rewrite of the code generator.
* Windows: remove the {Enter,Leave}CricialSection wrappersSimon Marlow2007-08-291-4/+4
| | | | | | The C-- parser was missing the "stdcall" calling convention for foreign calls, but once added we can call {Enter,Leave}CricialSection directly.
* Use INSTALL_HEADERS in includes/ rather than abusing INSTALL_DATASIan Lynagh2007-08-281-7/+4
|
* Fix the IF_DEBUG(interpreter in StgCRun.cIan Lynagh2007-08-251-0/+4
|
* Fix the threaded RTS on WindowsIan Lynagh2007-08-161-2/+5
| | | | | When calling EnterCriticalSection and LeaveCriticalSection from C-- code, we go via wrappers which use ccall (rather than stdcall).