[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:
http://source.squeak.org/VMMaker/Cog-eem.81.mcz
==================== 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') -----
cloneObjects
+ | 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]
ifFalse:
[map at: oldValue ifAbsent:
+ [(oldValue = oldHeap characterTable
+
+ or: [oldValue = (oldHeap splObj: CompactClasses)])
- [oldValue = oldHeap characterTable
ifTrue: [newHeap nilObject]
ifFalse:
[self assert: (oldHeap fetchClassOfNonImm: oldValue) = oldHeap classCharacter.
newHeap characterObjectOf:
(oldHeap integerValueOf:
(oldHeap fetchPointer: CharacterValueIndex ofObject: oldValue))]]].
newHeap
storePointerUnchecked: i
ofObject: newObj
withValue: newValue].
(classToIndex includesKey: oldObj) ifTrue:
[newHeap
storePointerUnchecked: InstanceSpecificationIndex
ofObject: newObj
withValue: (self newClassFormatFor: oldObj)]!
More information about the Vm-dev
mailing list