I am not sure if I understood correctly, but you may want to take a look to Gemstone. As far as I remember they can have not only different versions of a certain class at the same time, but also instances of a specific class version all living together at the same time.
Thanks for the pointer, but yeah, I know about Gemstone. Our ideas are slightly different however...

The idea is more to have multiple versions of the same live instance at the same time in memory; depending on the version of the code they are related to. This threads running in different versions can look at the same instances but have a slightly different view on the object graph.

The only objects that will have different versions are global objects, hence the thread-local pools to avoid overhead when unnecessary. Then since threads are related to versions, we would have different heaps for the different versions of the global space.

For example in the case of the alias debugger, the debugger has a view on the world that is completely aliased. Its version of the heap will look like that. The rest of the code would however immediately break if it would access the global state in that format since the alias-wrappers are unexpected. So we have 2 versions of the global heap, 1 with aliases and 1 without.

For further reading, look at Erwann's active context.

cheers,
Toon

Reply via email to