<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="#954F72" style="word-wrap:break-word">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<p>Hi Jaromir,</p>
<p><br>
</p>
<p></p>
<div>> I just wanted to suggest</div>
<div>>                 ^ [(self vmParameterAt: parameterIndex)</div>
<div>>                                                 ifNil: [defaultValueOrBlock value]]</div>
<div>>                                 on: Error</div>
<div>>                                 do: [defaultValueOrBlock value]</div>
<div> > </div>
<div>> i.e. without the return inside ifNil block…</div>
<br>
<p></p>
<p>The only effective difference would be that if defaultValueOrBlock is a block and raises an error, it would be evaluated a second time. I cannot make sense of this behavior, can you? :-) Apart from that, the non-local return is a bit slower, I know, but
 IMHO this should only become an argument if there is no visible change in behavior.</p>
<p><br>
</p>
<p>> <span style="font-size: 12pt;">So the default processPreemptionYields value remains false, right?</span></p>
<div><br>
</div>
<div>Apparently - without having studied the details of how preemption works in Squeak. :-)</div>
<div><br>
</div>
<div>Best,</div>
<div>Christoph</div>
<p></p>
</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>Von:</b> Squeak-dev <squeak-dev-bounces@lists.squeakfoundation.org> im Auftrag von Jaromir Matas <mail@jaromir.net><br>
<b>Gesendet:</b> Donnerstag, 16. Dezember 2021 20:47:27<br>
<b>An:</b> The general-purpose Squeak developers list<br>
<b>Betreff:</b> Re: [squeak-dev] Regression | Cannot interrupt "[ [] repeat ] fork" anymore</font>
<div> </div>
</div>
<div>
<div class="WordSection1">
<p class="MsoNormal">Hi Christoph, </p>
<p class="MsoNormal">Yes, a good one <span style="font-family:"Segoe UI Emoji",sans-serif">
😊</span> I just wanted to suggest </p>
<p class="MsoNormal">                ^ [(self vmParameterAt: parameterIndex)</p>
<p class="MsoNormal">                                                ifNil: [defaultValueOrBlock value]]</p>
<p class="MsoNormal">                                on: Error</p>
<p class="MsoNormal">                                do: [defaultValueOrBlock value]</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">i.e. without the return inside ifNil block… </p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I noticed recently the image stopped responding to </p>
<p class="MsoNormal">Smalltalk processPreemptionYields: false</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">So the default processPreemptionYields value remains false, right?</p>
<p class="MsoNormal">Best,</p>
<p class="MsoNormal">Jaromir</p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="border:none;padding:0in"><b>From: </b><a href="mailto:Christoph.Thiede@student.hpi.uni-potsdam.de">Thiede, Christoph</a><br>
<b>Sent: </b>Thursday, December 16, 2021 20:29<br>
<b>To: </b><a href="mailto:squeak-dev@lists.squeakfoundation.org">squeak-dev</a><br>
<b>Subject: </b>Re: [squeak-dev] Regression | Cannot interrupt "[ [] repeat ] fork" anymore</p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div id="divtagdefaultwrapper">
<div id="divtagdefaultwrapper">
<p><span style="font-size:12.0pt;color:black">Ha, got it! This was a small regression in SmalltalkImage >> #processPreemptionYields from dtl 1/5/2021 19:29 (System-dtl.1261). Fixed in System-ct.1268. :-)<o:p></o:p></span></p>
<p><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
<p><span style="font-size:12.0pt;color:black">Best,<o:p></o:p></span></p>
<p><span style="font-size:12.0pt;color:black">Christoph<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><img border="0" width="378" height="2" style="width:3.9375in;height:.0208in" id="Horizontal_x0020_Line_x0020_1" src="cid:image002.png@01D7F2BE.21001300"><span style="font-size:12.0pt;color:black"><o:p></o:p></span></p>
<div id="divRplyFwdMsg">
<p class="MsoNormal"><b><span style="color:black">Von:</span></b><span style="color:black"> Thiede, Christoph<br>
<b>Gesendet:</b> Donnerstag, 16. Dezember 2021 19:29:30<br>
<b>An:</b> squeak-dev<br>
<b>Betreff:</b> AW: [squeak-dev] Regression | Cannot interrupt "[ [] repeat ] fork" anymore</span><span style="font-size:12.0pt;color:black">
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black"> <o:p></o:p></span></p>
</div>
</div>
<div>
<div id="divtagdefaultwrapper">
<div id="divtagdefaultwrapper">
<p><span style="font-size:12.0pt;color:black">Hi Dave, hi Marcel,<o:p></o:p></span></p>
<p><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
<p><span style="font-size:12.0pt;color:black">one "recent" change I noticed is that one to SmalltalkImage>>#processPreemptionYields by Dave in May, which answered false before but answers true since then. But this is just an observation, I do not know whether
 this change was justified by a change on the VM side.<o:p></o:p></span></p>
