VM Maker: ..VMMaker.oscog-eem.616.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.616.mcz

commits-2
 
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!