On 1 August 2011 00:02, Chris Muller asqueaker@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 implementation, 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 difference.
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