[Vm-dev] Questions related to immutability in Cog

Ryan Macnak rmacnak at gmail.com
Tue Nov 10 16:35:04 UTC 2015

Hi Clement,

Per object immutability was implemented in the old, pre-Cog Newspeak VM
(NewspeakInterpreter). It has not yet been implemented current Cog Newspeak
VM (Stack/CoInterpreter + NewspeakVM=true), but the necessary bit is
reserved in the object header. It was used as part of an orthogonal
synchronization scheme to detect changed objects: mark synchronized objects
as immutable, trap on change attempt, add to dirty list and mark as mutable
again. A marked object is only shallowly immutable, and its instance
variables may contain mutable objects.


On Tue, Nov 10, 2015 at 6:17 AM, Clément Bera <bera.clement at gmail.com>

> Hello everyone,
> I tried to understand how immutability is implemented in the CogVM
> (NewSpeak flavor). I have some questions:
> - Does it actually work and is it used ?
> - Does an object being immutable means that you can't edit its variable
> fields only or that you can't either edit its instance variables ? Because
> I don't see any code checking for instance variable stores in the Newspeak
> interpreter.
> - How does the immutability check works in machine code ? In the Newspeak
> interpreter there is an immutability check in #at:put: . In the at:put:
> generated by the JIT (for example CogObjectRepresentationFor32BitSpur) I
> don't see any immutability check. Did I miss some clever bit trick ? Does
> the Newspeak spur VMs use the #at:put: machine code version of the
> primitive ?
> Thanks !
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20151110/cf864ffb/attachment.htm

More information about the Vm-dev mailing list