<p><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
<p><span style="font-size:12.0pt;color:black">> even if CMD+Dot interrupts the "[ [] repeat ] fork" from the interrupt watcher<o:p></o:p></span></p>
<p><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
<p><span style="font-size:12.0pt;color:black">How did you achieve to do this? The interrupt doesn't work for me in this situation.<o:p></o:p></span></p>
<p><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
<p><span style="font-size:12.0pt;color:black">Best,<o:p></o:p></span></p>
<p><span style="font-size:12.0pt;color:black">Christoph<o:p></o:p></span></p>
<p><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><img border="0" width="378" height="2" style="width:3.9375in;height:.0208in" id="Horizontal_x0020_Line_x0020_2" src="cid:image002.png@01D7F2BE.21001300"><span style="font-size:12.0pt;color:black"><o:p></o:p></span></p>
<div id="divRplyFwdMsg">
<p class="MsoNormal"><b><span style="color:black">Von:</span></b><span style="color:black"> Squeak-dev <squeak-dev-bounces@lists.squeakfoundation.org> im Auftrag von Taeumel, Marcel<br>
<b>Gesendet:</b> Donnerstag, 16. Dezember 2021 15:53:37<br>
<b>An:</b> squeak-dev<br>
<b>Betreff:</b> Re: [squeak-dev] Regression | Cannot interrupt "[ [] repeat ] fork" anymore</span><span style="font-size:12.0pt;color:black">
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black"> <o:p></o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Hi Christoph, hi Dave, hi all --
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">"Processor preemptedProcess" does not behave as it used to be. It now answers the current ui process even if CMD+Dot interrupts the "[ [] repeat ] fork" from the
 interrupt watcher.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Maybe you can spot the issue right away?<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">ProcessorScheduler >> preemptedProcess<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">"Return the process that the currently active process just preempted."<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">self activeProcess priority to: 1 by: -1 do: [:priority |<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">(quiescentProcessLists at: priority) ifNotEmpty: [:list |<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">^ Smalltalk processPreemptionYields<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">ifTrue: [list last]<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">ifFalse: [list first]]].<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">^ nil<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Best,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Marcel<o:p></o:p></span></p>
</div>
<blockquote style="border:none;border-left:solid windowtext 1.0pt;padding:0in 0in 0in 8.0pt;margin-left:0in;margin-top:15.0pt;margin-bottom:5.0pt">
<p style="margin-top:7.5pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#AAAAAA">Am 16.12.2021 14:33:51 schrieb David T. Lewis <lewis@mail.msen.com>:<o:p></o:p></span></p>
</blockquote>
</div>
</div>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:0in;margin-right:.5in;margin-bottom:12.0pt;margin-left:0in">
<span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">On Thu, Dec 16, 2021 at 11:27:09AM +0100, Marcel Taeumel wrote:<br>
> Hi all --<br>
> <br>
> I am investigating a?? regression revealed via DebuggerTests >> test01UserInterrupt. One cannot interrupt "[ [] repeat ] fork" from a do-it anymore. :-(<br>
> <br>
> VM: 202112022203 (32-bit, Windows 10)<br>
> <br>
> Update: #20872<br>
> <br>
> Since the forked process should run at priority 40 and the "user interrupt watcher" watches at priority 60, this must work. Did we loose a process scheduling point in "[] repeat"? It's still implemented as "[self value. true] whileTrue".<br>
> <br>
<br>
Confirming on Linux and also on an interpreter VM with trunk level V3 image,<br>
so the issue is in the image, not the VM.<br>
<br>
Dave<br>
<br>
<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>