Avoid read and write barrier in non-incremental mode.
Add --non-incremental option to gcbench
Copied from Perforce
Change: 186969
ServerID: perforce.ravenbrook.com
1. "#ifdef CHECKLEVEL > CheckLevelMINIMAL" was bogus: the #ifdef should have been #if, but even then it would not be right, because in the CHECKLEVEL_DYNAMIC configuration, CHECKLEVEL is a variable rather than a preprocessor constant. So use the condition defined(AVER_AND_CHECK_ALL) instead.
2. The final CHECKL(addr == seg->limit) only makes sense if the loop was executed.
3. The variables used by the loop need to be inside the #if to avoid warnings about unused variables.
4. Add reference to the job from a comment.
Copied from Perforce
Change: 185992
ServerID: perforce.ravenbrook.com
Accounting for segment splitting and merging.
Accounting for allocation and freeing in segsmss.
Copied from Perforce
Change: 185894
ServerID: perforce.ravenbrook.com
1. Where Type is a pointer type with a signature, replace CHECKL(TypeCheck(val)) with CHECKD(Type, val).
2. Where Type is a pointer type with no signature, replace CHECKL(TypeCheck(val)) with CHECKD_NOSIG(Type, val).
3. Where Type is a pointer type with a signature, but the structure is not visible at point of checking, replace CHECKL(TypeCheck(val)) with CHECKD_NOSIG(Type, val). Reference <design/check/#.hidden-type>
4. Make BTCheck extern and use it where possible.
5. Replace AVER(TypeCheck(val)) with AVERT(Type, val).
Copied from Perforce
Change: 185263
ServerID: perforce.ravenbrook.com
* Bring design up to date.
* New function PoolHasAttr encapsulates attribute checking.
* Abstract classes are abstract and mustn't be checked.
* The dummy pool class in fotest needs a size.
* Abstract pool classes null out methods that they can't provide a generic implementation for, to force subclasses to provide one.
* New function PoolTrivFramePopPending provides a generic implementation of that method.
* Rename PoolNoFreeWalk to PoolTrivFreeWalk since it has NOOP rather than NOTREACHED.
* Check that AttrMOVINGGC implies AttrGC.
* Remove unimplemented attributes (BUF_RESERVE, BUF_ALLOC, INCR_RB, INCR_WB, PM)
* AMC now inherits from AMCZ instead of the other way round. This is simpler: AMC adds features to AMCZ rather than AMCZ taking features away (and not quite getting it right).
* Similarly, LO inherits from AbstractSegBufPoolClass + PoolClassMixInCollect so that it doesn't have to clear AttrSCAN and the scan methods.
* Fix bug in MFSCheck -- mustn't check unroundedUnitSize >= UNIT_MIN since small unit sizes are rounded up to UNIT_MIN.
* Don't see AttrFREE in MRG (since no free method is supplied).
* Check AttrSCAN systematically (in PoolScan and SegCheck) rather than opportunistically in TraceStart and TraceQuantum.
Copied from Perforce
Change: 185231
ServerID: perforce.ravenbrook.com
* CONFIG_POLL_NONE (because the user-visible consequence is that polling is no longer supported; was CONFIG_PROTECTION_NONE).
* DISABLE_LOCKS (was THREAD_SINGLE).
* DISABLE_SHIELD (was THREAD_SINGLE && PROTECTION_NONE)
* DISABLE_REMEMBERED_SET (was PROTECTION_NONE)
When the shield is disabled, ArenaLeave asserts that there are no busy traces, and ArenaPoll is a no-op.
By having functions implemented using the corresponding macro, we can avoid duplicated code, and avoid testing DISABLE_SHIELD in global.c.
Remove all remaining references to MPS_PROD_EPCORE.
Copied from Perforce
Change: 185176
ServerID: perforce.ravenbrook.com
It's OK to call SegSetGrey on a segment with an empty rank set so long as you are not actually setting it to be grey for any traces, so correct the AVER accordingly.
Copied from Perforce
Change: 180236
ServerID: perforce.ravenbrook.com
This was the result of noticing a large number of SetSetGrey events that set the segment to the same greyness when scanning ambiguous references.
Copied from Perforce
Change: 179567
ServerID: perforce.ravenbrook.com
Fixing cast from external scan state structure to a PARENT, now that we're not punning the pointer any more.
Copied from Perforce
Change: 179347
ServerID: perforce.ravenbrook.com
Abolishing event formats. Each event now has its own structure.
Event parameters are now written directly into the event buffer, rather than being copied twice.
Copied from Perforce
Change: 179010
ServerID: perforce.ravenbrook.com
seg.c: SegDescribe: say "buffer: NULL" if it is (rather than saying nothing).
buffer.c: BufferDescribe: now interprets buffer->mode for you.
poolamc.c: amcSegCheck: check Nailboard present onlyif SegNailed for some trace;
AMCSegDescribe: correct SEG_SUPERCLASS (so we see GCSeg fields);
say whether seg is Mobile, Boarded (there's a nailboard), or Stuck;
clearer Map symbols, and print a key for them.
Copied from Perforce
Change: 161983
ServerID: perforce.ravenbrook.com