<div dir="ltr">Hi Chris,<br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Dec 19, 2012 at 12:39 PM, Chris Muller <span dir="ltr">&lt;<a href="mailto:asqueaker@gmail.com" target="_blank">asqueaker@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
For the first time ever, the Magma test suite passes on an Intel i7<br>
running Cog!  It ripped through them too about 15 minutes.  Solid as a<br>
rock, thank you so much!<br></blockquote><div><br></div><div>Good.  This was an old, old bug that has been there since the beginning.  The 2640 VMs also revert my mistake with primitiveChangeClassTo:.</div><div><br></div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
In the app I did still encounter the intermittent problem with an<br>
object which had had its class changed via #primitiveChangeClassTo:.<br>
The notes for 2639 looked like it had a chance to address that -- I&#39;ll<br>
try that one when it becomes available.<br>
<br>
Thanks again Eliot.<br>
<br>
<br>
On Sat, Dec 15, 2012 at 6:00 PM, Eliot Miranda &lt;<a href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; Hi All,<br>
&gt;<br>
&gt;     new Cog VMs available at <a href="http://www.mirandabanda.org/files/Cog/VM/VM.r2636/" target="_blank">http://www.mirandabanda.org/files/Cog/VM/VM.r2636/</a>.  The main change here is to do with corrected headroom and safer signal handling which should hopefully improve stability on linux.<br>

&gt;<br>
&gt; Cog VM binaries as per VMMaker.oscog-eem.234/r2636/r2638.<br>
&gt;<br>
&gt; Use the -z now link flag on the linux builds.  This causes the dynamic linker<br>
&gt; to resolve unresolved symbols on load instead of lazily.  This affects<br>
&gt; reliability in signal handlers, because if the dynamic linker can run at any<br>
&gt; time it can therefore run in a signal handler and cause a deep call chain which<br>
&gt; could corrupt a stack page in the JIT.<br>
&gt; So this aplies three fixes to this issue:<br>
&gt;       a) correct the stack headroom determination<br>
&gt;       b) use sigaltstack for signal handlers in the UnixOSProcessPlugin<br>
&gt;       c) link using -z now on linux.<br>
&gt;<br>
&gt; Use SA_ONSTACK/sigaltstack for signal handlers installed by the<br>
&gt; UnixOSProcessPlugin to avoid running signal handlers on the JIT&#39;s stack.<br>
&gt; (r2638: Check for needing sigaltstack properly in setSignalNumber:handler:).<br>
&gt;<br>
&gt; ====<br>
&gt; VMMaker.oscog-eem.233/r2632<br>
&gt;<br>
&gt; Rename misnamed internalIsMutable: and internalIsImmutable:<br>
&gt; to isOopMutable: and isOopImmutable:.  Affects sqVirtualMachine.c,<br>
&gt; but only part of api used in Newspeak VMs.<br>
&gt;<br>
&gt; Merge LargeInteger primitive fixes from VMMaker-dtl.286 and<br>
&gt; tests from VMMaker-dtl.289.<br>
&gt;<br>
&gt; UnixOSProcessPlugin:<br>
&gt; Merge with VMConstruction-Plugins-OSProcessPlugin-dtl.35.<br>
&gt; In particular restore missing code to forwardSignal:toSemaphoreAt:<br>
&gt;<br>
&gt; Get plugin to use SA_ONSTACK/sigaltstack for signal handlers<br>
&gt; if loaded in the JIT.<br>
&gt;<br>
&gt; ====<br>
&gt; VMMaker.oscog-eem.230/r2631<br>
&gt;<br>
&gt; Fix stackPage headroom calculation in CoInterpreter.  Was getting<br>
&gt; things backward.  This increases the stack page headroom by 62%<br>
&gt; from 1564 bytes to 2532 bytes.  Shootout benchmarks unchanged,<br>
&gt; so reduction in frames per page is not an issue for typical code.<br>
&gt;<br>
&gt; This should result in fewer crashes on linux where the dynamic<br>
&gt; linker, if it kicked in during a signal handler, could cause a deep<br>
&gt; call chain at interrupt time and trample the start of the adjoining<br>
&gt; stack page.<br>
&gt;<br>
&gt; Merge LargeInteger primitive fixes from VMMaker-dtl.286.<br>
&gt;<br>
&gt; Change generation of plugin code so that internal plugins call VM<br>
&gt; routines directly and external plugins call through their own local<br>
&gt; copies of the function pointers in InterpreterProxy.  External plugins<br>
&gt; copy the InterpreterProxy functions to their local copies in<br>
&gt; setInterpreter:.<br>
&gt;<br>
&gt; Change implementations of stObject:at:put: to return their value, to<br>
&gt; match the declaration in InterpreterProxy.<br>
&gt;<br>
&gt; Streamline ObjectMemory&gt;&gt;instantiateClass:indexableSize: (hdrSize<br>
&gt; and header3 change together).<br>
&gt;<br>
&gt; Optimize the debug VM by making startOfMemory a macro that<br>
&gt; answers heapBase instead of a method.<br>
&gt;<br>
&gt; Improve stack page printing, and make stack trace printing more<br>
&gt; robust (findClass/SelectorOfMethod:forReceiver:).<br>
&gt;<br>
&gt; Make temporary:in:put: et al answer their values. For stObject:at:put:.<br>
&gt;<br>
&gt; Make jumpTable size err message more explanatory.<br>
&gt;<br>
&gt; Rename misnamed internameIsMutable: and internalIsImmutable:<br>
&gt; to isOopMutable: and isOopImmutable:.  Affects sqVirtualMachine.c,<br>
&gt;<br>
&gt; but only part of api used in Newspeak VMs.--<br>
&gt; best,<br>
&gt; Eliot<br>
&gt;<br>
&gt;<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>
</div></div>