ghc-hetmet.git
16 years agoscavengeTSO might encounter a ThreadRelocated; cope
simonmar@microsoft.com [Thu, 28 Feb 2008 15:24:03 +0000 (15:24 +0000)]
scavengeTSO might encounter a ThreadRelocated; cope

16 years agoUpdating a thunk in raiseAsync might encounter an IND; cope
simonmar@microsoft.com [Thu, 28 Feb 2008 15:23:32 +0000 (15:23 +0000)]
Updating a thunk in raiseAsync might encounter an IND; cope
There was already a check to avoid updating an IND, but it was
originally there to avoid a bug which doesn't exist now.  Furthermore
the test and update are not atomic, so another thread could be
updating this thunk while we are.  We have to just go ahead and update
anyway - it might waste a little work, but this is a very rare case.

16 years agoadd GC(0) and GC(1) time
Simon Marlow [Fri, 22 Feb 2008 14:20:08 +0000 (14:20 +0000)]
add GC(0) and GC(1) time

16 years agoround_to_mblocks: should use StgWord not nat
Simon Marlow [Wed, 20 Feb 2008 13:01:39 +0000 (13:01 +0000)]
round_to_mblocks: should use StgWord not nat

16 years agodebugging code
Simon Marlow [Tue, 19 Feb 2008 10:26:51 +0000 (10:26 +0000)]
debugging code

16 years agorefactoring
simonmar@microsoft.com [Mon, 18 Feb 2008 13:54:58 +0000 (13:54 +0000)]
refactoring

16 years agofix off-by-one
simonmar@microsoft.com [Fri, 15 Feb 2008 13:40:17 +0000 (13:40 +0000)]
fix off-by-one

16 years agomeasure mut_elapsed_time
simonmar@microsoft.com [Fri, 15 Feb 2008 13:38:50 +0000 (13:38 +0000)]
measure mut_elapsed_time

16 years agofix build with 6.8
simonmar@microsoft.com [Fri, 15 Feb 2008 13:38:36 +0000 (13:38 +0000)]
fix build with 6.8

16 years agoadd ROUNDUP_BYTES_TO_WDS
simonmar@microsoft.com [Fri, 15 Feb 2008 13:30:40 +0000 (13:30 +0000)]
add ROUNDUP_BYTES_TO_WDS

16 years agoAllow +RTS -H0 as a way to override a previous -H<size>
simonmar@microsoft.com [Thu, 31 Jan 2008 15:36:45 +0000 (15:36 +0000)]
Allow +RTS -H0 as a way to override a previous -H<size>

16 years agocomment out a bogus assertion
simonmar@microsoft.com [Wed, 30 Jan 2008 15:09:34 +0000 (15:09 +0000)]
comment out a bogus assertion

16 years agomemInventory: optionally dump the memory inventory
simonmar@microsoft.com [Wed, 30 Jan 2008 15:09:21 +0000 (15:09 +0000)]
memInventory: optionally dump the memory inventory
in addition to checking for leaks

16 years agocalcNeeded: fix the calculation, we weren't counting G0 step 1
simonmar@microsoft.com [Wed, 30 Jan 2008 15:07:30 +0000 (15:07 +0000)]
calcNeeded: fix the calculation, we weren't counting G0 step 1

16 years agocalcNeeded: add in the large blocks too
simonmar@microsoft.com [Wed, 30 Jan 2008 13:54:18 +0000 (13:54 +0000)]
calcNeeded: add in the large blocks too

16 years agoupdate a comment
Simon Marlow [Wed, 30 Jan 2008 10:15:04 +0000 (10:15 +0000)]
update a comment

16 years agotell Emacs these files are C
simonmar@microsoft.com [Wed, 30 Jan 2008 10:00:47 +0000 (10:00 +0000)]
tell Emacs these files are C

16 years agofix an assertion
Simon Marlow [Fri, 18 Jan 2008 16:09:10 +0000 (16:09 +0000)]
fix an assertion

