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 !