[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