[Vm-dev] VM Maker: VMMaker.oscog-eem.1064.mcz
commits at source.squeak.org
commits at source.squeak.org
Sat Feb 14 01:49:05 UTC 2015
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1064.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.1064
Author: eem
Time: 13 February 2015, 5:47:49.105 pm
UUID: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
Ancestors: VMMaker.oscog-eem.1063
And take advantage of the better inlining in copyAndForward:
=============== Diff against VMMaker.oscog-eem.1063 ===============
Item was changed:
----- Method: SpurGenerationScavenger>>copyAndForward: (in category 'scavenger') -----
copyAndForward: survivor
"copyAndForward: survivor copies a survivor object either to
futureSurvivorSpace or, if it is to be promoted, to oldSpace.
It leaves a forwarding pointer behind. If the object is weak
then corpse is threaded onto the weakList for later treatment."
<inline: false>
| bytesInObj format tenure newLocation |
self assert: ((manager isInEden: survivor) "cog methods should be excluded."
or: [manager isInPastSpace: survivor]).
bytesInObj := manager bytesInObject: survivor.
format := manager formatOf: survivor.
tenure := self shouldBeTenured: survivor. "Allow Slang to inline."
+ newLocation := (tenure or: [futureSurvivorStart + bytesInObj > futureSpace limit])
+ ifTrue: [self copyToOldSpace: survivor bytes: bytesInObj format: format]
+ ifFalse: [self copyToFutureSpace: survivor bytes: bytesInObj].
- (tenure or: [futureSurvivorStart + bytesInObj > futureSpace limit])
- ifTrue: [newLocation := self copyToOldSpace: survivor bytes: bytesInObj format: format]
- ifFalse: [newLocation := self copyToFutureSpace: survivor bytes: bytesInObj].
manager forwardSurvivor: survivor to: newLocation.
"if weak or ephemeron add to the relevant list for subsequent scanning."
(manager isWeakFormat: format) ifTrue:
[self addToWeakList: survivor].
((manager isEphemeronFormat: format)
and: [(self isScavengeSurvivor: (manager keyOfEphemeron: newLocation)) not]) ifTrue:
[self addToEphemeronList: survivor].
^newLocation!
More information about the Vm-dev
mailing list