<br><br><div class="gmail_quote">On Tue, Jan 31, 2012 at 12:19 PM, Igor Stasenko <span dir="ltr">&lt;<a href="mailto:siguctua@gmail.com">siguctua@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">
<div class="im"><br>
On 31 January 2012 20:50, Eliot Miranda &lt;<a href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Tue, Jan 31, 2012 at 11:22 AM, Mariano Martinez Peck &lt;<a href="mailto:marianopeck@gmail.com">marianopeck@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Hi Eliot. Me again :)   I was checking the changes Igor did some time ago for the fast become where he basically swapped the bytes contents between the objects when they were the same size and same header type. He put such code in separate primtives and some changes in the image side to call them. I have just played with them and they seem to work. I have 2 questions for you:<br>

&gt;&gt;<br>
&gt;&gt; 1) Do you think that this new fast become can have problems when becoming CompiledMethods? I am asking because of the JIT/Pic. Maybe I need a flushCache or something?<br>
&gt;<br>
&gt;<br>
&gt; Yes, almost certainly.  You&#39;d want to do a flushCache on both methods.<br>
&gt;<br>
</div>are there other object types which we need to be careful with?<br></blockquote><div><br></div><div>There are a few.  e.g. the Array literals in named primitives (because they hold target function pointers).  CompiledMethods (because they may have associated machine code).  Contexts (because they may have associated stack frames).</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
because i was thinking to just put a check in fast-become prim and<br>
simply fail the prim if object type(s) to be swapped are not<br>
supported, so user will be forced to use slow good-old #become:<br></blockquote><div><br></div><div>I agree.  But you can do even better, by checking that the compiled method has a machine-code version, and/or checking that a context is &quot;single&quot; (has no associated stack state).  It doesn&#39;t need to fail if there isn&#39;t any special state.  Identifying the named primitive linking literals is more difficult...</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<font color="#888888"><br>
--<br>
Best regards,<br>
Igor Stasenko.<br>
</font></blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div><br>