[Vm-dev] VM Maker: VMMaker.oscog-eem.730.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed May 21 18:44:59 UTC 2014
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.730.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.730
Author: eem
Time: 21 May 2014, 11:42:14.362 am
UUID: 721dc8e5-985a-41a1-8e5d-09d9095df7d8
Ancestors: VMMaker.oscog-eem.729
more typos :-/
=============== Diff against VMMaker.oscog-eem.729 ===============
Item was changed:
----- Method: SpurSegmentManager>>findEmptySegNearestInSizeTo: (in category 'growing/shrinking memory') -----
findEmptySegNearestInSizeTo: size
| seg best delta |
+ <var: #seg type: #'SpurSegmentInfo *'>
- <var: #seg type: #'SegmentInfo *'>
best := nil.
delta := size.
0 to: numSegments - 1 do:
[:i|
seg := self addressOf: (segments at: i).
(self isEmptySegment: seg) ifTrue:
[best
ifNil: [best := seg]
ifNotNil:
[(size >= (seg segSize * 0.75)
and: [(seg segSize - size) abs < delta]) ifTrue:
[best := seg. delta := (seg segSize - size) abs]]]].
^best!
Item was changed:
----- Method: SpurSegmentManager>>indexOfSegment: (in category 'growing/shrinking memory') -----
indexOfSegment: seg
+ <var: #seg type: #'SpurSegmentInfo *'>
- <var: #seg type: #'SegmentInfo *'>
0 to: numSegments - 1 do:
[:i|
seg segStart = (segments at: i) segStart ifTrue:
[^i]].
self error: 'segment not found'!
Item was changed:
----- Method: SpurSegmentManager>>isEmptySegment: (in category 'growing/shrinking memory') -----
isEmptySegment: seg
+ <var: #seg type: #'SpurSegmentInfo *'>
- <var: #seg type: #'SegmentInfo *'>
| firstObj |
firstObj := manager objectStartingAt: seg segStart.
^(manager isFreeObject: firstObj)
and: [(manager addressAfter: firstObj) = (seg segLimit - manager bridgeSize)]!
Item was changed:
----- Method: SpurSegmentManager>>shrinkObjectMemory: (in category 'growing/shrinking memory') -----
shrinkObjectMemory: delta
| shrinkage emptySeg |
+ <var: #emptySeg type: #'SpurSegmentInfo *'>
- <var: #emptySeg type: #'SegmentInfo *'>
shrinkage := delta.
[emptySeg := self findEmptySegNearestInSizeTo: shrinkage.
emptySeg notNil] whileTrue:
[shrinkage := shrinkage - emptySeg segSize.
manager detachFreeObject: (manager objectStartingAt: emptySeg segStart).
self removeSegment: emptySeg]!
More information about the Vm-dev
mailing list