summaryrefslogtreecommitdiff
path: root/rts
Commit message (Collapse)AuthorAgeFilesLines
* ASSERT(HpAlloc==0) in the update code, to catch HpAlloc bugsSimon Marlow2012-11-121-1/+15
|
* remove some unused variablesSimon Marlow2012-11-121-1/+3
|
* a fix for checkTSO(): the TSO could be a WHITEHOLESimon Marlow2012-11-121-3/+10
|
* assert HpAlloc == 0Simon Marlow2012-11-121-4/+5
|
* some W_s should be P_sSimon Marlow2012-11-121-3/+3
|
* small optimisation: inline stmNewTVar()Simon Marlow2012-11-053-25/+9
|
* Save R1/R2/.. across foreign callsSimon Marlow2012-11-051-6/+15
|
* Merge branch 'master' of darcs.haskell.org:/srv/darcs//ghcIan Lynagh2012-11-015-8/+14
|\
| * Fix bug in stg_enter_checkbhSimon Marlow2012-11-011-1/+5
| | | | | | | | | | This was causing crashes in stm050(ghci), throwto001(ghci), and possibly more.
| * turn off cmm optimisation for the debug waySimon Marlow2012-11-011-1/+1
| |
| * Fix bug in stg_ctoi_R1n (could cause GHCi crashes)Simon Marlow2012-11-011-1/+1
| |
| * A couple of W_s should be P_s (not an actual bug, I think)Simon Marlow2012-11-011-2/+2
| |
| * Don't clearNurseries() in parallel with -debugSimon Marlow2012-11-011-3/+5
| | | | | | | | It makes sanity-checking fail.
* | Fix typosIan Lynagh2012-11-011-1/+1
|/
* Retainer prof: immutable arrays are not retainers, and fix the docsSimon Marlow2012-10-311-2/+3
|
* Save and restore registers across calls to unlockClosure.Geoffrey Mainland2012-10-301-0/+13
| | | | | We may not assume that registers are saved across calls to unlockClosure because it could call a C function on some platforms.
* Attach proper jump liveness information to generated C-- code.Geoffrey Mainland2012-10-301-2/+2
|
* Fix a couple of format stringsIan Lynagh2012-10-261-2/+2
|
* fprintCCS_stderr: untag the exception (#7319)Simon Marlow2012-10-251-1/+1
|
* delete old commentsSimon Marlow2012-10-251-22/+0
|
* remove unused sched_shutting_downSimon Marlow2012-10-252-8/+1
|
* fix bug in heap check in putMVar#Simon Marlow2012-10-241-1/+1
|
* Use canned heap checks to save a few bytes of codeSimon Marlow2012-10-231-2/+2
|
* fix a warningSimon Marlow2012-10-231-2/+2
|
* Fix a silly bug that would cause -xc to print less than useful informationSimon Marlow2012-10-231-1/+3
|
* typoSimon Marlow2012-10-221-1/+1
|
* profiling fixesSimon Marlow2012-10-197-40/+44
|
* Fix build on OS X (fix from Duncan Coutts)Ian Lynagh2012-10-161-0/+5
|
* Add a new traceMarker# primop for use in profiling outputDuncan Coutts2012-10-157-0/+84
| | | | | | | | | In time-based profiling visualisations (e.g. heap profiles and ThreadScope) it would be useful to be able to mark particular points in the execution and have those points in time marked in the visualisation. The traceMarker# primop currently emits an event into the eventlog. In principle it could be extended to do something in the heap profiling too.
* Merge branch 'master' of http://darcs.haskell.org/ghcIan Lynagh2012-10-141-0/+3
|\
| * rts: Ignore signal before deleting timer. Fixes #7303.Erik de Castro Lopo2012-10-141-0/+3
| | | | | | | | | | | | | | Was getting an ocassional hang or segfault when building GHC in a Qemu user space emulation of ARM. Turned out that the ITIMER_SIGNAL was being delivered *after* the call to timer_delete(). Setting the signal to SIG_IGN before deleting the timer solves the problem.
* | Get dynamic-by-default mostly working on OS XIan Lynagh2012-10-141-0/+3
| |
* | Don't set dynlib install names when buildingIan Lynagh2012-10-141-4/+0
|/ | | | | | | | 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.
* Keep the list of DLLs that we dlopenIan Lynagh2012-10-131-2/+50
| | | | | | | Unfortunately, dlsym finds the first symbol loaded, while when we reload a compiled module in GHCi it's the last symbol that we want. Therefore we remember the list of loaded DLLs ourselves and go through them in order.
* When dynamic-by-default, don't use the GHCi linkerIan Lynagh2012-10-132-0/+22
| | | | We instead link objects into a temporary DLL and dlopen that
* profiling fixesSimon Marlow2012-10-094-31/+32
|
* fix a warningSimon Marlow2012-10-081-1/+1
|
* Produce new-style Cmm from the Cmm parserSimon Marlow2012-10-0821-1857/+1533
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Build the dynamic way by default on Linux/amd64Ian Lynagh2012-10-032-4/+4
| | | | | | | | | | | | | 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/...
* Another overhaul of the recent_activity / idle GC handling (#5991)Simon Marlow2012-09-244-25/+62
| | | | | | | | | | | | | | | 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
* Revert "Disable the timer signal while blocked in select() (#5991)"Simon Marlow2012-09-241-13/+4
| | | | | | | | | This reverts commit dd24d6bc37879c6b32a3d5ac4ee765e59e13501c. 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.
* Fix the profiling buildIan Lynagh2012-09-211-2/+2
|
* Convert more RTS macros to functionsIan Lynagh2012-09-214-10/+10
| | | | No size changes in the non-debug object files
* Fix off-by-one (#7227)Simon Marlow2012-09-211-0/+1
|
* Include pinned memory in the stats for allocated memorySimon Marlow2012-09-212-1/+2
| | | | | This broke with the changes to the pinned object handling in 67f4ab7e6b7705a9d617c6109a8c5434ede13cae.
* Cache the result of countOccupied(gen->large_objects) as gen->n_large_words ↵Simon Marlow2012-09-212-2/+6
| | | | | | | | | (#7257) The program in #7257 was spending 90% of its time counting the live data in gen->large_objects. We already avoid doing this for small objects, but in this example the old generation was full of large objects (actually pinned ByteStrings).
* Allow allocNursery() to allocate single blocks (#7257)Simon Marlow2012-09-212-11/+13
| | | | | | | Forcing large allocations here can creates serious fragmentation in some cases, and since the large allocations are only a small optimisation we should allow the nursery to hoover up small blocks before allocating large chunks.
* Small parallel GC improvementSimon Marlow2012-09-181-2/+12
| | | | Overlap the main thread's clearNursery() with the other threads.
* More OS X build fixesIan Lynagh2012-09-1414-46/+46
|
* Use conditionals rather than CPP in mkDerivedConstantsIan Lynagh2012-09-131-1/+1
| | | | | This means we only need to build one copy of the program, which will make life simpler as I plan to add more variants.