<body><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr">
                                        Thanks. Merged.<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 20.06.2022 18:30:54 schrieb Jaromir Matas <mail@jaromir.net>:</p><div style='font-family:Arial,Helvetica,sans-serif'>
<div class="WordSection1">
<p class="MsoNormal">Hi Marcel,</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Two more tests to cover #suspendAndUnblock when used to unblock a process from a condition variable (by the “suspend; resume” trick) in KernelTests-jar.436.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">+1 on Eliot’s chiseled #suspend description :)<o:p></o:p></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:marcel.taeumel@hpi.de">Marcel Taeumel</a><br>
<b>Sent: </b>Monday, June 20, 2022 10:16<br>
<b>To: </b><a href="mailto:squeak-dev@lists.squeakfoundation.org">squeak-dev</a><br>
<b>Subject: </b>Re: [squeak-dev] New #suspend semantics</p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">+1 on<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"> "Revises suspend to ensure a process waiting on a semaphore or mutex, if suspended and then resumed, will continue to wait on the semaphore or mutex. Previously
 suspend would cause a process to no longer be waiting when resumed."<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 17.06.2022 21:54:40 schrieb Eliot Miranda <eliot.miranda@gmail.com>:<o:p></o:p></span></p>
<div>
<div>
<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"><o:p> </o:p></span></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">On Fri, Jun 17, 2022 at 4:12 AM Jaromir Matas <</span><a href="mailto:mail@jaromir.net"><span style="font-size: 10.0pt;font-family: "Arial",sans-serif">mail@jaromir.net</span></a><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">>
 wrote:<o:p></o:p></span></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">Hi Christoph,<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">I understand now why you asked for ‘one sentence’ only to summarize #suspend changes to the release notes; here’s my suggestion:<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">Revises #suspend to stop the receiver waiting on a semaphore or mutex in such a way that sending it the message #resume will restore receiver's previous waiting state.<o:p></o:p></span></p>
</div>
</div>
</blockquote>
<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">How about "Revises suspend to ensure a process waiting on a semaphore or mutex, if suspended and then resumed, will continue to wait on the semaphore or mutex. Previously
 suspend would cause a process to no longer be waiting when resumed."<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">It's two sentences but "to stop the receiver waiting" is potentially confusing.<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>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<b><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">From:
</span></b><a href="mailto:mail@jaromir.net" target="_blank"><span style="font-size: 10.0pt;font-family: "Arial",sans-serif">Jaromir Matas</span></a><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><br>
<b>Sent: </b>Thursday, June 16, 2022 16:09<br>
<b>To: </b></span><a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank"><span style="font-size: 10.0pt;font-family: "Arial",sans-serif">The general-purpose Squeak developers list</span></a><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><br>
<b>Subject: </b>Re: [squeak-dev] New #suspend semantics<o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">Hi Christoph,<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">Precisely; I like to use this example instead:<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">                p := [Semaphore new wait] fork.<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">                Processor yield.<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">                p suspend.<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">                p resume.<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">                Processor yield.<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">                {p isTerminated. p isBlocked}    "should answer #(false true)"<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">For some reason the example with
</span><span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">Process forBlock: produces ‘Error: resume fails’ in 5.3. If you make it a test, that would be great; I’ve only added testRevisedSuspendExpectations but it is a good idea to test
 suspend+resume behavior as well.</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">> </span>
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">Revises #suspend to remember any semaphore or monitor that the receiver has been waiting for and restore the waiting state in #resume (the old behavior is available via #suspendAndUnblock).</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">Apologies for nitpicking: “remember” is not exactly what really happens, #suspend ‘simply’ returns process’s pc one instruction (i.e. the send that invoked the wait) back; so the next
 resume (which may never happen if you e.g. terminate) just executes the send again.<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">Eliot’s comment in #suspend expresses this nicely; maybe take it from there…<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">[if a process] was on some condition variable (Semaphore, Mutex) [then] back up its pc to the send that invoked the wait state the process entered.  Hence when the process resumes it
 will reenter the wait state.<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">I’ve read somewhere ‘official’ a short and exact description what suspend is supposed to do (not ANSI, somewhere else but can’t remember where) and this Eliot’s implementation does exactly
 that.<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">Thanks,<br>
