[Vm-dev] Out of the box primitives for bit in ObjectHeader?

David T. Lewis lewis at mail.msen.com
Wed Dec 14 13:07:31 UTC 2011

On Wed, Dec 14, 2011 at 01:35:49PM +0100, Igor Stasenko wrote:
> On 14 December 2011 13:24, Mariano Martinez Peck <marianopeck at gmail.com> wrote:
> >
> > Hi guys. As you may notice, I always try to push in the direction of a VM where we can have both things: a) a really cooler super fast VM for production super critical applications?? and b)?? the most-flexible-possible VM for doing reasearh and experiment.
> >
> > Now I was thinking the following:?? we have one free bit in the ObjectHeader. Let's say you are experimenting with something and you would like to tag objects, such as, "traversed", "processes", "isProxy", etc. To do that small experiment you need to modify the VM, adapt the bit, code the primitives, build the VM, put the smalltalk side part etc etc. So I was thinking why not providing such small functionality out of the box??? the idea would be not to give semantics to the bit since each user will do that. So we just provide the VM with 2 primtives, one to get the value (#getBitValue) and one to set it (#setBitTo:). Choose the names you want.
> >
> > Then we do not integrate nothing in our images that use such bit, there won't be colisions. Then each guy who wants to experiments with that, can use the primitives and do what he wants.
> >
> > Some people is doing something with its bit: Jean Batiptse is doing XXX, I am doing YYY, etc. Either in his work or mine, there are much more changes that just that bit, so in anyway, I will end up needing my own VM.
> >
> > Finally, I could help in providing the code if it is needed.
> >
> > So, what do you think?
> >
> i think why not :)

Indeed, give it a try and see how it works. A good way to try
something like this is to write the two primitives in a new plugin.
That way it is easy to tinker with your code, recompile it, and easily
try it out on the various different flavors of VM.

Also, it a case like this you may end up deciding that the primitives
should remain in an external plugin so that they can be easily removed
from the run time environment if desired. I suspect that security-minded
people might want to do that ;)


More information about the Vm-dev mailing list