Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1435.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.1435 Author: eem Time: 17 August 2015, 5:08:53.21 pm UUID: 114c4214-dede-4f25-9bbb-c912623d0ef4 Ancestors: VMMaker.oscog-eem.1434
...and don't break it for the 32-bit VMs.
=============== Diff against VMMaker.oscog-eem.1434 ===============
Item was changed: ----- Method: InterpreterPrimitives>>primitiveBitShift (in category 'arithmetic integer primitives') ----- + primitiveBitShift + "Perform a bitShift. In 32-bits deal only with non-negative 32-bit integers. + In 64-bits deal with signed 64-bit quantities (max (2^63)-1)." - primitiveBitShift | integerReceiver integerArgument shifted | <var: #integerReceiver type: #sqInt> integerArgument := self stackTop. (objectMemory isIntegerObject: integerArgument) ifFalse: [^self primitiveFail]. integerReceiver := self stackValue: 1. objectMemory wordSize = 4 ifTrue: [integerReceiver := self positive32BitValueOf: integerReceiver] ifFalse: [integerReceiver := self signed64BitValueOf: integerReceiver]. self successful ifTrue: [(integerArgument := objectMemory integerValueOf: integerArgument) >= 0 ifTrue: "Left shift -- must fail bits would be lost" [integerArgument <= objectMemory numSmallIntegerBits ifFalse: [^self primitiveFail]. shifted := integerReceiver << integerArgument. integerReceiver = (objectMemory wordSize = 4 ifTrue: [shifted >> integerArgument] ifFalse: [shifted >>> integerArgument]) ifFalse: [^self primitiveFail]] ifFalse: "Right shift -- OK to lose bits" [integerArgument >= objectMemory numSmallIntegerBits negated ifFalse: [^self primitiveFail]. + shifted := objectMemory wordSize = 4 + ifTrue: [integerReceiver >> (0 - integerArgument)] + ifFalse: [integerReceiver >>> (0 - integerArgument)]]. - shifted := integerReceiver >>> (0 - integerArgument)]. shifted := objectMemory wordSize = 4 ifTrue: [self positive32BitIntegerFor: shifted] ifFalse: [(objectMemory isIntegerValue: shifted) ifTrue: [objectMemory integerObjectOf: shifted] ifFalse: [self signed64BitIntegerFor: shifted]]. self pop: 2 thenPush: shifted]!
vm-dev@lists.squeakfoundation.org