16 years agocut-and-pasto
Simon Marlow [Wed, 16 Jan 2008 10:37:51 +0000 (10:37 +0000)]
cut-and-pasto

16 years agosmall rearrangement
simonmar@microsoft.com [Tue, 15 Jan 2008 09:57:36 +0000 (09:57 +0000)]
small rearrangement

16 years agorecordMutableGen_GC: we must call the spinlocked version of allocBlock()
Simon Marlow [Fri, 11 Jan 2008 13:54:53 +0000 (13:54 +0000)]
recordMutableGen_GC: we must call the spinlocked version of allocBlock()

16 years agoremove unused declaration
simonmar@microsoft.com [Fri, 11 Jan 2008 10:58:21 +0000 (10:58 +0000)]
remove unused declaration

16 years agomore fixes for THUNK_SELECTORs
Simon Marlow [Thu, 10 Jan 2008 12:28:20 +0000 (12:28 +0000)]
more fixes for THUNK_SELECTORs

16 years agoFix bug in eval_thunk_selector()
simonmar@microsoft.com [Thu, 10 Jan 2008 10:56:28 +0000 (10:56 +0000)]
Fix bug in eval_thunk_selector()

16 years agomove markSparkQueue into GC.c, as it needs the register variable defined
Simon Marlow [Wed, 9 Jan 2008 16:28:28 +0000 (16:28 +0000)]
move markSparkQueue into GC.c, as it needs the register variable defined

16 years agoWindows fix
Simon Marlow [Wed, 9 Jan 2008 16:27:32 +0000 (16:27 +0000)]
Windows fix

16 years agoFix bug: eval_thunk_selector was calling the unlocked evacuate()
Simon Marlow [Wed, 9 Jan 2008 14:49:37 +0000 (14:49 +0000)]
Fix bug: eval_thunk_selector was calling the unlocked evacuate()

16 years agoadd GC elapsed time
simonmar@microsoft.com [Mon, 7 Jan 2008 13:48:38 +0000 (13:48 +0000)]
add GC elapsed time

16 years agoupdate to match Mb -> MB change in -s output
simonmar@microsoft.com [Thu, 20 Dec 2007 14:58:55 +0000 (14:58 +0000)]
update to match Mb -> MB change in -s output

16 years agouse "MB" rather than "Mb" for abbreviating megabytes
simonmar@microsoft.com [Tue, 18 Dec 2007 14:51:35 +0000 (14:51 +0000)]
use "MB" rather than "Mb" for abbreviating megabytes

16 years agofindSlop: useful function for tracking down excessive slop in gdb
simonmar@microsoft.com [Fri, 14 Dec 2007 13:59:09 +0000 (13:59 +0000)]
findSlop: useful function for tracking down excessive slop in gdb

16 years agocalculate wastage due to unused memory at the end of each block
simonmar@microsoft.com [Fri, 14 Dec 2007 13:58:42 +0000 (13:58 +0000)]
calculate wastage due to unused memory at the end of each block

16 years agobugfix: check for NULL before testing isPartiallyFull(stp->blocks)
simonmar@microsoft.com [Fri, 14 Dec 2007 10:32:23 +0000 (10:32 +0000)]
bugfix: check for NULL before testing isPartiallyFull(stp->blocks)

16 years agohave each GC thread call GetRoots()
simonmar@microsoft.com [Thu, 13 Dec 2007 16:50:13 +0000 (16:50 +0000)]
have each GC thread call GetRoots()

16 years agouse synchronised version of freeChain() in scavenge_mutable_list()
simonmar@microsoft.com [Thu, 13 Dec 2007 16:45:25 +0000 (16:45 +0000)]
use synchronised version of freeChain() in scavenge_mutable_list()

16 years agoremove declarations for variables that no longer exist
simonmar@microsoft.com [Thu, 13 Dec 2007 15:09:46 +0000 (15:09 +0000)]
remove declarations for variables that no longer exist

