Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1034.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.1034 Author: eem Time: 30 January 2015, 6:12:49.023 pm UUID: 1a93b31c-cf2c-4a2c-b53f-9eae1d7863c7 Ancestors: VMMaker.oscog-eem.1032
Clarify and ensure that we always follow receivers after any become to ensure that e.g. super sends on non-pointer receivers (which don't check) will have unforwarded receivers and hence any primitives that don't validate their receivers will function correctly. Better safe than sorry.
Don't prune unreachable code in plugins since the pruning code doesn't yet work correctly for them. (skip VMMaker.oscog-eem.1033)
=============== Diff against VMMaker.oscog-eem.1032 ===============
Item was changed: ----- Method: StackInterpreter>>spurPostBecomeAction: (in category 'object memory support') ----- spurPostBecomeAction: theBecomeEffectsFlags "Insulate the stack zone from the effects of a become. All receivers must be unfollowed for two reasons: 1. inst var access is direct with no read barrier 2. super sends (always to the receiver) have no class check and so don't trap + for forwarded receivers. This is an issue for primitives that assume their receiver + is valid and don't validate. - for forwarded receivers. Methods must be unfollowed since bytecode access is direct with no read barrier. But this only needs to be done if the becomeEffectsFlags indicate that a CompiledMethod was becommed. The scheduler state must be followed, but only if the becomeEffectsFlags indicate that a pointer object was becommed." <option: #SpurObjectMemory> <inline: false> "For VM profiling" + self followForwardingPointersInStackZone: theBecomeEffectsFlags. theBecomeEffectsFlags ~= 0 ifTrue: + [(theBecomeEffectsFlags anyMask: BecameCompiledMethodFlag) ifTrue: - ["(theBecomeEffectsFlags anyMask: BecamePointerObjectFlag+BecameCompiledMethodFlag) ifTrue: - ["self followForwardingPointersInStackZone: theBecomeEffectsFlags"]". - (theBecomeEffectsFlags anyMask: BecameCompiledMethodFlag) ifTrue: [self followForwardedMethodsInMethodCache. self followForwardedMethodsInMethodZone]. "for CoInterpreter" (theBecomeEffectsFlags anyMask: BecameActiveClassFlag) ifTrue: [self flushBecommedClassesInMethodCache. self flushBecommedClassesInMethodZone]. "for CoInterpreter" self followForwardingPointersInScheduler. self followForwardingPointersInSpecialObjectsArray. self followForwardingPointersInProfileState]!
vm-dev@lists.squeakfoundation.org