summaryrefslogtreecommitdiff
path: root/ghc/rts
Commit message (Collapse)AuthorAgeFilesLines
* Add SA_RESTART flag to the timer signal handler.Simon Marlow2006-04-061-0/+11
| | | | | This seems to be necessary to prevent readline being confused by our SIGALRM handler.
* Turn the "too many hs_exit()s" fatal error into a warningSimon Marlow2006-04-051-1/+2
|
* fix profiling on Win32Simon Marlow2006-03-302-4/+11
| | | | | The recent patch to free memory in hs_exit() on Win32 unfortunately broke profiling, because it freed the memory slightly too early.
* Deal with non-executable memory on Darwin (only an issue on Darwin/x86 so far)wolfgang.thaller@gmx.net2006-03-231-2/+2
|
* add forkOnzh_fast symbolSimon Marlow2006-03-281-0/+1
|
* Add a new primitive forkOn#, for forking a thread on a specific CapabilitySimon Marlow2006-03-273-23/+95
| | | | | | | | | | | | | | | | | | | | This gives some control over affinity, while we figure out the best way to automatically schedule threads to make best use of the available parallelism. In addition to the primitive, there is also: GHC.Conc.forkOnIO :: Int -> IO () -> IO ThreadId where 'forkOnIO i m' creates a thread on Capability (i `rem` N), where N is the number of available Capabilities set by +RTS -N. Threads forked by forkOnIO do not automatically migrate when there are free Capabilities, like normal threads do. Still, if you're using forkOnIO exclusively, it's a good idea to do +RTS -qm to disable work pushing anyway (work pushing takes too much time when the run queues are large, this is something we need to fix).
* elimiante a couple of warningsSimon Marlow2006-03-271-1/+1
|
* fix a warningSimon Marlow2006-03-241-1/+1
|
* Add some more flexibility to the multiproc schedulerSimon Marlow2006-03-247-25/+151
| | | | | | | | | | | | | There are two new options in the -threaded RTS: -qm Don't automatically migrate threads between CPUs -qw Migrate a thread to the current CPU when it is woken up previously both of these were effectively off, i.e. threads were migrated between CPUs willy-milly, and threads were always migrated to the current CPU when woken up. This is the first step in tweaking the scheduling for more effective work balancing, there will no doubt be more to come.
* Fix Darwin/x86 stack alignmentwolfgang.thaller@gmx.net2006-03-251-11/+4
| | | | | | | ... again. For now, I've added a TODO comment, but sooner or later this will have to be made gcc-version-independent.
* mark recordMutableCap() with [R1] to avoid saving all regs across itSimon Marlow2006-03-241-1/+1
|
* on second thoughts, revert the ppc/darwin part of the previous patchSimon Marlow2006-03-221-2/+1
|
* fix for gcc 4.1.xSimon Marlow2006-03-221-6/+10
| | | | | | | We need to use GNUC3_ATTRIBUTE(used) to force gcc to keep the definition of StgRunIsImplementedInAssembler() around. In some cases we had already made this function external rather than static to get around the problem, but GNUC3_ATTRIBUTE(used) is a better fix.
* support for STM objects in the retainer profilerSimon Marlow2006-03-211-0/+80
| | | | addresses #492
* small changes to fix retainer profiling on HEADSimon Marlow2006-03-211-2/+3
|
* tiny cleanupSimon Marlow2006-03-211-1/+1
|
* oops, remove temporary testing codeSimon Marlow2006-03-211-2/+0
|
* stopTicker(): wait for the timer thread to exitSimon Marlow2006-03-201-8/+30
|
* fix Win32 buildSimon Marlow2006-03-201-1/+1
|
* fix build for certain picky versions of gccSimon Marlow2006-03-171-7/+7
|
* forkProcess(): watch out for ThreadRelocatedSimon Marlow2006-03-171-5/+9
|
* remove accidental extra in previous patchSimon Marlow2006-03-161-1/+1
|
* fix a warningSimon Marlow2006-03-161-1/+1
|
* fix up Win32 buildSimon Marlow2006-03-162-2/+2
|
* fix non-threaded waySimon Marlow2006-03-161-1/+7
|
* Free all memory when shutting down. XXX not implemented for Posix.lennart.augustsson@credit-suisse.com2006-03-023-5/+28
|
* Improvements to forkProcess()Simon Marlow2006-03-161-27/+44
| | | | fixes failures in yesterday's testsuite run
* discardTask(): reset task->tso to avoid confusion laterSimon Marlow2006-03-161-4/+9
|
* Improvements to shutting down of the runtimeSimon Marlow2006-03-156-96/+168
| | | | | | Yet another attempt at shutdown & interruption. This one appears to work better; ^C is more responsive in multi threaded / SMP, and I fixed one case where the runtime wasn't responding to ^C at all.
* improve panic messages a bit, with the GHC version and platformSimon Marlow2006-03-142-1/+7
|
* small improvements to the debug printerSimon Marlow2006-03-141-5/+8
|
* Make it a fatal error to try to enter a PAPSimon Marlow2006-03-141-0/+3
| | | | | | | This is just an assertion, in effect: we should never enter a PAP, but for convenience we previously attached the PAP apply code to the PAP info table. The problem with this was that it makes it harder to track down bugs that result in entering a PAP...
* fix bug in previous patch to this fileSimon Marlow2006-03-131-9/+10
|
* add another SMP assertionSimon Marlow2006-03-131-0/+2
|
* fix a rather subtle SMP bug in anyWorkForMe()Simon Marlow2006-03-131-12/+16
|
* Enable shortcutting of stack squeezingSimon Marlow2006-03-101-2/+2
| | | | Not sure why it was disabled, probably by accident.
* extra sanity checking: call checkTSO() in resumeThread()Simon Marlow2006-03-101-0/+2
|
* Give WHITEHOLE the BLACKHOLE closure type, instead of INVALID_OBJECTSimon Marlow2006-03-101-1/+5
| | | | | Just to keep sanity checking happy, and so we don't need a completely new closure type.
* fix one #ifdef SMP that didn't get turned into #ifdef THREADED_RTSSimon Marlow2006-03-071-1/+1
|
* Mach-O Linker: handle multiple import sectionswolfgang.thaller@gmx.net2006-03-061-26/+22
| | | | | In the rare event that a .o file contains more than one flavour of a [non]lazy pointers sections, resolve all of them, not just one.
* Darwin/x86: Support __IMPORT segments in the Linkerwolfgang.thaller@gmx.net2006-02-091-4/+35
|
* takeMVar/putMVar were missing some write barriers when modifying a TSOSimon Marlow2006-02-282-6/+10
| | | | | | | | | This relates to the recent introduction of clean/dirty TSOs, and the consqeuent write barriers required. We were missing some write barriers in the takeMVar/putMVar family of primops, when performing the take/put directly on another TSO. Fixes #705, and probably some test failures.
* A better x86_64 register mapping, with more argument registers.Simon Marlow2006-02-281-2/+2
| | | | | | | Now that we can handle using C argument registers as global registers, extend the x86_64 register mapping. We now have 5 integer argument registers, 4 float, and 2 double (all caller-saves). This results in a reasonable speedup on x86_64.
* pass arguments to unknown function calls in registersSimon Marlow2006-02-285-56/+39
| | | | | | | | | | | | | | | We now have more stg_ap entry points: stg_ap_*_fast, which take arguments in registers according to the platform calling convention. This is faster if the function being called is evaluated and has the right arity, which is the common case (see the eval/apply paper for measurements). We still need the stg_ap_*_info entry points for stack-based application, such as an overflows when a function is applied to too many argumnets. The stg_ap_*_fast functions actually just check for an evaluated function, and if they don't find one, push the args on the stack and invoke stg_ap_*_info. (this might be slightly slower in some cases, but not the common case).
* fix live register annotations on foreign callsSimon Marlow2006-02-281-40/+43
| | | | fix one incorrect case, and made several more accurate
* Add floating-point symbols to the listsimonpj@microsoft.com2006-02-281-0/+13
|
* The initStablePtrTable should be called before ACQUIRE_LOCK(&stable_mutex)kr.angelov@gmail.com2006-02-221-26/+23
|
* mmap() errors on Darwin: use errorBelch/exit instead of barf()Simon Marlow2006-02-271-3/+7
| | | | The most likely cause is out-of-memory, not an RTS error.
* lag/drag/void: add an extra assertion, and some commentarySimon Marlow2006-02-231-0/+17
|
* lag/drag/void profiling fixSimon Marlow2006-02-231-1/+1
| | | | | | | We were searching the wrong part of the heap for dead objects, this was broken by recent changes to the step structure: from-space is now in step->old_blocks, not step->blocks. Fortunately some assertions in ProfHeap picked up the problem.