16 years agoremove old comment
simonmar@microsoft.com [Wed, 12 Dec 2007 16:33:29 +0000 (16:33 +0000)]
remove old comment

16 years agoGC: small improvement to parallelism
simonmar@microsoft.com [Thu, 29 Nov 2007 15:49:27 +0000 (15:49 +0000)]
GC: small improvement to parallelism
don't cache a work block locally if the global queue is empty

16 years agoEVACUATED: target is definitely HEAP_ALLOCED(), no need to check
simonmar@microsoft.com [Thu, 29 Nov 2007 12:00:21 +0000 (12:00 +0000)]
EVACUATED: target is definitely HEAP_ALLOCED(), no need to check

16 years agoin scavenge_block(), keep going if we're scanning the todo block
simonmar@microsoft.com [Tue, 27 Nov 2007 16:07:47 +0000 (16:07 +0000)]
in scavenge_block(), keep going if we're scanning the todo block

16 years agocount the number of todo blocks, and add a trace
simonmar@microsoft.com [Tue, 27 Nov 2007 16:07:17 +0000 (16:07 +0000)]
count the number of todo blocks, and add a trace

16 years agooops, restore accidentally disabled hash-consing for Char
simonmar@microsoft.com [Fri, 23 Nov 2007 16:25:22 +0000 (16:25 +0000)]
oops, restore accidentally disabled hash-consing for Char

16 years agokill the PAR/GRAN debug flags
simonmar@microsoft.com [Thu, 22 Nov 2007 12:23:27 +0000 (12:23 +0000)]
kill the PAR/GRAN debug flags

16 years agostats: print elapsed time for GC in each generation
simonmar@microsoft.com [Thu, 22 Nov 2007 10:50:24 +0000 (10:50 +0000)]
stats: print elapsed time for GC in each generation

16 years agoassertion fix
simonmar@microsoft.com [Wed, 21 Nov 2007 16:47:36 +0000 (16:47 +0000)]
assertion fix

16 years agocache bd->todo_bd->free and the limit in the workspace
Simon Marlow [Wed, 21 Nov 2007 15:58:51 +0000 (15:58 +0000)]
cache bd->todo_bd->free and the limit in the workspace
avoids cache contention: bd->todo_bd->free may clash with any cache
line, so we localise it.

16 years agowarning fix
simonmar@microsoft.com [Wed, 21 Nov 2007 16:47:47 +0000 (16:47 +0000)]
warning fix

16 years agofix boundary bugs in a couple of for-loops
simonmar@microsoft.com [Tue, 20 Nov 2007 13:38:35 +0000 (13:38 +0000)]
fix boundary bugs in a couple of for-loops

16 years agoimprovements to PAPI support
simonmar@microsoft.com [Tue, 20 Nov 2007 13:36:35 +0000 (13:36 +0000)]
improvements to PAPI support
- 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

16 years agouse SRC_CC_OPTS rather than SRC_HC_OPTS for C options
simonmar@microsoft.com [Mon, 19 Nov 2007 11:16:30 +0000 (11:16 +0000)]
use SRC_CC_OPTS rather than SRC_HC_OPTS for C options

16 years agoallow PAPI to be installed somewhere non-standard
Simon Marlow [Thu, 1 Nov 2007 15:03:25 +0000 (15:03 +0000)]
allow PAPI to be installed somewhere non-standard

16 years agofix warnings
Simon Marlow [Thu, 1 Nov 2007 15:02:58 +0000 (15:02 +0000)]
fix warnings

16 years agofix a warning
Simon Marlow [Thu, 1 Nov 2007 15:02:28 +0000 (15:02 +0000)]
fix a warning

16 years agofix a warning
Simon Marlow [Thu, 1 Nov 2007 15:02:00 +0000 (15:02 +0000)]
fix a warning

