<div id="__MailbirdStyleContent" style="font-size: medium;font-family: Calibri;color: #000000">
Hi Eliot,<div><br></div><div>thank you for this comprehensive answer. Sure, I just CC'ed vm-dev.</div><div><br></div><div>No concrete example/worries. I am just brainstorming about the general possibilities/limitations of user interfaces (and application frameworks) in Squeak. :-)</div><div><br></div><div>Best,</div><div>Marcel</div><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 05.04.2016 08:33:57 schrieb Eliot Miranda <eliot.miranda@gmail.com>:</p><div>Hi Marcel,<br><br></div><div><br>On Apr 4, 2016, at 6:24 AM, Marcel Taeumel <<a href="mailto:marcel.taeumel@hpi.de">marcel.taeumel@hpi.de</a>> wrote:<br><br></div><blockquote type="cite"><div><div id="__MailbirdStyleContent" style="font-size: medium;font-family: Calibri;color: #000000">Hi Eliot,<div class="mb_sig"></div><div><br></div><div>is it still (roughly) at the granularity of message sends where processes will be interrupted?</div></div></div></blockquote><div><br></div>The suspension points are<div>- the first bytecode in a non-primitive method</div><div>- the first bytecode in a primitive method (after the callPrimitive bytecode) if the primitive fails</div><div>- a backward branch</div><div>- the first bytecode of a block (unless invoked with valueNoContextSwitch[:]</div><div><br></div><div>That is a maximal set of suspension points. If the JIT can compile a method or block without needing a frame (because the code is simple, eg doesn't do a send) then there will be no suspension point in that method when jitted.</div><div><br><blockquote type="cite"><div id="__MailbirdStyleContent" style="font-size: medium;font-family: Calibri;color: #000000"><div>Hence, the worst that can happen is that Squeak's debugger shows up and complains about some DNU based on corrupted state? (Or that the app runs a while until some debugger shows up...)</div></div></blockquote><div><br></div>The potential failures are</div><div>- MNU</div><div>- mustBeBoolean</div><div>- cannotReturn:</div><div>- cannotResume:</div><div>- illegalBytecodeAt:</div><div>and with read-only object support</div><div>- attemptToAssign:withIndex:</div><div><br><blockquote type="cite"><div id="__MailbirdStyleContent" style="font-size: medium;font-family: Calibri;color: #000000"><div>Meaning: The VM will <b>never crash</b> by bad multi-programming?</div></div></blockquote><div><br></div>Hmmm. Not sure whether that's true because one could possibly create synthetic examples that crash the VM and then try and provoke these by "bad multi-programming". But I think you're right. The VM doesn't suspend at arbitrary points.</div><div><br></div><div>But perhaps you could express what you're worried about. Any examples?</div><div><br></div><div>And this is a discussion we could have on vm-dev...no?</div><div><br><blockquote type="cite"><div id="__MailbirdStyleContent" style="font-size: medium;font-family: Calibri;color: #000000"><div>Best,</div><div>Marcel</div></div></blockquote><div><span style="background-color: rgba(255, 255, 255, 0);"><br></span></div><div><span style="background-color: rgba(255, 255, 255, 0);">Best,</span></div><div><span style="background-color: rgba(255, 255, 255, 0);">Eliot<br>_,,,^..^,,,_ (phone)</span></div></div>
</blockquote>
</div>