[Vm-dev] New Cog VMs available

stepharo stepharo at free.fr
Sat May 28 15:06:31 UTC 2016


thanks guille for all this cool energy!



Le 27/5/16 à 15:17, Guille Polito a écrit :
>   
>
>
> 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/20160528/aeb425c6/attachment-0001.htm


More information about the Vm-dev mailing list