<body><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
                                        > <span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"> It seems to me that this should be part of Compiler class>>recompileAll, not just ReleaseBuilder. </span><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">+1</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">> </span><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"> </span><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">I intend to keep it simple :-)</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">+1 :-)</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">> </span><span style="font-family: arial, sans-serif;font-size: 13px">One question for the group; does each post compile hook method belong in the package containing its class or in e.g. the Compiler package?  My instinct is for the former.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Yes, the former because of package dependencies. It's like Shout's #aboutToStyle:(forMorph:) hook, which is also not implemented as extensions from the Shout package.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Best,</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Marcel</span></div><div class="mb_sig"></div><blockquote class="history_container" type="cite" style="border-left-style:solid;border-width:1px; margin-top:20px; margin-left:0px;padding-left:10px;">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 08.10.2019 18:59:03 schrieb Eliot Miranda <eliot.miranda@gmail.com>:</p><div style="font-family:Arial,Helvetica,sans-serif">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hi Levente, Hi All,</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Oct 7, 2019 at 2:44 PM Levente Uzonyi <<a href="mailto:leves@caesar.elte.hu">leves@caesar.elte.hu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">On Mon, 7 Oct 2019, Eliot Miranda wrote:<br>
<br>
> Hi All,<br>
>     when I try and drive ReleaseBuilder programmatically I get a number of errors such as this:<br>
> <br>
> Error: Missing snapshot: Traits-pre.307<br>
> <br>
> It would be nice either to ignore such errors or to have an entry-point in ReleaseBuilder that just does the preference setting, recompileAll, condenseChanges and save.<br>
> <br>
> <br>
> BTW, ReleaseBuilder's recompileAll appears not to be working perfectly.  With the new bytecode set installed we still expect to see quick methods compiled using the default bytecode set (something I have to fix but isn't high<br>
> priority).  But even ignoring quick methods there are lots of methods that remain in the old bytecode set:<br>
> <br>
> CompiledMethod allInstances size 67104<br>
> (CompiledMethod allInstances select: [:m| m signFlag]) size 61154<br>
> (CompiledMethod allInstances reject: [:m| m signFlag or: [m isQuick]]) size 1253<br>
<br>
Is it possible that the lingering methods are held by running processes?<br>
Or that the method are not installed in classes anymore, so recompilation <br>
can't get rid of them?<br></blockquote><div><br></div><div>It is possible, but most of these are references from blocks.  Here are the methods; they are methods not in Etoys (Etoys has its own compiler that has yet to be ported to respect the preferred bytecode set preference) and are not quick methods (quick methods as yet are always in the old bytecode set).</div><div><br></div><div>MCRepository class>>#browseClassRevisionsService</div><div>MCRepository class>>#browseMethodRevisionsService</div><div>MorphicAlarmQueue>>#migrate</div><div>PluggableDictionary class>>#integerDictionary</div><div>ProcessBrowser class>>#registerWellKnownProcess:label:allowStop:allowDebug:</div><div>ProcessBrowser class>>#registerWellKnownProcesses</div><div>ServiceAction class>>#id:text:button:description:action:</div><div>ServiceAction class>>#text:button:description:action:</div><div>ServiceCategory class>>#text:button:description:</div><div>ServiceShortcuts class>>#insertPrefShortcut:</div><div>VariableNode class>>#initialize</div><div>Vocabulary class>>#newPublicVocabulary</div><div>WeakRegistry>>#installFinalizer</div><div>WorldMenuProvider>>#closeTopWindow</div><div>WorldMenuProvider>>#createNewService</div><div>WorldMenuProvider>>#helpOnServices</div><div>WorldMenuProvider>>#nextWindow</div><div>WorldMenuProvider>>#preferencesBrowser</div><div>WorldMenuProvider>>#rebuildRegistry</div><div>WorldMenuProvider>>#servicesBrowser</div><div>WorldState>>#stepListSortBlock</div><div><br></div><div>To deal with most of these ReleaseBuilder and/or Compiler recompileAll needs to effect </div><div><br></div><div><div><span class="gmail-Apple-tab-span" style="white-space:pre">     </span>"ServiceRegistry build" to rebuild the world menu,</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">   </span>"World worldState convertStepList" for its sort block</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>"WeakRegistry allInstances do: #installFinalizer" to update their finalizer block</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">    </span>"VariableNode initialize" to update StdLiteral's equalBlock (or reimpleent to use a Symbol instead of a block)</div></div><div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>"Vocabulary addStandardVocabulary: Vocabulary newPublicVocabulary" to rebuild the one ScreenedVocabulary instance in the system</div></div><div><br></div><div>It seems to me we can eliminate almost all of these lingering methods by providing a post-recompile hook in classes that is invoked post-compile to rebuild structures that reference blocks.  It seems to me that this should be part of Compiler class>>recompileAll, not just ReleaseBuilder.  Unless people disagree strongly I shall push such a scheme to trunk.</div><div><br></div><div>The hook could be elaborate; for example using a pragma to specify a priority so that post compile rebuild actions happen in a predetermined order.  But looking at the issues above I see no need to do this.  I intend to keep it simple :-)</div><div><br></div><div>As far as the PluggableDictionar<span style="font-family: arial, sans-serif">y instances, one (<font color="#000000">VariableNode's StdLiterals) can be fixed by using a Symbol instead of a block.  There are some other integerDictionaries that need to be reinitialized using thee hook.</font></span></div><div><span style="font-family: arial, sans-serif"><font color="#000000"><br></font></span></div><div><span style="font-family: arial, sans-serif"><font color="#000000">One question for the group; does each post compile hook method belong in the package containing its class or in e.g. the Compiler package?  My instinct is for the former.</font></span></div><div><span style="font-family: arial, sans-serif"><font color="#000000"><br></font></span></div><div><span style="font-family: arial, sans-serif"><font color="#000000">Make sense?  Arguments against?</font></span></div><div><span style="font-family: arial, sans-serif"><font color="#000000"><br></font></span></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
<br>
Levente<br>
<br>
> <br>
> But this could b e operator error.  I found the above while using a modified script that avoided checkForDirtyPackages.<br>
> _,,,^..^,,,_<br>
> best, Eliot<br>
> <br>
><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><span style="font-size: 10pt;border-collapse: separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div></div></div></div></div></div>
</div></blockquote>
                                        </div></body>