<div dir="ltr">Hi David,<div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jan 6, 2018 at 8:02 AM, David T. Lewis <span dir="ltr"><<a href="mailto:lewis@mail.msen.com" target="_blank">lewis@mail.msen.com</a>></span> wrote:<br><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">Hi Eliot,<br>
<br>
I'm not sure that I understand well enough to offer guidance, but is it the<br>
case that when SistaV1 bytecode is fully in place that the preference for<br>
preferredBytecodeSetEncoderCla<wbr>ss will allow the user to switch bytecode, </blockquote><div><br></div><div>Yes.  Selecting the preference will then arrange that subsequent compilations will produce methods in that set. </div><div><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">and<br>
that the system will be recompiled as a side effect of selecting a different<br>
bytecode preferences?<br></blockquote><div><br></div><div>I don't think setting the preference should recompile the system, though.  a) recompilation takes of the order of a minute, depending on system size, and b) recompilation leaves lots of unbound methods and blocks if not followed by a system reinitialization phase.  Hence my focus now, after I have the bytecode set fully working, is on setting the preference during the release process with the idea that for most users it will be a default.  Experimenters can of course do whatever they like, but for most of us I expect we'd rathe it "just worked" and stayed well under the covers.</div><div><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">
<br>
If that is the case, then you may be able to set the value of the preference<br>
from ReleaseBuilder in setPreferences, but defer the activation of that preference<br>
until later at the end of prepareSourceCode.<br>
<br>
I'm thinking of something along the lines of:<br>
<br>
  CompiledCode class>><wbr>preferredBytecodeSetEncoderCla<wbr>ss: aBytecodeEncoderSubclass recompile: aBoolean<br>
<br>
Aside from that suggestion, I am not very familiar with ReleaseBuilder so<br>
I'm not sure I can give help there.<br></blockquote><div><br></div><div>Well, I'm learning :-).  Right now I'm learning that I should be focussing on getting recompilation and decompilation to work without progressing to ReleaseBuilder just yet :-)  My code has problems that need addressing before I slow down my development by sitting in the modify-compiler-then-test-recompile-in-the-ReleaseBuilder cycle :-)</div><div><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">
<br>
Dave<br>
<div class="gmail-HOEnZb"><div class="gmail-h5"><br>
<br>
On Fri, Jan 05, 2018 at 08:09:02PM -0800, Eliot Miranda wrote:<br>
> Hi Marcel, Hi David,<br>
><br>
>     in modifying the ReleaseBuilder to allow the SistaV1 bytecode set to be<br>
> selected I'm not happy having to wait until all the checking before<br>
> prompting to use the bytecode set.  One could move the query earlier, into<br>
> setPreferences, but this means that the bytecode set would be in use before<br>
> the Compiler recompileAll step, and that isn't desirable while debugging<br>
> the byte code set.  Would you object to me adding an instance variable to<br>
> ReleaseBuilder class, useNewBytecodeSet or some such, which would be set in<br>
> setPreferences and read in recompileAll?<br>
><br>
> On Fri, Jan 5, 2018 at 7:20 PM, <<a href="mailto:commits@source.squeak.org">commits@source.squeak.org</a>> wrote:<br>
><br>
> > Eliot Miranda uploaded a new version of ReleaseBuilder to project The<br>
> > Trunk:<br>
> > <a href="http://source.squeak.org/trunk/ReleaseBuilder-eem.172.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/<wbr>trunk/ReleaseBuilder-eem.172.<wbr>mcz</a><br>
> ><br>
> > ==================== Summary ====================<br>
> ><br>
> > Name: ReleaseBuilder-eem.172<br>
> > Author: eem<br>
> > Time: 5 January 2018, 7:20:47.150059 pm<br>
> > UUID: 4144895f-5617-4f80-9ab2-<wbr>593eca77e2ac<br>
> > Ancestors: ReleaseBuilder-mt.171<br>
> ><br>
> > Allow the ReleaseBuilder to query if the SistaV1 bytecode set should be<br>
> > the default in a new release.<br>
> ><br>
> > =============== Diff against ReleaseBuilder-mt.171 ===============<br>
> ><br>
> > Item was changed:<br>
> >   ----- Method: ReleaseBuilder class>>prepareSourceCode (in category<br>
> > 'preparing') -----<br>
> >   prepareSourceCode<br>
> >         "Update code. Remove foreign packages."<br>
> ><br>
> >         MCMcmUpdater defaultUpdateURL: self buildRepository description.<br>
> ><br>
> >         MCMcmUpdater updateMissingPackages: true.<br>
> >         MCMcmUpdater enableUpdatesForAllPackages.<br>
> ><br>
> >         TestCase new ensureInternetConnectionTo: self buildRepository<br>
> > description.<br>
> ><br>
> >         "Flush all caches. If a previous download failed this is often<br>
> > helpful"<br>
> >         MCFileBasedRepository flushAllCaches.<br>
> ><br>
> >         "Save the current default updater, clear the registry, and<br>
> > re-register the current updater"<br>
> >         MCMcmUpdater clearRegistry.<br>
> ><br>
> >         [MCMcmUpdater default doUpdate: false. "non-interactive"]<br>
> >                 on: MCEmptyVersion do: [:warning | warning resume].<br>
> ><br>
> >         self<br>
> >                 unloadForeignPackages;<br>
> >                 checkForDirtyPackages;<br>
> >                 loadWellKnownPackages;<br>
> > +               checkForUndeclaredSymbols;<br>
> > +               recompileAll!<br>
> > -               checkForUndeclaredSymbols.<br>
> > -<br>
> > -       Compiler recompileAll.!<br>
> ><br>
> > Item was added:<br>
> > + ----- Method: ReleaseBuilder class>>recompileAll (in category 'scripts -<br>
> > support') -----<br>
> > + recompileAll<br>
> > +<br>
> > +       (Smalltalk classNamed: #EncoderForSistaV1) ifNotNil:<br>
> > +               [:sistaBytecodeSet|<br>
> > +                CompiledCode preferredBytecodeSetEncoderCla<wbr>ss ~~<br>
> > sistaBytecodeSet ifTrue:<br>
> > +                       [(Project uiManager<br>
> > +                               confirm: 'Do you want to make it the<br>
> > default in this release?'<br>
> > +                               orCancel: [false]<br>
> > +                               title: 'The SistaV1 Bytecode Set Is<br>
> > Available') ifTrue:<br>
> > +                                       [CompiledCode<br>
> > +<br>
> >  installSecondaryBytecodeSet: sistaBytecodeSet;<br>
> > +<br>
> >  preferredBytecodeSetEncoderCla<wbr>ss: sistaBytecodeSet]]].<br>
> > +<br>
> > +       Compiler recompileAll!<br>
> ><br>
> ><br>
> ><br>
><br>
><br>
> --<br>
> _,,,^..^,,,_<br>
> best, Eliot<br>
<br>
><br>
<br>
<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><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></div>