This will allow us to reuse the scanning protocol with an arbitrary area
scanning function (replacing traceFormatScan) in order to implement
formatted object walking without an extra segment method.
Don't insist on scanning only grey segments: we want to be able to
reuse the scan protocol for walking, when the segments are black.
1. Avoid looping over two expressions in parallel when one makes more
sense (compilers can do strength reduction optimization: we don't
need to do it ourselves).
2. Introduce macro ITER_PARALLEL for iterating over two expressions in
parallel, to clarify the intention and explain the need for the
cast to void in the implementation.
3. Add macros SAC_LARGE_ITER and SAC_SMALL_ITER to reduce the amount
of code duplication in sac.c.
The -Wcomma option appears to be turned on automatically by Xcode
12.3, so it's a good idea for the MPS to build with the option, to
avoid unpleasant surprises when people update their Xcode.
The simplest way to suppress the warning is to cast the left hand side
of the comma operator to void.
Clang 10 turns on -Wimplicit-int-float-conversion, and on 64-bit
platforms this issues a warning that implicit conversions to double
from Size and unsigned long "may lose precision".
This commit adds casts to (double) for all such conversions. The loss
of precision is either impossible in practice (because a double can
represent all integers up to 2**53, which is about 9 petabytes, well
beyond the addressing capabilities for current CPUs), or else
acceptable, because we are accumulating an approximate quantity like
"collection work" or "fill size" (that has to cope with loss of
precision due in any case), or computing a threshold like the spare
commit limit where it is acceptable for it to be somewhat approximate.
Publish minor changes to readme and configure files in main directory.
Main directory and code directory licence texts are now fully updated.
Copied from Perforce
Change: 196994
Eliminate duplication between policyCondemnChain and traceCondemnAll.
Compute better mortality estimate for collection of the world.
Copied from Perforce
Change: 194611
1. Using macros to bypass PoolFree and Land* generic functions.
2. Compiling out assertions on functions on the critical paths for manual allocation and freeing.
3. Taking advantage of the fact that splay->updateNode does not change during a splay operation.
Copied from Perforce
Change: 194397
MRG reference segments inherit from GCSeg (not MutatorSeg) and so don't have hardware barriers. Instead, the code implements software barriers by always using ArenaRead and ArenaWrite.
Copied from Perforce
Change: 193990
Add forktest target to the Xcode project.
Write design for fork safety and cross-reference from the code.
Update release notes.
Copied from Perforce
Change: 193760
After forking in the child, re-create exception port and exception thread, and re-register the (only) thread with that port.
Copied from Perforce
Change: 193755
pthread_atfork handlers on OS X: in the child, update the mach port for the forking thread and move all other threads to the dead ring.
Copied from Perforce
Change: 193746
Remove unused event AMCTraceEnd.
The fixEmergency method must have the same type as the fix method because of how they are used.
Copied from Perforce
Change: 192636
ServerID: perforce.ravenbrook.com