Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2054.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2054 Author: eem Time: 27 December 2016, 1:02:47.238029 pm UUID: 43b2e0a0-dfbf-4e89-9372-0611324eb20f Ancestors: VMMaker.oscog-eem.2053
SpurPlanningCompactor: Move the initial scan for firstFreeObject and firstMobileObject to the earliest point and hence bail out when the heap is already compacted.
=============== Diff against VMMaker.oscog-eem.2053 ===============
Item was changed: ----- Method: SpurPlanningCompactor>>compact (in category 'compaction - api') ----- compact "Sweep all of old space, sliding unpinned marked objects down over free and unmarked objects. Let the segmentManager mark which segments contain pinned objects via notePinned:." | onePass | <inline: #never> "for profiling" + self initializeScanCheckingForFullyCompactedHeap ifTrue: + [^self unmarkObjectsInFullyCompactedHeap]. + self initializeCompaction. - self initializeCompaction; - initializeScan. [onePass := self planCompactSavingForwarders. self updatePointers. self copyAndUnmark. manager checkFreeSpace: GCModeFull. onePass or: [biasForGC]] whileFalse: [self reinitializeScan; updateSavedFirstFieldsSpaceIfNecessary]. self endCompaction!
Item was changed: ----- Method: SpurPlanningCompactor>>initializeCompaction (in category 'compaction') ----- initializeCompaction manager checkFreeSpace: GCModeFull. self selectSavedFirstFieldsSpace. self unpinRememberedSet. manager resetFreeListHeads; totalFreeOldSpace: 0; + beginSlidingCompaction. + savedFirstFieldsSpace top: savedFirstFieldsSpace start - manager bytesPerOop! - beginSlidingCompaction!
Item was removed: - ----- Method: SpurPlanningCompactor>>initializeScan (in category 'compaction') ----- - initializeScan - savedFirstFieldsSpace top: savedFirstFieldsSpace start - manager bytesPerOop. - firstFreeObject := manager hiddenRootsObject. - self reinitializeScan!
Item was added: + ----- Method: SpurPlanningCompactor>>initializeScanCheckingForFullyCompactedHeap (in category 'compaction') ----- + initializeScanCheckingForFullyCompactedHeap + "Scan for firstFreeObject and firstMobileObject from the start of memory. + Answer if the heap is already fully compacted." + firstFreeObject := manager hiddenRootsObject. + self reinitializeScan. + ^firstMobileObject >= manager endOfMemory!
Item was added: + ----- Method: SpurPlanningCompactor>>unmarkObjectsInFullyCompactedHeap (in category 'compaction') ----- + unmarkObjectsInFullyCompactedHeap + self unmarkInitialImmobileObjects. + manager unmarkSurvivingObjectsForCompact!
vm-dev@lists.squeakfoundation.org