VM Maker: VMMaker.oscog-cb.2391.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-cb.2391.mcz

commits-2
 
ClementBera uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-cb.2391.mcz

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

Name: VMMaker.oscog-cb.2391
Author: cb
Time: 30 May 2018, 1:25:41.60048 pm
UUID: 512c06ed-a9e4-42b9-ad6b-52590c7e5c42
Ancestors: VMMaker.oscog-cb.2390

Fixed a bug in Selective Compactor where remembered objects were incorrectly copied.

Finally hard stressing benchs pass...

Now reworking with production images. I need to move everything to 64 bits (Running an image up to 30Gb).

=============== Diff against VMMaker.oscog-cb.2390 ===============

Item was changed:
  ----- Method: SpurSelectiveCompactor>>compactSegment:freeStart: (in category 'compaction') -----
  compactSegment: segInfo freeStart: initialFreeStart
  <var: 'segInfo' type: #'SpurSegmentInfo *'>
+ | currentEntity fillStart bytesToCopy bridge copy |
- | currentEntity fillStart bytesToCopy numSlots bridge |
  fillStart := initialFreeStart.
  bridge := manager segmentManager bridgeFor: segInfo.
  currentEntity := manager objectStartingAt: segInfo segStart.
  [self oop: currentEntity isLessThan: bridge] whileTrue:
  [(manager isFreeObject: currentEntity)
  ifTrue:
  ["To avoid confusing too much Spur (especially the leak/free checks), we mark the free chunk as a word object."
  manager detachFreeObject: currentEntity.
  manager set: currentEntity classIndexTo: manager wordSizeClassIndexPun formatTo: manager wordIndexableFormat]
  ifFalse:
  ["Copy the object in segmentToFill and replace it by a forwarder."
  self assert: (manager isPinned: currentEntity) not.
- numSlots := manager numSlotsOfAny: currentEntity.
  bytesToCopy := manager bytesInObject: currentEntity.
  manager mem: fillStart asVoidPointer cp: (manager startOfObject: currentEntity) asVoidPointer y: bytesToCopy.
+ copy := manager objectStartingAt: fillStart.
+ (manager isRemembered: copy) ifTrue:
+ ["copy has the remembered bit set, but is not in the remembered table."
+ manager setIsRememberedOf: copy to: false.
+ scavenger remember: copy].
  manager forward: currentEntity to: (manager objectStartingAt: fillStart).
  fillStart := fillStart + bytesToCopy.
  self assert: (self oop: fillStart isLessThan: (segmentToFill segLimit - manager bridgeSize))].
  currentEntity := manager objectAfter: currentEntity limit: manager endOfMemory].
  self assert: currentEntity = bridge.
-
- "| beingCompacted sz |
- beingCompacted := OrderedCollection new.
- sz := 0.
- 0 to: manager numSegments - 1 do:
- [:i| | segInfo |
- segInfo := self addressOf: (manager segmentManager segments at: i).
- (self isSegmentBeingCompacted: segInfo) ifTrue: [beingCompacted add: segInfo]].
- Transcript show: 'Segment being compacted: ' ,
- (beingCompacted collect: [:seg |
- sz := sz + (self  sizeClaimedIn: seg).
- (manager segmentManager indexOfSegment: seg) printString ,
- ' sizeClaimed: ' , (self  sizeClaimedIn: seg).
- ]) asArray printString.
- Transcript cr; show: 'Claimed size: '.
- Transcript show: sz.
- Transcript cr; show: 'SegToFill size: '.
- Transcript show: segmentToFill segSize .
- Transcript cr; show: 'SegToFill limit: '.
- Transcript show: segmentToFill segLimit - manager bridgeSize .
- Transcript cr; show: 'fillStart: '.
- Transcript show: fillStart.
-
- Transcript show: 'Normally grow up to ' , (segmentToFill segStart +  sz) printString."
-
  ^ fillStart!