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

commits at source.squeak.org commits at source.squeak.org
Thu Sep 5 00:29:05 UTC 2013

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

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

Name: Cog-eem.70
Author: eem
Time: 4 September 2013, 5:28:45.984 pm
UUID: 1cf5db5c-444b-434d-bd7e-3deae50eee2a
Ancestors: Cog-eem.69

Rename fetchClassOfNonInt: to fetchClassOfNonImm:.

=============== Diff against Cog-eem.69 ===============

Item was changed:
  ----- Method: SpurBootstrap>>buildClassMap (in category 'bootstrap') -----
  	"enumerate all objects asking isBehavior:?  (class == Metaclass or class class == Metaclass) doesn't work for Newspeak"
  	"Build a map from all classes in oldHeap to a class index.
  	 ONLY DEALS WITH CLASSES THAT HAVE INSTANCES!!!! (can walk superclass chain?  Can walk subclasses set? Can ask class == Metaclass or class class == Metaclass class?)"
  	| classes classTableIndex |
  	self defineKnownClassIndices.
  	classes := classToIndex keys asSet.
  	classTableIndex := newHeap classTablePageSize.
  	oldHeap allObjectsDo:
  		[:oldObj| | oldClass |
+ 		 oldClass := oldHeap fetchClassOfNonImm: oldObj.
- 		 oldClass := oldHeap fetchClassOfNonInt: oldObj.
  		 (classes includes: oldClass) ifFalse:
  			[classes add: oldClass.
  			 classToIndex at: oldClass put: (classTableIndex := classTableIndex + 1)]]!

Item was changed:
  ----- Method: SpurBootstrap>>cloneNilTrueAndFalse (in category 'bootstrap') -----
  	{	oldHeap nilObject.
  		oldHeap falseObject.
  		oldHeap trueObject. }
  		with: (self firstOrdinaryClassIndex to: self firstOrdinaryClassIndex + 2)
  		do: [:obj :classIndex|
+ 			classToIndex at: (oldHeap fetchClassOfNonImm: obj) put: classIndex.
- 			classToIndex at: (oldHeap fetchClassOfNonInt: obj) put: classIndex.
  			self clone: obj classIndex: classIndex].
  		nilObject: (map at: oldHeap nilObject); "needed for nilling objects etc"
  		falseObject: (map at: oldHeap falseObject);
  		trueObject: (map at: oldHeap trueObject)!

Item was changed:
  ----- Method: SpurBootstrap>>cloneObjects (in category 'bootstrap') -----
  	| characterClass characterTable oldObj oldClass |
  	characterClass := oldHeap classCharacter.
  	characterTable := oldHeap characterTable.
  	oldObj := oldHeap objectAfter: oldHeap trueObject.
  	[oldObj < oldHeap freeStart] whileTrue:
+ 		[oldClass := oldHeap fetchClassOfNonImm: oldObj.
- 		[oldClass := oldHeap fetchClassOfNonInt: oldObj.
  		 (oldObj ~= characterTable
  		 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') -----
  fillInPointerObject: newObj from: oldObj
  	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
  									ifTrue: [newHeap nilObject]
+ 										[self assert: (oldHeap fetchClassOfNonImm: oldValue) = oldHeap classCharacter.
- 										[self assert: (oldHeap fetchClassOfNonInt: oldValue) = oldHeap classCharacter.
  										 newHeap characterObjectOf:
  											(oldHeap integerValueOf:
  												(oldHeap fetchPointer: CharacterValueIndex ofObject: oldValue))]]].
  			storePointerUnchecked: i
  			ofObject: newObj
  			withValue: newValue]!

More information about the Vm-dev mailing list