Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2244.mcz==================== Summary ====================
Name: VMMaker.oscog-eem.2244
Author: eem
Time: 21 June 2017, 10:52:20.520862 am
UUID: 2cb680ae-4bf6-40dd-9130-d766a3c3f1e5
Ancestors: VMMaker.oscog-eem.2243
Spur: Fix regression in VMMaker.oscog-eem.2237. sufficientSpaceAfterGC: must compute heapSizePostGC using totalOldSpaceCapacity instead of the old broken segment-insensitive endOfmemory - nilObj, otherwise as soon as a segment is added its quite possible that there will be a full GC after each scavenge.
=============== Diff against VMMaker.oscog-eem.2243 ===============
Item was changed:
----- Method: SpurMemoryManager>>sufficientSpaceAfterGC: (in category 'gc - scavenging') -----
sufficientSpaceAfterGC: numBytes
"This is ObjectMemory's funky entry-point into its incremental GC,
which is a stop-the-world a young generation reclaimer. In Spur
we run the scavenger. Answer if space is not low."
| heapSizePostGC |
self assert: numBytes = 0.
self scavengingGCTenuringIf: TenureByAge.
+ heapSizePostGC := segmentManager totalOldSpaceCapacity - totalFreeOldSpace.
- heapSizePostGC := endOfMemory - nilObj - totalFreeOldSpace.
(heapSizePostGC - heapSizeAtPreviousGC) asFloat / heapSizeAtPreviousGC >= heapGrowthToSizeGCRatio ifTrue:
[self fullGC].
[totalFreeOldSpace < growHeadroom
and: [(self growOldSpaceByAtLeast: 0) notNil]] whileTrue:
[totalFreeOldSpace >= growHeadroom ifTrue:
[^true]].
lowSpaceThreshold > totalFreeOldSpace ifTrue: "space is low"
[lowSpaceThreshold := 0. "avoid signalling low space twice"
^false].
^true!