[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