Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2947.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2947 Author: eem Time: 16 March 2021, 12:55:58.857415 pm UUID: 009d2db3-059e-4852-8a76-567d6ee0e2d2 Ancestors: VMMaker.oscog-eem.2946
Fix a dreadful slip in InterpreterPrimitives>>primitiveIdentical. In the one argument case the old implementation checked the receiver for being forwarded rather than the argument. This means that the interpreter and/or the debugger will answer the wrong value for e.g. ObjectTest testBecomeForward pt3 == pt2.
=============== Diff against VMMaker.oscog-eem.2946 ===============
Item was changed: ----- Method: InterpreterPrimitives>>primitiveIdentical (in category 'object access primitives') ----- primitiveIdentical "is the receiver/first argument the same object as the (last) argument?. pop argumentCount because this can be used as a mirror primitive." | thisObject otherObject | + thisObject := self stackValue: 1. + otherObject := self stackTop. - otherObject := self stackValue: 1. - thisObject := self stackTop. ((objectMemory isOopForwarded: otherObject) or: [argumentCount > 1 and: [objectMemory isOopForwarded: thisObject]]) ifTrue: [self primitiveFailFor: PrimErrBadArgument] ifFalse: [self pop: argumentCount + 1 thenPushBool: thisObject = otherObject]!
Item was changed: ----- Method: StackInterpreterSimulator>>primitiveDoPrimitiveWithArgs (in category 'debugging traps') ----- primitiveDoPrimitiveWithArgs + | primIndex | + primIndex := objectMemory integerValueOf: (self stackValue: 1). + NewspeakVM ifFalse: + [transcript nextPutAll: 'DO PRIMITIVE: '; print: (self functionPointerFor: primIndex inClass: nil); cr; flush]. + (#(110) includes: primIndex) ifTrue: + [self halt]. - NewspeakVM ifFalse: [self halt]. ^super primitiveDoPrimitiveWithArgs!
vm-dev@lists.squeakfoundation.org