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