Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1007.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.1007 Author: eem Time: 1 January 2015, 1:38:43.854 pm UUID: 5ab9382c-cd68-43ef-a5e4-0c107083d0c6 Ancestors: VMMaker.oscog-eem.1006
...and use a signed shift for the 64-bit Spur loadFloatOrIntFrom: check.
=============== Diff against VMMaker.oscog-eem.1006 ===============
Item was changed: ----- Method: Spur64BitMemoryManager>>loadFloatOrIntFrom: (in category 'interpreter access') ----- loadFloatOrIntFrom: floatOrIntOop "If floatOrInt is an integer, then convert it to a C double float and return it. If it is a Float, then load its value and return it. Otherwise fail -- ie return with primErrorCode non-zero."
<inline: true> <returnTypeC: #double> | result tagBits shift | <var: #result type: #double>
(tagBits := floatOrIntOop bitAnd: self tagMask) ~= 0 ifTrue: [tagBits = self smallFloatTag ifTrue: [^self smallFloatValueOf: floatOrIntOop]. (tagBits = self smallIntegerTag and: [shift := 64 - self numTagBits - self smallFloatMantissaBits. (self cCode: [floatOrIntOop << shift] + inSmalltalk: [floatOrIntOop << shift bitAnd: 1 << 64 - 1]) >>> shift = floatOrIntOop]) ifTrue: - inSmalltalk: [floatOrIntOop << shift bitAnd: 1 << 64 - 1]) >> shift = floatOrIntOop]) ifTrue: [^(self integerValueOf: floatOrIntOop) asFloat]] ifFalse: [(self classIndexOf: floatOrIntOop) = ClassFloatCompactIndex ifTrue: [self cCode: '' inSmalltalk: [result := Float new: 2]. self fetchFloatAt: floatOrIntOop + self baseHeaderSize into: result. ^result]]. coInterpreter primitiveFail. ^0.0!
vm-dev@lists.squeakfoundation.org