<div dir="ltr">Hi Mario,<br><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Oct 21, 2013 at 4:15 PM, Mariano Martinez Peck <span dir="ltr">&lt;<a href="mailto:marianopeck@gmail.com" target="_blank">marianopeck@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <br><div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">
<br><div> </div>
<blockquote class="gmail_quote" style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
- Are #become: and #becomeForward: optimized for the case where both objects use the same amount of memory?</blockquote><div><br></div><div>Yes.  This case simply swaps contents and adjusts the remembered table accordingly.  Tim also suggested optimizing the other case, copying into the smaller object and only allocating one extra clone, which I&#39;ll implement soon.</div>


<div></div></div></div></div></blockquote><div><br></div><div>Just curious....This &quot;simply swaps contents&quot; isn&#39;t only for #become: ? Or there is a way to do something to avoid updating pointers for #becomeForward as well? </div>
</div></div></div></blockquote><div><br></div><div>Forwarding is the case one needs for becomeForward:.  Think about the semantics; references to object A must change to be references to object B.  object B must be unchanged.  object A can be collected.  So one either forwards object A to object B or sweeps the heap replacing references to object A with references to object B.  There is no opportunity to swap contents with becomeForward:.  Do you agree?</div>
<div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> Maybe there is something related about lazy become / forwarding pointers / proxies or whatever that could help?</div>
</div></div></div></blockquote><div><br></div><div>Yes, forwarding means all the system has to do is change object A into a forwarder to object B.  That&#39;s what Spur does.  No heap sweep.  It just (*) changes the class and format of object A to say &quot;I&#39;m a forwarder&quot; and replaces the first slot with a reference to object B.</div>
<div><br></div><div>(*) in fact, it must then do more; ensuring that nothing along the superclass chain of any class in use is forwarded, because otherwise the VM would have to check for forwarding pointers when doing message lookup.  But this is a small subset of the heap to scan, all reachable from the class table.</div>
<div><br></div><div>HTH,</div><div>Eliot</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">

<div><br></div><div>Thanks, </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> </div>

<blockquote class="gmail_quote" style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span><font color="#888888"><br>



<br>
<br>
Levente</font></span><div><div><br>
<br>
On Sat, 21 Sep 2013, <a href="mailto:btc@openinworld.com" target="_blank">btc@openinworld.com</a> wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a> wrote:<br>
<blockquote class="gmail_quote" style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
 Eliot Miranda uploaded a new version of VMMaker to project VM Maker:<br>
<a href="http://source.squeak.org/VMMaker/VMMaker.oscog-eem.399.mcz" target="_blank">http://source.squeak.org/<u></u>VMMaker/VMMaker.oscog-eem.399.<u></u>mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: VMMaker.oscog-eem.399<br>
Author: eem<br>
Time: 20 September 2013, 6:28:56.308 pm<br>
UUID: 89f8fefe-b59d-42d7-9c11-<u></u>7f848d0e5131<br>
Ancestors: VMMaker.oscog-eem.398<br>
<br>
A few isIntegerObject:&#39;s =&gt; isImmediate:&#39;s in primitives.<br>
<br>
More protocol.<br>
<br>
The Spur VM now draws its first window!!<br>
<br>
<br>
</blockquote>
A cheer goes up in the crowd of interested spectators.<br>
Probably lots still to do, but its a nice concrete milestone.<br>
Contributing is beyond me at this time, so I especially like to thank you for this important initiative.<br>
<br>
cheers -ben<br>
<br>
</blockquote>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>
</div></div>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Mariano<br><a href="http://marianopeck.wordpress.com" target="_blank">http://marianopeck.wordpress.com</a><br>
</div></div>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>
</div></div>