Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2231.mcz ==================== Summary ==================== Name: VMMaker.oscog-eem.2231 Author: eem Time: 30 May 2017, 7:11:59.716529 pm UUID: de62947a-7f40-4977-a232-e06a3a80c939 Ancestors: VMMaker.oscog-eem.2230 Oops. =============== Diff against VMMaker.oscog-eem.2230 =============== Item was changed: ----- Method: Spur32BitCoMemoryManager>>receiverTagBitsForMethod: (in category 'cog jit support') ----- receiverTagBitsForMethod: aMethodObj "Answer the tag bits for the receiver based on the method's methodClass, if any." <api> | methodClassOrNil | methodClassOrNil := coInterpreter methodClassOf: aMethodObj. NewspeakVM "Mixins don't necessarily have a format inst var; filter out non-integer format." ifTrue: [| instSpec | (methodClassOrNil = nilObj or: [(self isNonIntegerObject: (instSpec := self fetchPointer: InstanceSpecificationIndex ofObject: methodClassOrNil)) + or: [(self instSpecOfClassFormat: (self integerValueOf: instSpec)) ~= self forwardedFormat]]) ifTrue: - or: [(self self instSpecOfClassFormat: (self integerValueOf: instSpec)) ~= self forwardedFormat]]) ifTrue: [^0]] ifFalse: [(methodClassOrNil = nilObj or: [(self instSpecOfClass: methodClassOrNil) ~= self forwardedFormat]) ifTrue: [^0]]. ^methodClassOrNil = (self fetchPointer: self smallIntegerTag ofObject: classTableFirstPage) ifTrue: [self smallIntegerTag] ifFalse: [self assert: methodClassOrNil = (self fetchPointer: self characterTag ofObject: classTableFirstPage). self characterTag]! Item was changed: ----- Method: Spur64BitCoMemoryManager>>receiverTagBitsForMethod: (in category 'cog jit support') ----- receiverTagBitsForMethod: aMethodObj "Answer the tag bits for the receiver based on the method's methodClass, if any." <api> | methodClassOrNil | methodClassOrNil := coInterpreter methodClassOf: aMethodObj. NewspeakVM "Mixins don't necessarily have a format inst var; filter out non-integer format." ifTrue: [| instSpec | (methodClassOrNil = nilObj or: [(self isNonIntegerObject: (instSpec := self fetchPointer: InstanceSpecificationIndex ofObject: methodClassOrNil)) + or: [(self instSpecOfClassFormat: (self integerValueOf: instSpec)) ~= self forwardedFormat]]) ifTrue: - or: [(self self instSpecOfClassFormat: (self integerValueOf: instSpec)) ~= self forwardedFormat]]) ifTrue: [^0]] ifFalse: [(methodClassOrNil = nilObj or: [(self instSpecOfClass: methodClassOrNil) ~= self forwardedFormat]) ifTrue: [^0]]. methodClassOrNil = (self fetchPointer: self smallIntegerTag ofObject: classTableFirstPage) ifTrue: [^self smallIntegerTag]. methodClassOrNil = (self fetchPointer: self characterTag ofObject: classTableFirstPage) ifTrue: [^self characterTag]. self assert: methodClassOrNil = (self fetchPointer: self smallFloatTag ofObject: classTableFirstPage). ^self smallFloatTag! |
Free forum by Nabble | Edit this page |