Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.789.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.789 Author: eem Time: 28 June 2014, 11:34:29.837 pm UUID: 3a58fbfc-b349-47bd-9bd6-17b66722be2b Ancestors: VMMaker.oscog-eem.788
Fix slip in StackInterpreter>>actuallyFollowNecessaryForwardingInMethod:literalCount: that corrups the methodClassAssociation.
=============== Diff against VMMaker.oscog-eem.788 ===============
Item was changed: ----- Method: CoInterpreter>>actuallyFollowNecessaryForwardingInMethod: (in category 'lazy become') ----- actuallyFollowNecessaryForwardingInMethod: methodObj "To avoid any chance of a forwarded object during super sends we follow the methodClassAssociation. The forwarded object send fault only copes with normal sends to instances." | cogMethod header litCount | <var: #cogMethod type: #'CogMethod *'> header := self rawHeaderOf: methodObj. (self isCogMethodReference: header) ifTrue: [cogMethod := self cCoerceSimple: header to: #'CogMethod *'. "If the method class is not used we can avoid the forwarding + check for both the cogMethod and the bytecoded method." - check for both the cogMehod and the bytecoded method." cogMethod cmUsesMethodClass ifFalse: [^self]. cogit followForwardedLiteralsIn: cogMethod. header := cogMethod methodHeader]. litCount := self literalCountOfHeader: header. "Slang super expansion limitation" super actuallyFollowNecessaryForwardingInMethod: methodObj literalCount: litCount!
Item was changed: ----- Method: StackInterpreter>>actuallyFollowNecessaryForwardingInMethod:literalCount: (in category 'lazy become') ----- actuallyFollowNecessaryForwardingInMethod: methodObj literalCount: litCount "To avoid any chance of a forwarded object during super sends we follow the methodClassAssociation. The forwarded object send fault only copes with normal sends to instances. Inline methodClassAssociation access for speed." | assoc classObj | <option: #SpurObjectMemory> <inline: true> assoc := self literal: litCount - 1 ofMethod: methodObj. (objectMemory isForwarded: assoc) ifTrue: [assoc := objectMemory followForwarded: assoc. objectMemory storePointer: litCount + LiteralStart - 1 ofObject: methodObj withValue: assoc]. (objectMemory numSlotsOf: assoc) >= (ValueIndex + 1) ifTrue: [classObj := objectMemory fetchPointer: ValueIndex ofObject: assoc. (objectMemory isForwarded: classObj) ifTrue: + [classObj := objectMemory followForwarded: classObj. - [classObj := objectMemory followForwarded: assoc. objectMemory storePointer: ValueIndex ofObject: assoc withValue: classObj]]!
vm-dev@lists.squeakfoundation.org