[Vm-dev] new Cog VMs available

Eliot Miranda eliot.miranda at gmail.com
Sun Dec 16 00:00:54 UTC 2012

Hi All,

    new Cog VMs available at
http://www.mirandabanda.org/files/Cog/VM/VM.r2636/.  The main change here
is to do with corrected headroom and safer signal handling which should
hopefully improve stability on linux.

Cog VM binaries as per VMMaker.oscog-eem.234/r2636/r2638.

Use the -z now link flag on the linux builds.  This causes the dynamic linker
to resolve unresolved symbols on load instead of lazily.  This affects
reliability in signal handlers, because if the dynamic linker can run at any
time it can therefore run in a signal handler and cause a deep call chain which
could corrupt a stack page in the JIT.
So this aplies three fixes to this issue:
	a) correct the stack headroom determination
	b) use sigaltstack for signal handlers in the UnixOSProcessPlugin
	c) link using -z now on linux.

Use SA_ONSTACK/sigaltstack for signal handlers installed by the
UnixOSProcessPlugin to avoid running signal handlers on the JIT's stack.
(r2638: Check for needing sigaltstack properly in setSignalNumber:handler:).


Rename misnamed internalIsMutable: and internalIsImmutable:
to isOopMutable: and isOopImmutable:.  Affects sqVirtualMachine.c,
but only part of api used in Newspeak VMs.

Merge LargeInteger primitive fixes from VMMaker-dtl.286 and
tests from VMMaker-dtl.289.

Merge with VMConstruction-Plugins-OSProcessPlugin-dtl.35.
In particular restore missing code to forwardSignal:toSemaphoreAt:

Get plugin to use SA_ONSTACK/sigaltstack for signal handlers
if loaded in the JIT.


Fix stackPage headroom calculation in CoInterpreter.  Was getting
things backward.  This increases the stack page headroom by 62%
from 1564 bytes to 2532 bytes.  Shootout benchmarks unchanged,
so reduction in frames per page is not an issue for typical code.

This should result in fewer crashes on linux where the dynamic
linker, if it kicked in during a signal handler, could cause a deep
call chain at interrupt time and trample the start of the adjoining
stack page.

Merge LargeInteger primitive fixes from VMMaker-dtl.286.

Change generation of plugin code so that internal plugins call VM
routines directly and external plugins call through their own local
copies of the function pointers in InterpreterProxy.  External plugins
copy the InterpreterProxy functions to their local copies in

Change implementations of stObject:at:put: to return their value, to
match the declaration in InterpreterProxy.

Streamline ObjectMemory>>instantiateClass:indexableSize: (hdrSize
and header3 change together).

Optimize the debug VM by making startOfMemory a macro that
answers heapBase instead of a method.

Improve stack page printing, and make stack trace printing more
robust (findClass/SelectorOfMethod:forReceiver:).

Make temporary:in:put: et al answer their values. For stObject:at:put:.

Make jumpTable size err message more explanatory.

Rename misnamed internameIsMutable: and internalIsImmutable:
to isOopMutable: and isOopImmutable:.  Affects sqVirtualMachine.c,

but only part of api used in Newspeak VMs.--
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20121215/c0202e0e/attachment.htm

More information about the Vm-dev mailing list