[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