<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p>thanks guille for all this cool energy!</p>
<p><br>
</p>
<br>
<div class="moz-cite-prefix">Le 27/5/16 à 15:17, Guille Polito a
écrit :<br>
</div>
<blockquote cite="mid:574848EE.8030600@gmail.com" type="cite">
<pre wrap=""> </pre>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
Cool!<br>
<br>
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 :).<br>
<br>
We pushed a bit more the case by creating 2M ephemerons and
everything worked smoothly ;).<br>
<br>
I'll continue now working on the image side support of Ephemerons.<br>
<br>
Thanks!!<br>
Guille<br>
<br>
<div class="moz-cite-prefix">-------- Original Message --------<br>
</div>
<blockquote
cite="mid:CAC20JE1RCu72sOrx+y6GHaU0H93L32qGP=4knDibR8jJV77X8w@mail.gmail.com"
type="cite">
<pre wrap=""> </pre>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<div dir="ltr">
<div>... at <a moz-do-not-send="true"
href="http://www.mirandabanda.org/files/Cog/VM/VM.r3732">http://www.mirandabanda.org/files/Cog/VM/VM.r3732</a></div>
<div><br>
</div>
<div>CogVM binaries as per VMMaker.oscog-eem.1873/r3732<br>
</div>
<div><br>
</div>
<div>General:</div>
<div>Make primitiveDoPrimitiveWithArgs usable as a mirror
primitive, such that no</div>
<div>message needs to be sent to the receiver to evaluate a
primitive on it. This</div>
<div>would make possible Context>>receiver: obj
tryPrimitive: idx withArgs: args.</div>
<div><br>
</div>
<div><br>
</div>
<div>Spur: Fix ephemerons (at least for Gule's test case).</div>
<div><br>
</div>
<div>The mournQueue is of course a root for the scavenger and
so must be visited at</div>
<div>the start of a scavenge. Fix bug in
markAllUnscannedEphemerons, enumerating</div>
<div>correctly.</div>
<div><br>
</div>
<div>Both fireEphemeronsInRememberedSet and
fireEphemeronsOnEphemeronList must check</div>
<div>for an ephemeron being fireable. An as-yet-firable
ephemeron might get added to</div>
<div>the ephemeron list and later its key may get tenured,
rendering the ephemeron</div>
<div>unfirable in that cycle.</div>
<div><br>
</div>
<div>Fix marking of obj stack contents
(markAndTraceObjStack:andContents:). Again</div>
<div>tenuring could cause contents to be forwarded and hence
read barrier is needed.</div>
<div><br>
</div>
<div>Fix two bugs in ephemerons (found by Gille Polito -
thanks!).</div>
<div><br>
</div>
<div>1. obj stack extension must happen with marking set to
true if new pages aren't</div>
<div> to be GC'ed. So move the assignments to marking out
into markObjects: where</div>
<div> they can surround nilUnmarkedWeaklingSlots.</div>
<div><br>
</div>
<div>2. fireAllUnscannedEphemerons needs to enumerate the
unscannedEphemerons set</div>
<div> properly, an oop at a time.</div>
<div><br>
</div>
<div>Fix asserts that check for ephemerons so that the change
in an ephemeron's</div>
<div>format once it gets added to the mournQueue doesn't break
the asserts;</div>
<div>isMaybeFiredEphemeron[Format]: answer true for ephemerons
and ephemerons in</div>
<div>the mournQueue.</div>
<div><br>
</div>
<div>Fix the Spur implementation of becomeForward:copyHash:
for becomming immediates</div>
<div>with copyHash false. Fix the scavenger's
referenceCountRememberedReferents:</div>
<div>for forwarding to immediates, and add a
printRememberedSet convenience.</div>
<div><br>
</div>
<div>Make pushLiteralVariable: store unfollowed literals back
into the literal frame.</div>
<div>Do so in a function off to the side, not inlined into the
interpreter loop.</div>
<div><br>
</div>
<div>With the above ephemeron changes Guille's test case
passes:</div>
<div><span class="" style="white-space:pre">        </span>| e |</div>
<div><span class="" style="white-space:pre">        </span>Smalltalk
supportsQueueingFinalization: true.</div>
<div><span class="" style="white-space:pre">        </span>e := (1
to: 200000) collect:</div>
<div><span class="" style="white-space:pre">                </span>[:i|
Ephemeron</div>
<div><span class="" style="white-space:pre">                                </span>key:
(ObjectFinalizer receiver: 'test', 'asd' selector: #logCr)</div>
<div><span class="" style="white-space:pre">                                </span>value:
Object new].</div>
<div><span class="" style="white-space:pre">        </span>Smalltalk
garbageCollect!</div>
<div><br>
</div>
<div><br>
</div>
<div>Plugins:</div>
<div>Simplify the arg validation in
FloatArrayPrims>>prmNormalize & primLength.</div>
<div><br>
</div>
<div>Fix the configuration of the gdb-7.x support for for the
GdbARMPlugin (COG=1).</div>
<div>Put #if COG around a couple of changes to the gdb-7.10
code.</div>
<div>Allow assert to be used in the plugin on MacOS X
(-undefined dynamic_lookup)</div>
<div><br>
</div>
<div class="gmail_signature">
<div dir="ltr">
<div><span
style="font-size:small;border-collapse:separate">
<div>_,,,^..^,,,_<br>
</div>
<div>best, Eliot</div>
</span></div>
</div>
</div>
</div>
</blockquote>
<br>
</blockquote>
<br>
</body>
</html>