Jaromir<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<b><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">From:
</span></b><a href="mailto:Christoph.Thiede@student.hpi.uni-potsdam.de" target="_blank"><span style="font-size: 10.0pt;font-family: "Arial",sans-serif">Thiede, Christoph</span></a><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><br>
<b>Sent: </b>Thursday, June 16, 2022 15:23<br>
<b>To: </b></span><a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank"><span style="font-size: 10.0pt;font-family: "Arial",sans-serif">The general-purpose Squeak developers list</span></a><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><br>
<b>Subject: </b>Re: [squeak-dev] New #suspend semantics<o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<div id="gmail-m_8888104932534627458divtagdefaultwrapper">
<div id="gmail-m_8888104932534627458divtagdefaultwrapper">
<p><span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">Hi Jaromir,</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<p><span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black"> </span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<p><span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">thanks a lot for the summary!</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<p><span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black"> </span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<p><span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">Translating this to code for my own understanding:</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<p><span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black"> </span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<blockquote style="margin-left:30.0pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:34.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">p := Process forBlock: [Semaphore new wait].</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:34.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">p resume.</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:34.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">Processor yield.</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:34.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">p suspend.</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:34.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">p resume.</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:34.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">Processor yield.</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:34.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">{p isBlocked. p isTerminated}</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black"> </span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<p><span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">has answered #(false true) in the past;</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<p><span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">and now answers #(true false).</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<p><span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black"> </span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<p><span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">> Alas, I don't seem to be able to squeeze it into one sentence or even less ;)</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black"> </span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">Hm, I will try this:</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black"> </span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
</div>
<blockquote style="margin-left:30.0pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:34.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">Revises #suspend to remember any semaphore or monitor that the receiver has been waiting for and restore the waiting state in #resume (the old behavior is available via #suspendAndUnblock).</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
</div>
</blockquote>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black"> </span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">My question is answered then. :-)</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black"> </span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">---</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black"> </span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">Please apologize that I did not read the entire linked thread. We tend to write so much that the pure reading time for this thread (let alone any comprehension) would be close to 20 minutes.
 =D</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black"> </span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">One last quick question: Will there be tests for #suspendAndUnblock? Maybe something like my above example?</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black"> </span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">Best,</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">Christoph</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black"> </span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black"><img border="0" width="694" height="2" style="width:7.2291in;height:.0208in" id="gmail-m_8888104932534627458Horizontal_x0020_Line_x0020_1" src="cid:1817336da358b7419d51"></img></span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<div id="gmail-m_8888104932534627458divRplyFwdMsg">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<b><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">Von:</span></b><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> Squeak-dev <</span><a href="mailto:squeak-dev-bounces@lists.squeakfoundation.org" target="_blank"><span style="font-size: 10.0pt;font-family: "Arial",sans-serif">squeak-dev-bounces@lists.squeakfoundation.org</span></a><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">>
 im Auftrag von Jaromir Matas <</span><a href="mailto:mail@jaromir.net" target="_blank"><span style="font-size: 10.0pt;font-family: "Arial",sans-serif">mail@jaromir.net</span></a><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">><br>
<b>Gesendet:</b> Montag, 13. Juni 2022 08:45 Uhr<br>
<b>An:</b> The general-purpose Squeak developers list<br>
<b>Betreff:</b> Re: [squeak-dev] New #suspend semantics</span><span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black">
</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 12.0pt;font-family: "Arial",sans-serif;color: black"> </span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
</div>
<div>
<div>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">Hi Christoph,<o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">The difference between the new #suspend using suspend primitive 578 and the previous one using primitive 88 is this:<o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">Previously, if you suspended a process waiting on a semaphore or mutex the process was removed from the semaphore or mutex; subsequent #resume would let the process continue as if
 the process had never been waiting.<o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">The new suspend with primitive 578 not only removes the process from the semaphore or mutex but backs it up one instruction, i.e. before the wait send, and thus a subsequent #resume
 will allow the process go back to the wait on the semaphore or mutex, i.e. to the same state as before the suspension.<o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">One of the adverse effects of the previous behavior was #critical sections could have been entered multiple times regardless of the ownership of the condition variable.<o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">The previous behavior have been used (or misused) to cheaply escape a condition variable; for backward compatibility the old behavior has been preserved in #suspendAndUnblock.<o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">Here's more:
</span><a href="http://lists.squeakfoundation.org/pipermail/squeak-dev/2021-December/217831.html" target="_blank"><span style="font-size: 10.0pt;font-family: "Arial",sans-serif">http://lists.squeakfoundation.org/pipermail/squeak-dev/2021-December/217831.html</span></a><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">Alas, I don't seem to be able to squeeze it into one sentence or even less ;)<o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">Best,<o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">Jaromir<o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p><span lang="CS" style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">--</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<p><strong><span style="font-size: 10.0pt;font-family: "Calibri Light",sans-serif;color: #333333;font-weight: normal">Jaromír Matas</span></strong><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<p><a href="mailto:mail@jaromir.net" target="_blank"><span style="font-size: 10.0pt;font-family: "Calibri Light",sans-serif">mail@jaromir.net</span></a><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p><b><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">From:
</span></b><a href="mailto:christoph.thiede@student.hpi.uni-potsdam.de" target="_blank"><span style="font-size: 10.0pt;font-family: "Arial",sans-serif">christoph.thiede@student.hpi.uni-potsdam.de</span></a><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><br>
<b>Sent: </b>Sunday, June 12, 2022 21:45<br>
<b>To: </b></span><a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank"><span style="font-size: 10.0pt;font-family: "Arial",sans-serif">squeak-dev@lists.squeakfoundation.org</span></a><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><br>
<b>Subject: </b>[squeak-dev] New #suspend semantics<o:p></o:p></span></p>
</div>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">Hi Jaromír,<br>
<br>
as I'm currently updating the release notes, I'm trying to figure out what exactly are the visible effects of your changes to #suspend and #suspendAndUnblock from May 30.<br>
<br>
There has been written so much about this on the list in the last months that it's hard to follow up. If you could just describe the changes very briefly, probably in one or a half sentence, that would be perfect. :D<br>
<br>
Thanks in advance,<br>
Christoph<br>
<br>
</span><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: gray">---<br>
<i>Sent from </i></span><a href="https://github.com/hpi-swa-lab/squeak-inbox-talk" target="_blank"><i><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: gray">Squeak Inbox Talk</span></i></a><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
<p><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"> <o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal" style="margin-left:4.8pt"><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><o:p> </o:p></span></p>
</blockquote>
</div>
<p class="MsoNormal"><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black"><br clear="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>
<p class="MsoNormal"><span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">--
<o:p></o:p></span></p>
<div>
<div>
<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>
</div>
</div>
</div>
</div>
</blockquote>
<p class="MsoNormal" style="mso-margin-top-alt:0in;margin-right:.5in;margin-bottom:5.0pt;margin-left:0in">
<span style="font-size: 10.0pt;font-family: "Arial",sans-serif;color: black">best, Eliot<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div></blockquote>
                                        </div></body>