16 years agorename n_threads to n_gc_threads
Simon Marlow [Wed, 31 Oct 2007 16:31:47 +0000 (16:31 +0000)]
rename n_threads to n_gc_threads

16 years agoRefactor PAPI support, and add profiling of multithreaded GC
Simon Marlow [Wed, 31 Oct 2007 16:30:15 +0000 (16:30 +0000)]
Refactor PAPI support, and add profiling of multithreaded GC

16 years agofix merge errors
Simon Marlow [Wed, 31 Oct 2007 15:38:39 +0000 (15:38 +0000)]
fix merge errors

16 years agorefactoring of eager_promotion in scavenge_block()
Simon Marlow [Wed, 31 Oct 2007 15:34:17 +0000 (15:34 +0000)]
refactoring of eager_promotion in scavenge_block()

16 years agocompile special minor GC versions of evacuate() and scavenge_block()
Simon Marlow [Wed, 31 Oct 2007 15:33:39 +0000 (15:33 +0000)]
compile special minor GC versions of evacuate() and scavenge_block()

This is for two reasons: minor GCs don't need to do per-object locking
for parallel GC, which is fairly expensive, and secondly minor GCs
don't need to follow SRTs.

16 years agofixes for eval_thunk_selector() in parallel GC
Simon Marlow [Wed, 31 Oct 2007 15:32:52 +0000 (15:32 +0000)]
fixes for eval_thunk_selector() in parallel GC

16 years agoRemove the optimisation of avoiding scavenging for certain objects
Simon Marlow [Wed, 31 Oct 2007 14:45:42 +0000 (14:45 +0000)]
Remove the optimisation of avoiding scavenging for certain objects

Some objects don't need to be scavenged, in particular if they have no
pointers.  This seems like an obvious optimisation, but in fact it
only accounts for about 1% of objects (in GHC, for example), and the
extra complication means it probably isn't worth doing.

16 years agoGC refactoring: change evac_gen to evac_step
Simon Marlow [Wed, 31 Oct 2007 14:42:30 +0000 (14:42 +0000)]
GC refactoring: change evac_gen to evac_step

By establishing an ordering on step pointers, we can simplify the test
  (stp->gen_no < evac_gen)
to
  (stp < evac_step)
which is common in evacuate().

16 years agoGC refactoring: make evacuate() take an StgClosure**
Simon Marlow [Wed, 31 Oct 2007 14:36:34 +0000 (14:36 +0000)]
GC refactoring: make evacuate() take an StgClosure**

Change the type of evacuate() from
  StgClosure *evacuate(StgClosure *);
to
  void evacuate(StgClosure **);

So evacuate() itself writes the source pointer, rather than the
caller.  This is slightly cleaner, and avoids a few memory writes:
sometimes evacuate() doesn't move the object, and in these cases the
source pointer doesn't need to be written.  It doesn't have a
measurable impact on performance, though.

16 years agotiny optimisation in evacuate()
Simon Marlow [Wed, 31 Oct 2007 13:09:35 +0000 (13:09 +0000)]
tiny optimisation in evacuate()

16 years agoInitial parallel GC support
Simon Marlow [Wed, 31 Oct 2007 13:07:18 +0000 (13:07 +0000)]
Initial parallel GC support

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.

16 years agoRefactoring of the GC in preparation for parallel GC
Simon Marlow [Wed, 31 Oct 2007 12:51:36 +0000 (12:51 +0000)]
Refactoring of the GC in preparation for parallel GC

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).

16 years agoalso count total dispatch stalls in +RTS -as
Simon Marlow [Tue, 30 Oct 2007 14:45:09 +0000 (14:45 +0000)]
also count total dispatch stalls in +RTS -as

16 years agomove GetRoots() to GC.c
Simon Marlow [Tue, 30 Oct 2007 13:00:52 +0000 (13:00 +0000)]
move GetRoots() to GC.c

