<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>