... at http://www.mirandabanda.org/files/Cog/VM/VM.r3085/.
CogVM binaries as per VMMaker.oscog-eem.887/r3085
Spur: Change become to flush method caches for becommed classes.
Changes are to - add a BecameActiveClassFlag to becomeEffectsFlags - refuse to do an in-place become on active classes. - flush the caches before the post-become scan of the class table so that forwarded classes can be spotted. i.e. if a class index in a method cache is that of a forwarded class then it was becommed and the cache entry can be voided.
Fix bug in sweepToFollowForwardersForPigCompact which failed to update and answer lowest forwarder. Fixes numForwarders == 0 assert failures.
Fix bug with become and class table not removing classes which become causes them to be unhashed.
Fix bogus assert fail in synchronousSignal:. Refactor following code into ensureSemaphoreForwardedThroughContext: and fix the assert there-in.
Use rawOverflowSlotsOf: in bytesInObject:.
Cogit: Make sure voidImplicitReceiverCacheAt: sets codeModified if IRCs are inline.
Make sure freeMethod: clears cmRefersToYoung
Fix assert in cogitPostGCAction: that would fire erroneously in Spur become.
Fix regression in V3 become youngReferrers management in VMMaker.oscog-eem.882. We /must/ prune young referrers if mapObjectReferencesInMachineCodeForBecome removes a cog method from youngReferrers because it may get added back and youngReferrers cannot contain duplicates.
Fix potential bug in Spur become argument validation. Check for immediates needs to come /after/ following forwarders since an object can become-forward to an immediate.
Fix cPICHasForwardedClass:; this did /not/ enumerate the classIndices in a Spur Closed PIC.
Install the callPrimitiveBytecode in the Interpreter's bytecodeDispatchTable on Spur.
Modify callPrimitiveBytecode to not invoke unknownBytecode processing if at the first bytecode of a primitive method.
Correct sign comparison of instructionPointer in justActivateNewMethod.
Relax the validInstructionPointer:inMethod:framePointer: assert to accept any pc in initialPC to self size range now that callPrimitiveBytecode is more forgiving.
Speed up primitiveMarkUnwindMethod & primitiveMarkHandlerMethod in the StackInterpreter by setting them to 0 in the primitive table.
With latest windows SpurVm the test 1 to: 50 do:[: i | Browser open] runs without any crash.
I have not tested the VM much othervice, but it looks much more stable.
Best regards, Karl
On Tue, Sep 30, 2014 at 5:21 AM, Eliot Miranda eliot.miranda@gmail.com wrote:
... at http://www.mirandabanda.org/files/Cog/VM/VM.r3085/.
CogVM binaries as per VMMaker.oscog-eem.887/r3085
Spur: Change become to flush method caches for becommed classes.
Changes are to
- add a BecameActiveClassFlag to becomeEffectsFlags
- refuse to do an in-place become on active classes.
- flush the caches before the post-become scan of the class table so that
forwarded classes can be spotted. i.e. if a class index in a method cache is that of a forwarded class then it was becommed and the cache entry can be voided.
Fix bug in sweepToFollowForwardersForPigCompact which failed to update and answer lowest forwarder. Fixes numForwarders == 0 assert failures.
Fix bug with become and class table not removing classes which become causes them to be unhashed.
Fix bogus assert fail in synchronousSignal:. Refactor following code into ensureSemaphoreForwardedThroughContext: and fix the assert there-in.
Use rawOverflowSlotsOf: in bytesInObject:.
Cogit: Make sure voidImplicitReceiverCacheAt: sets codeModified if IRCs are inline.
Make sure freeMethod: clears cmRefersToYoung
Fix assert in cogitPostGCAction: that would fire erroneously in Spur become.
Fix regression in V3 become youngReferrers management in VMMaker.oscog-eem.882. We /must/ prune young referrers if mapObjectReferencesInMachineCodeForBecome removes a cog method from youngReferrers because it may get added back and youngReferrers cannot contain duplicates.
Fix potential bug in Spur become argument validation. Check for immediates needs to come /after/ following forwarders since an object can become-forward to an immediate.
Fix cPICHasForwardedClass:; this did /not/ enumerate the classIndices in a Spur Closed PIC.
Install the callPrimitiveBytecode in the Interpreter's bytecodeDispatchTable on Spur.
Modify callPrimitiveBytecode to not invoke unknownBytecode processing if at the first bytecode of a primitive method.
Correct sign comparison of instructionPointer in justActivateNewMethod.
Relax the validInstructionPointer:inMethod:framePointer: assert to accept any pc in initialPC to self size range now that callPrimitiveBytecode is more forgiving.
Speed up primitiveMarkUnwindMethod & primitiveMarkHandlerMethod in the StackInterpreter by setting them to 0 in the primitive table.
-- best, Eliot
vm-dev@lists.squeakfoundation.org