15 years agoTweak a comment to talk about UnboxedTuples rather than -fglasgow-exts
Ian Lynagh [Mon, 16 Jun 2008 22:52:48 +0000 (22:52 +0000)]
Tweak a comment to talk about UnboxedTuples rather than -fglasgow-exts

15 years agoSuggest -XRelaxedPolyRec rather than -fglasgow-exts in an error message
Ian Lynagh [Mon, 16 Jun 2008 21:34:38 +0000 (21:34 +0000)]
Suggest -XRelaxedPolyRec rather than -fglasgow-exts in an error message

15 years agoFix the splitter with perl 5.10; patch from Audrey Tang
Ian Lynagh [Wed, 11 Jun 2008 12:28:37 +0000 (12:28 +0000)]
Fix the splitter with perl 5.10; patch from Audrey Tang

15 years agoRemove some build system code that can't happen
Ian Lynagh [Mon, 16 Jun 2008 18:14:25 +0000 (18:14 +0000)]
Remove some build system code that can't happen
ghc_ge_601 is no longer defined

15 years agoFix Trac #2358: 1-tuples in Template Haskell
simonpj@microsoft.com [Sat, 14 Jun 2008 12:39:39 +0000 (12:39 +0000)]
Fix Trac #2358: 1-tuples in Template Haskell

fons points out that TH was treating 1-tuples inconsistently.  Generally
we make a 1-tuple into a no-op, so that (e) and e are the same.  But
I'd forgotten to do this for types.

It is possible to have a type with an un-saturated 1-tuple type
constructor. That now elicits an error message when converting from
TH syntax to Hs syntax

15 years agoFix nasty Simplifier scoping bug
simonpj@microsoft.com [Sat, 14 Jun 2008 02:39:37 +0000 (02:39 +0000)]
Fix nasty Simplifier scoping bug

This bug was somehow tickled by the new code for desugaring
polymorphic bindings, but the bug has been there a long time.  The
bindings floated out in simplLazyBind, generated by abstractFloats,
were getting processed by postInlineUnconditionally. But that was
wrong because part of their scope has already been processed.

That led to a bit of refactoring in the simplifier.  See comments
with Simplify.addPolyBind.

In principle this might happen in 6.8.3, but in practice it doesn't seem
to, so probably not worth merging.

15 years agoCoreLint should check for out-of-scope worker
simonpj@microsoft.com [Sat, 14 Jun 2008 02:38:09 +0000 (02:38 +0000)]
CoreLint should check for out-of-scope worker

15 years agoMore commandline flag improvements
Ian Lynagh [Mon, 16 Jun 2008 14:29:17 +0000 (14:29 +0000)]
More commandline flag improvements
* Allow -ffoo flags to be deprecated
* Mark some -ffoo flags as deprecated
* Avoid using deprecated flags in error messages, in the build system, etc
* Add a flag to en/disable the deprecated flag warning

15 years agoRemove an ifdef
Ian Lynagh [Mon, 16 Jun 2008 11:11:14 +0000 (11:11 +0000)]
Remove an ifdef

15 years agoAdd ghc_ge_609
Ian Lynagh [Sun, 15 Jun 2008 13:46:36 +0000 (13:46 +0000)]
Add ghc_ge_609

15 years agoRemove an ifdef
Ian Lynagh [Sun, 15 Jun 2008 13:37:43 +0000 (13:37 +0000)]
Remove an ifdef

15 years agoDon't compile Cabal with -cpp -fffi
Ian Lynagh [Sun, 15 Jun 2008 01:08:26 +0000 (01:08 +0000)]
Don't compile Cabal with -cpp -fffi
Instead rely on the sources having suitable pragmas

15 years agoRemove a typo
Ian Lynagh [Sun, 15 Jun 2008 00:59:56 +0000 (00:59 +0000)]
Remove a typo

