[Vm-dev] New Cog VMs available
Guille Polito
guillermopolito at gmail.com
Fri May 27 13:17:34 UTC 2016
Cool!
I've just tested also your last version both on the simulator and in a
compiled vm (with both edens of 4M and 2M) and we could not reproduce
the crash anymore :).
We pushed a bit more the case by creating 2M ephemerons and everything
worked smoothly ;).
I'll continue now working on the image side support of Ephemerons.
Thanks!!
Guille
-------- Original Message --------
>
>
>
> ... at http://www.mirandabanda.org/files/Cog/VM/VM.r3732
>
> CogVM binaries as per VMMaker.oscog-eem.1873/r3732
>
> General:
> Make primitiveDoPrimitiveWithArgs usable as a mirror primitive, such
> that no
> message needs to be sent to the receiver to evaluate a primitive on
> it. This
> would make possible Context>>receiver: obj tryPrimitive: idx withArgs:
> args.
>
>
> Spur: Fix ephemerons (at least for Gule's test case).
>
> The mournQueue is of course a root for the scavenger and so must be
> visited at
> the start of a scavenge. Fix bug in markAllUnscannedEphemerons,
> enumerating
> correctly.
>
> Both fireEphemeronsInRememberedSet and fireEphemeronsOnEphemeronList
> must check
> for an ephemeron being fireable. An as-yet-firable ephemeron might
> get added to
> the ephemeron list and later its key may get tenured, rendering the
> ephemeron
> unfirable in that cycle.
>
> Fix marking of obj stack contents
> (markAndTraceObjStack:andContents:). Again
> tenuring could cause contents to be forwarded and hence read barrier
> is needed.
>
> Fix two bugs in ephemerons (found by Gille Polito - thanks!).
>
> 1. obj stack extension must happen with marking set to true if new
> pages aren't
> to be GC'ed. So move the assignments to marking out into
> markObjects: where
> they can surround nilUnmarkedWeaklingSlots.
>
> 2. fireAllUnscannedEphemerons needs to enumerate the
> unscannedEphemerons set
> properly, an oop at a time.
>
> Fix asserts that check for ephemerons so that the change in an ephemeron's
> format once it gets added to the mournQueue doesn't break the asserts;
> isMaybeFiredEphemeron[Format]: answer true for ephemerons and
> ephemerons in
> the mournQueue.
>
> Fix the Spur implementation of becomeForward:copyHash: for becomming
> immediates
> with copyHash false. Fix the scavenger's
> referenceCountRememberedReferents:
> for forwarding to immediates, and add a printRememberedSet convenience.
>
> Make pushLiteralVariable: store unfollowed literals back into the
> literal frame.
> Do so in a function off to the side, not inlined into the interpreter
> loop.
>
> With the above ephemeron changes Guille's test case passes:
> | e |
> Smalltalk supportsQueueingFinalization: true.
> e := (1 to: 200000) collect:
> [:i| Ephemeron
> key: (ObjectFinalizer receiver: 'test', 'asd' selector: #logCr)
> value: Object new].
> Smalltalk garbageCollect!
>
>
> Plugins:
> Simplify the arg validation in FloatArrayPrims>>prmNormalize & primLength.
>
> Fix the configuration of the gdb-7.x support for for the GdbARMPlugin
> (COG=1).
> Put #if COG around a couple of changes to the gdb-7.10 code.
> Allow assert to be used in the plugin on MacOS X (-undefined
> dynamic_lookup)
>
> _,,,^..^,,,_
> best, Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20160527/f02a3371/attachment.htm
More information about the Vm-dev
mailing list