[Vm-dev] A trick to speedup #become: (but not becomeForward:)

Igor Stasenko siguctua at gmail.com
Sun Jul 31 22:30:56 UTC 2011

On 1 August 2011 00:02, Chris Muller <asqueaker at gmail.com> wrote:
> I'm not sure how easy it would be to get the physical size of the
> objects which weren't retrieved.  As you said, encoding it in the
> referencing oid might be the only way - which would require rewriting
> of the OidMap and upgrade of legacy repositories.  :(

Yes. And if you remember i gave you the code with another oid mapping
which avoids using big-integers and a bit more simpler (i hope).
So maybe it is time to check what could be done there?

I don't having time for it right now, hoping that you have it.

> I understand why it won't work with becomeForward: - because that
> would be creating two copies of the object.  But Magma needs to
> becomeForward:, rather than become:, its proxies... (pause to remember
> for sure why...).  I think because of proxies to Symbol selectors -
> you can't become: any object to a Symbol selector or else their
> CompiledMethod literals would refer to the Proxy...  So that would be
> another hurdle to overcome to succeed with your idea.

Symbols require special handling anyways: you must check/intern them
once reified.
But for majority of other objects, using these prims could mean a vast

> Just so you know, I _did_ implement your other workaround idea - where
> reified proxies are "saved up" into a OrderedCollection which is then
> bulk-becomed only once every 30 seconds.  I didn't know if you saw it
> in the last release (Magma 1.2) - it was a great performance
> improvement!  Your creative ideas are really helping Magma.


> Thanks,
>  Chris

Best regards,
Igor Stasenko AKA sig.

More information about the Vm-dev mailing list