Eliot Miranda uploaded a new version of Cog to project VM Maker:
http://source.squeak.org/VMMaker/Cog-eem.398.mcz==================== Summary ====================
Name: Cog-eem.398
Author: eem
Time: 10 February 2020, 8:30:46.968067 am
UUID: 86041e39-6533-4fb5-a43d-153f47d1f3e3
Ancestors: Cog-eem.397
Fix Spur64to32BitImageConverter.
=============== Diff against Cog-eem.397 ===============
Item was changed:
----- Method: Spur64to32BitImageConverter>>mapSourceOop: (in category 'bootstrap image') -----
mapSourceOop: sourceObj
"sourceInterpreter printOop: sourceObj"
"Map in-range Floats to SmallFloat64's, and in-range LargePointiveIntegers and LargeNegativeIntegers to SmallInteger"
^map
at: sourceObj
ifAbsent:
[| value box |
self assert: (sourceHeap isImmediate: sourceObj).
(sourceHeap isImmediateCharacter: sourceObj)
ifTrue: [targetHeap characterObjectOf: (sourceHeap characterValueOf: sourceObj)]
ifFalse:
[(sourceHeap isIntegerObject: sourceObj)
ifTrue:
[(targetHeap isIntegerValue: (value := sourceHeap integerValueOf: sourceObj))
ifTrue: [targetHeap integerObjectOf: value]
ifFalse:
[box := targetHeap
+ allocateSlots: value digitLength + 3 // 4
- allocateSlots: 2
format: (targetHeap byteFormatForNumBytes: value digitLength)
classIndex: (value < 0
ifTrue: [ClassLargeNegativeIntegerCompactIndex]
ifFalse: [ClassLargePositiveIntegerCompactIndex]).
targetHeap storeLong64: 0 ofObject: box withValue: value abs.
box]]
ifFalse:
[self assert: (sourceHeap isImmediateFloat: sourceObj).
box := targetHeap
allocateSlots: 2
format: targetHeap firstLongFormat
classIndex: ClassFloatCompactIndex.
targetHeap storeLong64: 0 ofObject: box withValue: (sourceHeap smallFloatBitsOf: sourceObj).
box]]]!
Item was changed:
----- Method: SpurMtoNBitImageConverter>>fillInBitsObject:from: (in category 'bootstrap image') -----
fillInBitsObject: targetObj from: sourceObj
+ 0 to: (sourceHeap numSlotsOf: sourceObj) * (sourceHeap wordSize / 4) - 1 do:
- 0 to: (sourceHeap num32BitUnitsOf: sourceObj) - 1 do:
[:i|
targetHeap
storeLong32: i
ofObject: targetObj
withValue: (sourceHeap fetchLong32: i ofObject: sourceObj)]!