| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
- We have -m32 as machine-dependent option for gcc for a 32 bit build
- Like on OpenBSD, SL requires -fno-stack-protector to avoid triggering the
stack smashing checks inserted by gcc by default on this platform.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes events smaller and tracing quicker, and speeds up reading
and sorting the trace file.
HEADS UP: this changes the format of event log files. Corresponding
changes to the ghc-events package are required (and will be pushed
soon). Normally we would make backwards-compatible changes, but this
changes the format of every event (to remove the capability) so I'm
breaking the rules this time. This will be the only time we can do
this, since the format becomes public in 6.12.1.
|
|
|
|
|
| |
These indicate the size and time span of a sequence of events in the
event log, to make it easier to sort and navigate a large event log.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Flags (from +RTS -?):
-qg[<n>] Use parallel GC only for generations >= <n>
(default: 0, -qg alone turns off parallel GC)
-qb[<n>] Use load-balancing in the parallel GC only for generations >= <n>
(default: 1, -qb alone turns off load-balancing)
these are good defaults for most parallel programs. Single-threaded
programs that want to make use of parallel GC will probably want +RTS
-qg1 (this is documented).
I've also updated the docs.
|
|
|
|
| |
Using "builtin:foo" creates a file called "builtin" on Windows
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- tracing facilities are now enabled with -DTRACING, and -DDEBUG
additionally enables debug-tracing. -DEVENTLOG has been
removed.
- -debug now implies -eventlog
- events can be printed to stderr instead of being sent to the
binary .eventlog file by adding +RTS -v (which is implied by the
+RTS -Dx options).
- -Dx debug messages can be sent to the binary .eventlog file
by adding +RTS -l. This should help debugging by reducing
the impact of debug tracing on execution time.
- Various debug messages that duplicated the information in events
have been removed.
|
|
|
|
|
| |
The check for whether a Capability was free was inverted, which harmed
performance for callbacks.
|
|
|
|
|
| |
Also add a panic for resurrecting a thread blocked on an exception,
since it should never happen.
|
| |
|
|
|
|
| |
Fixes an ASSERTION failure with concprog001, -threaded -debug, +RTS -N2
|
|
|
|
|
|
|
|
|
|
| |
This has no effect with static libraries, but when the RTS is in a
shared library it does two things:
- it prevents the function from being exposed by the shared library
- internal calls to the function can use the faster non-PLT calls,
because the function cannot be overriden at link time.
|
| |
|
| |
|
|
|
|
|
| |
See commentary at
http://hackage.haskell.org/trac/ghc/wiki/Commentary/Packages
|
|
|
|
| |
It breaks the unregisterised build on IA64.
|
|
|
|
| |
Fixes linking with -dynamic
|
|
|
|
| |
This gives about a 15% performance boost in GHCi for me. nice!
|
|
|
|
|
|
|
|
|
|
| |
rolling back:
* use cas() to claim the closure in copyPart(), to match copy_tag()
* rename whitehole_spin to evac_collision, and update it properly
This introduced a new failure in parallel GC. I'll rollback for now
until I've fixed it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It is possible for the program to allocate single object larger than a
block, without going through the normal large-object mechanisms that
we have for arrays and threads and so on.
The GC was assuming that no object was larger than a block, but #3424
contains a program that breaks the assumption. This patch removes the
assumption. The objects in question will still be copied, that is
they don't get the normal large-object treatment, but this case is
unlikely to occur often in practice.
In the future we may improve things by generating code to allocate
them as large objects in the first place.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
copyPart() was still using the old WHITEHOLE mechanism for locking the
closure. I don't think this fixes any actual bugs, but it removes a
gratuitous difference between two functions that should look similar.
|
|
|
|
| |
Fixes crash in concprog002(threaded2_qw), and possibly other problems
|
| |
|
|
|
|
|
| |
Otherwise, finalizer callbacks cause a deadlock in the threaded RTS
(including GHCi)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There were two bugs, and had it not been for the first one we would
not have noticed the second one, so this is quite fortunate.
The first bug is in stg_unblockAsyncExceptionszh_ret, when we found a
pending exception to raise, but don't end up raising it, there was a
missing adjustment to the stack pointer.
The second bug was that this case was actually happening at all: it
ought to be incredibly rare, because the pending exception thread
would have to be killed between us finding it and attempting to raise
the exception. This made me suspicious. It turned out that there was
a race condition on the tso->flags field; multiple threads were
updating this bitmask field non-atomically (one of the bits is the
dirty-bit for the generational GC). The fix is to move the dirty bit
into its own field of the TSO, making the TSO one word larger (sadly).
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|