VM Maker: VMMaker.oscog-eem.2187.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

VM Maker: VMMaker.oscog-eem.2187.mcz

commits-2
 
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2187.mcz

==================== Summary ====================

Name: VMMaker.oscog-eem.2187
Author: eem
Time: 27 March 2017, 3:00:06.676146 pm
UUID: 2259d299-65a4-42d0-a01b-4b25f5a89745
Ancestors: VMMaker.oscog-rsf.2186

SpurPlanningCompactor:
Fix a big in resetting the free chunk used for the firstUnusedFieldsSpace after non-final pasxses (i.e. on snapshot).  The old code didn't check to see if a free chunk was actually found(!!).

=============== Diff against VMMaker.oscog-rsf.2186 ===============

Item was added:
+ ----- Method: SpurMemoryManager>>validFreeTreeChunk: (in category 'free space') -----
+ validFreeTreeChunk: chunk
+ <inline: false>
+ (segmentManager segmentContainingObj: chunk) ifNil:
+ [^false].
+ ^(self validFreeTreeChunk: chunk parent: (self fetchPointer: self freeChunkParentIndex ofFreeChunk: chunk)) isNil!

Item was changed:
  ----- Method: SpurPlanningCompactor>>updateSavedFirstFieldsSpaceIfNecessary (in category 'space management') -----
  updateSavedFirstFieldsSpaceIfNecessary
  "If savedFirstFieldsSpace is a free chunk then it may need to be repositioned if there is more than one pass."
  <inline: true>
+ (self savedFirstFieldsSpaceInFreeChunk
+ and: [savedFirstFieldsSpace start < lastMobileObject]) ifTrue:
+ [(self findHighestSuitableFreeBlock: savedFirstFieldsSpace limit - savedFirstFieldsSpace start)
+ ifNotNil:
+ [:largestFreeChunk|
+ self useFreeChunkForSavedFirstFieldsSpace: largestFreeChunk]
+ ifNil:
+ [self useEdenForSavedFirstFieldsSpace]].
- self savedFirstFieldsSpaceInFreeChunk ifTrue:
- [self useFreeChunkForSavedFirstFieldsSpace: manager findLargestFreeChunk].
 
  savedFirstFieldsSpace top: savedFirstFieldsSpace start - manager bytesPerOop!

Item was changed:
  ----- Method: SpurPlanningCompactor>>useFreeChunkForSavedFirstFieldsSpace: (in category 'space management') -----
  useFreeChunkForSavedFirstFieldsSpace: highestSuitableFreeBlock
  "Use the supplied free chunk to hold the savedFirstFieldsSpace. Invoked when
  eden is found not to be big enough for the job. Avoid the first few fields so as
  not to destroy the free chunk and there by confuse object enumeration."
  <inline: true>
+ self assert: (manager validFreeTreeChunk: highestSuitableFreeBlock).
  savedFirstFieldsSpace
  start: highestSuitableFreeBlock + (manager freeChunkLargerIndex * manager bytesPerOop);
  limit: (manager addressAfter: highestSuitableFreeBlock).
  savedFirstFieldsSpaceNotInOldSpace := false.
  self deny: self savedFirstFieldsSpaceWasAllocated!