Eliot Miranda uploaded a new version of Cog to project VM Maker:
http://source.squeak.org/VMMaker/Cog-eem.400.mcz==================== Summary ====================
Name: Cog-eem.400
Author: eem
Time: 11 February 2020, 11:25:28.523494 am
UUID: 43ed320e-f5e3-4d45-b136-f448de9c20de
Ancestors: Cog-eem.399
Ecstacy:
M SpurMtoNBitImageConverter>>alterSystem
D SpurMtoNBitImageConverter>>flipWordSize
A SpurMtoNBitImageConverter>>nilWordSize
Have the converter properly void SmalltalkImage classPool at: #WordSize.
We want to void it rather than nil it so that we know that we have some signal of being in a newly converted image. It takes an insignificant amoputn of tme to compute WordSize the first timne, and having this hook could be useful for applications that introduce word-size dependencies the image converters are ignorant of.
=============== Diff against Cog-eem.399 ===============
Item was changed:
----- Method: SpurMtoNBitImageConverter>>alterSystem (in category 'bootstrap image') -----
alterSystem
self ensureSmallFloatInClassTable.
+ self nilWordSize!
- self flipWordSize!
Item was removed:
- ----- Method: SpurMtoNBitImageConverter>>flipWordSize (in category 'bootstrap image') -----
- flipWordSize
- | wordSizeSym |
- wordSizeSym := self findSymbol: #WordSize.
- targetHeap allOldSpaceObjectsDo:
- [:o|
- ((targetHeap rawNumSlotsOf: o) > ValueIndex
- and: [(targetHeap isFixedSizePointerFormat: (targetHeap formatOf: o))
- and: [(targetHeap fetchPointer: KeyIndex ofObject: o) = wordSizeSym
- and: [(targetHeap fetchPointer: ValueIndex ofObject: o) = (targetHeap integerObjectOf: sourceHeap bytesPerOop)]]]) ifTrue:
- [targetHeap
- storePointerUnchecked: ValueIndex
- ofObject: o
- withValue: (targetHeap integerObjectOf: targetHeap bytesPerOop)]]!
Item was added:
+ ----- Method: SpurMtoNBitImageConverter>>nilWordSize (in category 'bootstrap image') -----
+ nilWordSize
+ | wordSizeSym |
+ wordSizeSym := self findSymbol: #WordSize.
+ targetHeap allOldSpaceObjectsDo:
+ [:o|
+ ((targetHeap rawNumSlotsOf: o) > ValueIndex
+ and: [(targetHeap isFixedSizePointerFormat: (targetHeap formatOf: o))
+ and: [(targetHeap fetchPointer: KeyIndex ofObject: o) = wordSizeSym
+ and: [(targetHeap fetchPointer: ValueIndex ofObject: o) = (targetHeap integerObjectOf: sourceHeap bytesPerOop)]]]) ifTrue:
+ [targetHeap storePointer: ValueIndex ofObject: o withValue: targetHeap nilObject]]!