15 years agoAllow -X flags to be deprecated, and deprecate RecordPuns; fixes #2320
Ian Lynagh [Sun, 15 Jun 2008 00:00:41 +0000 (00:00 +0000)]
Allow -X flags to be deprecated, and deprecate RecordPuns; fixes #2320

15 years agoFix a warning in DsForeign
Ian Lynagh [Sat, 14 Jun 2008 21:53:46 +0000 (21:53 +0000)]
Fix a warning in DsForeign

15 years agoFix warnings in Linker
Ian Lynagh [Sat, 14 Jun 2008 21:26:27 +0000 (21:26 +0000)]
Fix warnings in Linker

15 years agoUse the right set of linkables in unload_wkr
Ian Lynagh [Sat, 14 Jun 2008 21:15:39 +0000 (21:15 +0000)]
Use the right set of linkables in unload_wkr

15 years agoUse bracket_ rather than bracket in withExtendedLinkEnv
Ian Lynagh [Sat, 14 Jun 2008 21:14:14 +0000 (21:14 +0000)]
Use bracket_ rather than bracket in withExtendedLinkEnv

15 years agoRemove more ifdeffery
Ian Lynagh [Sat, 14 Jun 2008 20:51:31 +0000 (20:51 +0000)]
Remove more ifdeffery

15 years agoRemove more ifdeffery
Ian Lynagh [Sat, 14 Jun 2008 20:42:34 +0000 (20:42 +0000)]
Remove more ifdeffery

15 years agoRemove more ifdeffery
Ian Lynagh [Sat, 14 Jun 2008 20:32:15 +0000 (20:32 +0000)]
Remove more ifdeffery

15 years agoRemove some ifdeffery
Ian Lynagh [Sat, 14 Jun 2008 20:26:40 +0000 (20:26 +0000)]
Remove some ifdeffery

15 years agoFix some warnings in ParsePkgConf
Ian Lynagh [Sat, 14 Jun 2008 20:15:58 +0000 (20:15 +0000)]
Fix some warnings in ParsePkgConf

15 years agoFix warnings in DsForeign
Ian Lynagh [Sat, 14 Jun 2008 20:08:20 +0000 (20:08 +0000)]
Fix warnings in DsForeign

15 years agoFix warnings in PprCore
Ian Lynagh [Sat, 14 Jun 2008 19:56:11 +0000 (19:56 +0000)]
Fix warnings in PprCore

15 years agoFix warnings in Main
Ian Lynagh [Sat, 14 Jun 2008 19:41:20 +0000 (19:41 +0000)]
Fix warnings in Main

15 years agoSet -Wall in compiler/Makefile.ghcbin
Ian Lynagh [Sat, 14 Jun 2008 19:35:36 +0000 (19:35 +0000)]
Set -Wall in compiler/Makefile.ghcbin

15 years agoUse maybePrefixMatch in StaticFlags rather than redefining it ourselves
Ian Lynagh [Sat, 14 Jun 2008 19:05:05 +0000 (19:05 +0000)]
Use maybePrefixMatch in StaticFlags rather than redefining it ourselves

15 years agoUse -fforce-recomp rather than -no-recomp
Ian Lynagh [Sat, 14 Jun 2008 18:17:40 +0000 (18:17 +0000)]
Use -fforce-recomp rather than -no-recomp

15 years agoTweak the deprecated flags warning
Ian Lynagh [Sat, 14 Jun 2008 17:48:50 +0000 (17:48 +0000)]
Tweak the deprecated flags warning

15 years agoUse -O0 rather than -Onot in compiler/Makefile
Ian Lynagh [Sat, 14 Jun 2008 17:12:56 +0000 (17:12 +0000)]
Use -O0 rather than -Onot in compiler/Makefile

15 years agoDon't use -recomp whem compiling GHC, as it's the default (and now deprecated)
Ian Lynagh [Sat, 14 Jun 2008 16:56:49 +0000 (16:56 +0000)]
Don't use -recomp whem compiling GHC, as it's the default (and now deprecated)