<br><br><div class="gmail_quote">On Thu, Mar 14, 2013 at 11:42 AM, Colin Putney <span dir="ltr">&lt;<a href="mailto:colin@wiresong.com" target="_blank">colin@wiresong.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 dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote"><div class="im">On Thu, Mar 14, 2013 at 11:20 AM, Eliot Miranda <span dir="ltr">&lt;<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>&gt;</span> wrote:<br>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div>We want e.g.<br></div><div><br></div><div><div><span>Smalltalk </span>recompileAll<span>.</span></div>

<div>(CompiledMethod allInstances select:</div>
<div><span style="white-space:pre-wrap">        </span>[:m|</div><div><span style="white-space:pre-wrap">        </span>m ~~ thisContext method</div><div><span style="white-space:pre-wrap">        </span>and: [m methodClass isNil</div>
<div><span style="white-space:pre-wrap">                </span>or: [m selector isNil</div><div><span style="white-space:pre-wrap">                </span>or: [m ~~ (m methodClass &gt;&gt; m selector)]]]]</div></div>
<div>=&gt; #()</div><div><br></div><div>But I don&#39;t see how to get near this:</div><div>1. lots of GUI stuff can only be cleared by closing windows.  Can we export the morphs and bring them back in?</div><div>2. (quite easy) we need to save and restart to restart a number of processes</div>

</div></blockquote><div><br></div></div><div>Is this what you&#39;d like to see as a generally useful facility, or is it what you think we need to do to fix the failing tests?</div></div></div></div></blockquote><div><br>
</div><div>As a generally useful facility.  If the system is to be continuously updated and it is to remain self-compiling then it needs to function properly across updates that change the compiler.  We&#39;ve had a number of these recently, inlining of timesRepeat:, addition of optimized selectors ifTrue:. whileTrue: et al to literals, fixing the return value of optimized to:do: and now Environments.  That the system needs recompiling after certain changes is arcane, that this is tricky to do right is even more arcane.  Those who publish a package that modifies the compiler generally know that a recompilation is necessary but avoid it (I suspect) because... the recompilation is tricky.  If we had a reasonably effective recompile then we&#39;d be less reticent about offering to recompile after load.  I think we should provide something like an ability to note that recompilation is necessary and then a facility to ask the user if they want to recompile.  e.g. a class var in SmalltalkImage which is a dirty flag marking the system as needing recompilation, plus a facility to prompt the user to recompile if they want to.  So then out post-load scripts can contain somethign like</div>
<div><br></div><div>Smalltalk noteRecompilationIsNecessary.</div><div>Smalltalk promptUserToRecompile</div><div><br></div><div>which, if interactive, pops up a dialog asking to recompile and then recompiles smartly if the user says so.  The recompilation necessary flag gets cleared by Compiler recompileAll, not just by Smalltalk recompileAll.  (If one uses Compiler recompileAll then recompilation has been done albeit messily). </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"><span class="HOEnZb"><font color="#888888"><div>
<br></div><div>Colin</div></font></span></div></div></div>
<br><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>