[Vm-dev] VM Maker: Cog-eem.81.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Sep 10 17:10:07 UTC 2013

Eliot Miranda uploaded a new version of Cog to project VM Maker:

==================== Summary ====================

Name: Cog-eem.81
Author: eem
Time: 10 September 2013, 10:09:40.374 am
UUID: d7f23208-c524-4324-80fc-94825f5e847d
Ancestors: Cog-eem.80

Eliminate compactClassesArray from bootstrapped Spur image.

=============== Diff against Cog-eem.80 ===============

Item was changed:
  ----- Method: SpurBootstrap>>cloneObjects (in category 'bootstrap image') -----
+ 	| characterClass characterTable compactClasses oldObj oldClass |
- 	| characterClass characterTable oldObj oldClass |
  	characterClass := oldHeap classCharacter.
  	characterTable := oldHeap characterTable.
+ 	compactClasses := oldHeap splObj: CompactClasses.
  	oldObj := oldHeap objectAfter: oldHeap trueObject.
  	[oldObj < oldHeap freeStart] whileTrue:
  		[oldClass := oldHeap fetchClassOfNonImm: oldObj.
  		 (oldObj ~= characterTable
+ 		 and: [oldObj ~= compactClasses
+ 		 and: [oldClass ~= characterClass]]) ifTrue:
- 		 and: [oldClass ~= characterClass]) ifTrue:
  			[self clone: oldObj classIndex: (classToIndex at: oldClass)].
  		 oldObj := oldHeap objectAfter: oldObj].
  	newHeap specialObjectsOop: (map at: oldHeap specialObjectsOop)!

Item was changed:
  ----- Method: SpurBootstrap>>fillInPointerObject:from: (in category 'bootstrap image') -----
  fillInPointerObject: newObj from: oldObj
+ 	"Fill-in a newObj with appropriately mapped contents from oldObj.
+ 	 Filter-out the character table and the compact classes array.
+ 	 Map character objects to immediate characters."
  	0 to: (oldHeap lastPointerOf: oldObj) / oldHeap bytesPerWord - 1 do:
  		[:i| | oldValue newValue |
  		oldValue := oldHeap fetchPointer: i ofObject: oldObj.
  		newValue := (oldHeap isIntegerObject: oldValue)
  						ifTrue: [oldValue]
  							[map at: oldValue ifAbsent:
+ 								[(oldValue = oldHeap characterTable
+ 								   or: [oldValue = (oldHeap splObj: CompactClasses)])
- 								[oldValue = oldHeap characterTable
  									ifTrue: [newHeap nilObject]
  										[self assert: (oldHeap fetchClassOfNonImm: oldValue) = oldHeap classCharacter.
  										 newHeap characterObjectOf:
  											(oldHeap integerValueOf:
  												(oldHeap fetchPointer: CharacterValueIndex ofObject: oldValue))]]].
  			storePointerUnchecked: i
  			ofObject: newObj
  			withValue: newValue].
  	(classToIndex includesKey: oldObj) ifTrue:
  			storePointerUnchecked: InstanceSpecificationIndex
  			ofObject: newObj
  			withValue: (self newClassFormatFor: oldObj)]!

More information about the Vm-dev mailing list