... at http://www.mirandabanda.org/files/Cog/VM/VM.r3056/.
CogVM binaries as per VMMaker.oscog-eem.832/r3056 Add the time zone to the version info on Mac OS X and Win32.
Fix bug in assigning parameter 55 (growth ratio at which to do a global GC).
Add vmParameter 52 to answer the capacity of the root table (in Spur a.k.a. the rememberedSet).
In the wake of the inlining change below (see Slang:), split lookupInMethodCacheSel:classTag: into inlineLookupInMethodCacheSel:classTag:, and use the inline version in internalFindNewMethod.
Fix printStringOf: (used in e.g. frame print) to not print crs that would cause previous info to be overwritten.
Spur: Fix bug with class table management and two-way become. Because two-way become may do an in-place swap obj1 & obj2 in SpurMemoryManager>>doBecome:and:copyHash: may not be forwarded after the inner become. Hence they should not be followed if not forwarded. The bug manifested as Object's identityHash changing: superclass is the first slot in a class. Following an unforwarded subclass of object yields Object. Setting the hash bits of the followed object smashes Object's identityHash. Thanks to Stephane Rollandin for finding the bug.
More rationalization of the class table management post become. Now no post become scan of the class table is necessary at all.
Add vm parameter 53 to answer the number of segments.
Move the rememberedSet into a pinned object in oldSpace. Allow it to grow on demand, starting at 1k entries, doubling on each grow. Make sure to abort if the attempt to grow the remembered set fails. Try to grow by another 1k slots if doubling fails, then abort.
Revise markAndTrace: given that markAndShouldScan: is inlined within it (see Slang changes below). Move the ephemeron processing into markAndShouldScan: out of the now unused numStringSlotsOf:ephemeronInactiveIf: circumlocution. Add activeAndDeferredScan: and numStrongSlotsOfInephemeral: in place of the double negative inactiveOrFailedToDeferScan: and hence inline numStrongSlotsOfInephemeral:. Increase the traceImmediatelySlotLimit. These changes plus the 2 repeats for compaction speed up global GC by at least x2.
Change the defaultEdenBytes to 4Mb.
Allow the number of compaction passes to vary, 2 on GC, 3 on GC for snapshot.
Slang: Add support for inlining into the condition of ifTrue:/ifFalse: when it is marked as inline. Transform expr1 ifTrue:/ifFalse: [^expr2] by inlining ^expr2 into expr1. Transform expr ifTrue:/ifFalse: [statements] by replacing ^boolean occurrences in expr with gotos.
Hi Eliot,
When you publish these are there things the general community can do to help you out with testing? Things you're interested in knowing/learning?
Thanks for whatever guidance you care to provide
Paul
Eliot Miranda-2 wrote
... at http://www.mirandabanda.org/files/Cog/VM/VM.r3056/.
CogVM binaries as per VMMaker.oscog-eem.832/r3056 Add the time zone to the version info on Mac OS X and Win32.
Fix bug in assigning parameter 55 (growth ratio at which to do a global GC).
Add vmParameter 52 to answer the capacity of the root table (in Spur a.k.a. the rememberedSet).
In the wake of the inlining change below (see Slang:), split lookupInMethodCacheSel:classTag: into inlineLookupInMethodCacheSel:classTag:, and use the inline version in internalFindNewMethod.
Fix printStringOf: (used in e.g. frame print) to not print crs that would cause previous info to be overwritten.
Spur: Fix bug with class table management and two-way become. Because two-way become may do an in-place swap obj1 & obj2 in SpurMemoryManager>>doBecome:and:copyHash: may not be forwarded after the inner become. Hence they should not be followed if not forwarded. The bug manifested as Object's identityHash changing: superclass is the first slot in a class. Following an unforwarded subclass of object yields Object. Setting the hash bits of the followed object smashes Object's identityHash. Thanks to Stephane Rollandin for finding the bug.
More rationalization of the class table management post become. Now no post become scan of the class table is necessary at all.
Add vm parameter 53 to answer the number of segments.
Move the rememberedSet into a pinned object in oldSpace. Allow it to grow on demand, starting at 1k entries, doubling on each grow. Make sure to abort if the attempt to grow the remembered set fails. Try to grow by another 1k slots if doubling fails, then abort.
Revise markAndTrace: given that markAndShouldScan: is inlined within it (see Slang changes below). Move the ephemeron processing into markAndShouldScan: out of the now unused numStringSlotsOf:ephemeronInactiveIf: circumlocution. Add activeAndDeferredScan: and numStrongSlotsOfInephemeral: in place of the double negative inactiveOrFailedToDeferScan: and hence inline numStrongSlotsOfInephemeral:. Increase the traceImmediatelySlotLimit. These changes plus the 2 repeats for compaction speed up global GC by at least x2.
Change the defaultEdenBytes to 4Mb.
Allow the number of compaction passes to vary, 2 on GC, 3 on GC for snapshot.
Slang: Add support for inlining into the condition of ifTrue:/ifFalse: when it is marked as inline. Transform expr1 ifTrue:/ifFalse: [^expr2] by inlining ^expr2 into expr1. Transform expr ifTrue:/ifFalse: [statements] by replacing ^boolean occurrences in expr with gotos. -- Aloha, Eliot
-- View this message in context: http://forum.world.st/New-CogVMs-available-tp4769982p4770016.html Sent from the Squeak VM mailing list archive at Nabble.com.
Hi Paul,
On Thu, Jul 24, 2014 at 8:13 PM, Paul DeBruicker pdebruic@gmail.com wrote:
Hi Eliot,
When you publish these are there things the general community can do to help you out with testing? Things you're interested in knowing/learning?
Yes. I'd love to know if the VMs are good or bad. For example, if you have substantial benchmarks (perhaps a build script you often run) I'd love to know whether builds have any marked impact on performance, or whether they break.
Right now there are two CI jobs that test the VMs, one by Frank Shearer that runs the trunk Squeak test suite, and a series of substantial tests at Cadence that bootstrap Newspeak, build our Glue environment and run lots of tests and some benchmarks. So the VMs do get some coverage. But with VM performance and reliability more is always better (at least I'm not at the stage where I'm overwhelmed with data).
And of course at the moment I'm very interested in any v3 vs Spur performance comparisons.
Thanks for whatever guidance you care to provide
Thanks very very much for asking!
Paul
Eliot Miranda-2 wrote
... at http://www.mirandabanda.org/files/Cog/VM/VM.r3056/.
CogVM binaries as per VMMaker.oscog-eem.832/r3056 Add the time zone to the version info on Mac OS X and Win32.
Fix bug in assigning parameter 55 (growth ratio at which to do a global GC).
Add vmParameter 52 to answer the capacity of the root table (in Spur a.k.a. the rememberedSet).
In the wake of the inlining change below (see Slang:), split lookupInMethodCacheSel:classTag: into inlineLookupInMethodCacheSel:classTag:, and use the inline version in internalFindNewMethod.
Fix printStringOf: (used in e.g. frame print) to not print crs that would cause previous info to be overwritten.
Spur: Fix bug with class table management and two-way become. Because two-way become may do an in-place swap obj1 & obj2 in SpurMemoryManager>>doBecome:and:copyHash: may not be forwarded after the inner become. Hence they should not be followed if not forwarded. The bug manifested as Object's identityHash changing: superclass is the first slot in a class. Following an unforwarded
subclass
of object yields Object. Setting the hash bits of the followed object smashes Object's identityHash. Thanks to Stephane Rollandin for finding the bug.
More rationalization of the class table management post become. Now no post become scan of the class table is necessary at all.
Add vm parameter 53 to answer the number of segments.
Move the rememberedSet into a pinned object in oldSpace. Allow it to
grow
on demand, starting at 1k entries, doubling on each grow. Make sure to abort if the attempt to grow the remembered set fails. Try to grow by another 1k slots if doubling fails, then abort.
Revise markAndTrace: given that markAndShouldScan: is inlined within it (see Slang changes below). Move the ephemeron processing into markAndShouldScan: out of the now unused numStringSlotsOf:ephemeronInactiveIf: circumlocution. Add activeAndDeferredScan: and numStrongSlotsOfInephemeral: in place of the double negative inactiveOrFailedToDeferScan: and hence inline numStrongSlotsOfInephemeral:. Increase the traceImmediatelySlotLimit. These changes plus the 2 repeats for compaction speed up global GC by at least x2.
Change the defaultEdenBytes to 4Mb.
Allow the number of compaction passes to vary, 2 on GC, 3 on GC for snapshot.
Slang: Add support for inlining into the condition of ifTrue:/ifFalse: when it is marked as inline. Transform expr1 ifTrue:/ifFalse: [^expr2] by inlining ^expr2 into expr1. Transform expr ifTrue:/ifFalse: [statements] by replacing ^boolean occurrences in expr with gotos. -- Aloha, Eliot
-- View this message in context: http://forum.world.st/New-CogVMs-available-tp4769982p4770016.html Sent from the Squeak VM mailing list archive at Nabble.com.
vm-dev@lists.squeakfoundation.org