[Vm-dev] VM Maker: ..VMMaker.oscog-eem.616.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Feb 13 04:39:36 UTC 2014


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

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

Name: ..VMMaker.oscog-eem.616
Author: eem
Time: 12 February 2014, 8:33:36.811 pm
UUID: 37fac92f-2bc3-4414-9fd6-4c5ac1378e46
Ancestors: .VMMaker.oscog-eem.615

Fix a Slang snafu in the last commit

=============== Diff against .VMMaker.oscog-eem.615 ===============

Item was changed:
  ----- Method: SpurSegmentManager>>postSnapshot (in category 'snapshot') -----
  postSnapshot
  	"Restore all shortened segments to their proper size,
  	 re-freeing the trailing space."
  	numSegments - 1 to: 0 by: -1 do:
  		[:i|
  		 (segments at: i) lastFreeObject ifNotNil:
  			[:freeChunk| | address |
  			address := (segments at: i) segLimit - manager bridgeSize.
  			(segments at: i) segSize: (segments at: i) savedSegSize.
+ 			self bridgeFrom: (self addressOf: (segments at: i))
+ 				to: (i < (numSegments - 1) ifTrue: [self addressOf: (segments at: i + 1)]).
- 			self bridgeFrom: (segments at: i)
- 				to: (i < (numSegments - 1) ifTrue: [segments at: i + 1]).
  			manager
  				addFreeChunkWithBytes: (segments at: i) segLimit - address - manager bridgeSize
  				at: address]].
  
  	"perhaps this should read
  		manager setEndOfMemory: 0; assimilateNewSegment: (segments at: numSegments - 1)"
  	manager setEndOfMemory: (segments at: numSegments - 1) segLimit - manager bridgeSize!

Item was changed:
  ----- Method: SpurSegmentManager>>prepareForSnapshot (in category 'snapshot') -----
  prepareForSnapshot
  	"shorten all segments by any trailing free space."
  	<var: #seg type: #'SpurSegmentInfo *'>
  	0 to: numSegments - 1 do:
  		[:i|
  		 (segments at: i)
  			savedSegSize: (segments at: i) segSize;
  			lastFreeObject: nil].
  
  	"Ideally finding the lastFreeObject of each segment would be
  	 done in some linear pass through the heap.  But for now KISS."
  	manager freeTreeNodesDo:
  		[:freeChunk| | next seg |
+ 		 next := manager objectAfter: freeChunk limit: manager endOfMemory.
+ 		 (manager isSegmentBridge: next) ifTrue:
- 		next := manager objectAfter: freeChunk limit: manager endOfMemory.
- 		(manager isSegmentBridge: next) ifTrue:
  			[seg := self segmentContainingObj: freeChunk.
  			 seg lastFreeObject: freeChunk].
+ 		 freeChunk].
- 		freeChunk].
  
  	0 to: numSegments - 1 do:
  		[:i|
  		 (segments at: i) lastFreeObject ifNotNil:
  			[:freeChunk|
  			manager detachFreeObject: freeChunk.
  			(segments at: i)
  				segSize: (manager startOfObject: freeChunk)
  						+ manager bridgeSize
  						- (segments at: i) segStart.
+ 			self bridgeFrom: (self addressOf: (segments at: i))
+ 				to: (i < (numSegments - 1) ifTrue: [self addressOf: (segments at: i + 1)])]].
- 			self bridgeFrom: (segments at: i)
- 				to: (i < (numSegments - 1) ifTrue: [segments at: i + 1])]].
  
  	"perhaps this should read
  		manager setEndOfMemory: 0; assimilateNewSegment: (segments at: numSegments - 1)"
  	manager setEndOfMemory: (segments at: numSegments - 1) segLimit - manager bridgeSize!



More information about the Vm-dev mailing list