<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<meta content="text/html; charset=UTF-8">
<style type="text/css" style="">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
</style>
<div dir="ltr">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Helvetica,sans-serif">
<p>Hi Dave, hi all,</p>
<p><br>
</p>
<p>this sounds like a really interesting changeover. I have heard and read some rumors about Sista in the past, but I could not find any brief but complete summary of all the changes this will make to our existing Smalltalk system. So it would be great if you
 could point us to some kind of changelog.</p>
<p><br>
</p>
<p>In what way will this affect your typical Squeak experience? What about performance? What about debugging/simulating code? As someone who did not yet deal with any VM side effects, I would be interested to hear about the practical effects you can see when
 playing around with Context & Compiler stuff. I read about FullBlockClosure which appears to be kind of detached of its defining method. How will this change accessing thisContext home etc. from a FullBlockClosure, for example? I read Sista stores an optimization
 cache between several runs. Where will this information be saved, at the image side or at the VM side?</p>
<p>Lots of questions, maybe someone can answer a few of them :-)</p>
<p><br>
</p>
<p>Best,</p>
<p>Christoph</p>
<div id="x_Signature">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<div name="x_divtagdefaultwrapper" style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:; margin:0">
<div><font size="2" color="#808080"></font></div>
</div>
</div>
</div>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>Von:</b> Squeak-dev <squeak-dev-bounces@lists.squeakfoundation.org> im Auftrag von David T. Lewis <lewis@mail.msen.com><br>
<b>Gesendet:</b> Samstag, 7. März 2020 18:29:40<br>
<b>An:</b> squeak-dev@lists.squeakfoundation.org<br>
<b>Betreff:</b> Re: [squeak-dev] Switching to Sista bytecodes in trunk (was: The Inbox: Kernel-dtl.1310.mcz)</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">I will leave this in the inbox for a couple of days, and if there are<br>
no objections I will move it to trunk.<br>
<br>
Dave<br>
<br>
On Fri, Mar 06, 2020 at 07:43:29PM -0500, David T. Lewis wrote:<br>
> The Sista bytecode set enables important reasearch and development work.<br>
> Eliot and Clemont can explain better than me (apologies to Clemont Bera<br>
> for using my seven-bit character set on your name).<br>
> <br>
> Squeak 5.3 is released and we are starting the new release cycle, so it<br>
> is time to make Sista the default in trunk. Kernel-dtl.1310 (in the inbox)<br>
> activates Sista in the package postscipt.<br>
> <br>
> Dave<br>
> <br>
> On Sat, Mar 07, 2020 at 12:29:13AM +0000, commits@source.squeak.org wrote:<br>
> > David T. Lewis uploaded a new version of Kernel to project The Inbox:<br>
> > <a href="http://source.squeak.org/inbox/Kernel-dtl.1310.mcz">http://source.squeak.org/inbox/Kernel-dtl.1310.mcz</a><br>
> > <br>
> > ==================== Summary ====================<br>
> > <br>
> > Name: Kernel-dtl.1310<br>
> > Author: dtl<br>
> > Time: 6 March 2020, 7:29:11.316779 pm<br>
> > UUID: 683e4e14-fc18-4d55-a776-eece91f579f5<br>
> > Ancestors: Kernel-mt.1309<br>
> > <br>
> > Change the Squeak default bytecode set to Sista in trunk.<br>
> > <br>
> > Add CompiledCode>>multipleBytecodeSetsActive: to optionally inform the VM that Sista is in use, see VMMaker.oscog-dtl.2711 and
<a href="http://lists.squeakfoundation.org/pipermail/vm-dev/2020-January/032441.html">
http://lists.squeakfoundation.org/pipermail/vm-dev/2020-January/032441.html</a>.<br>
> > <br>
> > Add CompiledCode>>useSista: convenience method for switching to and from Sista bytecodes.<br>
> > <br>
> > Package postscript activates the change to Sista bytecodes, which can be reversed by evaluating CompiledCode useSista: false.<br>
> > <br>
> > =============== Diff against Kernel-mt.1309 ===============<br>
> > <br>
> > Item was added:<br>
> > + ----- Method: CompiledCode class>>multipleBytecodeSetsActive: (in category 'method encoding') -----<br>
> > + multipleBytecodeSetsActive: aBoolean<br>
> > +    "Inform the VM when multiple bytecode sets, typically the Sista bytecodes<br>
> > +    in addition to the traditional V3 bytecode set, are now in use is this image.<br>
> > +    The VM may use this information to update the image format number when<br>
> > +    saving the image to the file system."<br>
> > + <br>
> > +    <primitive: 'primitiveMultipleBytecodeSetsActive'><br>
> > + !<br>
> > <br>
> > Item was added:<br>
> > + ----- Method: CompiledCode class>>useSista: (in category 'method encoding') -----<br>
> > + useSista: useSistaEncoder<br>
> > +    "Switch to or from the Sista bytecode encoder, and recompile the system<br>
> > +    using that encoder. Assumes that Compiler recompileAll is working for the<br>
> > +    existing system. Assumes that the currently available primary and secondary<br>
> > +    bytecode encoders are EncoderForV3PlusClosures and EncoderForSistaV1.<br>
> > +    This is a convenience method that must be updated as the available encoders<br>
> > +    are changed."<br>
> > + <br>
> > +    "CompiledCode useSista: true"<br>
> > +    "CompiledCode useSista: false"<br>
> > + <br>
> > +    | standardEncoder sistaEncoder activeEncoder |<br>
> > +    standardEncoder := Smalltalk classNamed: #EncoderForV3PlusClosures.<br>
> > +    sistaEncoder := Smalltalk classNamed: #EncoderForSistaV1.<br>
> > +    activeEncoder := self preferredBytecodeSetEncoderClass.<br>
> > +    useSistaEncoder<br>
> > +            ifTrue: [sistaEncoder ifNil: [self error: 'EncoderForSistaV1 not present in this image'].<br>
> > +                    self preferredBytecodeSetEncoderClass: sistaEncoder.<br>
> > +                    activeEncoder ~= sistaEncoder<br>
> > +                            ifTrue: [(Smalltalk classNamed: #Compiler) recompileAll.<br>
> > +                    self multipleBytecodeSetsActive: true "VM should support Sista plus V3" ]]<br>
> > +            ifFalse: [standardEncoder ifNil: [self error: 'EncoderForV3PlusClosures not present in this image'].<br>
> > +                    self preferredBytecodeSetEncoderClass: standardEncoder.<br>
> > +                    activeEncoder ~= standardEncoder<br>
> > +                            ifTrue: [(Smalltalk classNamed: #Compiler) recompileAll.<br>
> > +                    self multipleBytecodeSetsActive: false "VM needs to support V3 only" ]].<br>
> > + <br>
> > + !<br>
> > <br>
> > Item was changed:<br>
> > + (PackageInfo named: 'Kernel') postscript: '"Activate Sista bytecodes in the image"<br>
> > + <br>
> > + CompiledCode useSista: true.<br>
> > + '!<br>
> > - (PackageInfo named: 'Kernel') postscript: '"below, add code to be run after the loading of this package"<br>
> > - "Since Kernel-eem.1198 redefines LargePositiveInteger hash,<br>
> > -  rehash all hashed collections that contain hashed large integers."<br>
> > - HashedCollection allSubclassesDo:<br>
> > -    [:c| | f |<br>
> > -    f := (c includesBehavior: Set)<br>
> > -                    ifTrue: [[:i| i]]<br>
> > -                    ifFalse: [[:i| i keys]].<br>
> > -    c allInstancesDo:<br>
> > -            [:h|<br>
> > -             ((f value: h) detect: [:e| e isInteger and: [e class ~~ SmallInteger]] ifNone: nil) ifNotNil:<br>
> > -                    [h rehash]]]'!<br>
> > <br>
> > <br>
> <br>
<br>
</div>
</span></font>
</body>
</html>