[Vm-dev] VM Maker: VMMaker.oscog-eem.789.mcz
commits at source.squeak.org
commits at source.squeak.org
Sun Jun 29 06:21:03 UTC 2014
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]]!
More information about the Vm-dev
mailing list