[squeak-dev] Files-ul.154 seems dangerous, is it needed?
Levente Uzonyi
leves at caesar.elte.hu
Mon May 30 22:35:12 UTC 2016
Hi Dave,
It's an optimization, so it's not mandatory. Of course it's nice to have,
and #adoptInstance: should work (as it does in Spur).
So the question is: why doesn't it work?
The answer is that in V3 ByteString is compact, but ByteArray is not.
Since the compact classes array has plenty of space, I suggest ByteArray
should be compact as well.
If you evaluate [ByteArray becomeCompact] in a V3 image, then you'll find
that the change will work in those images, too.
I've mentioned it earlier that Spur made some optimizations possible, that
are not V3 compatible. Another widely used example is using #== for
Character comparison. These will of course not work in V3 images, and
detecting the problems due to these changes is extremely hard.
Levente
On Mon, 30 May 2016, David T. Lewis wrote:
> We did this change recently:
>
> Name: Files-ul.154
> Time: 15 May 2016, 11:17:08.015805 pm
>
> - use #adoptInstance: to convert between binary and ascii mode instead of creating new collections
>
> This assumes that we can convert a ByteString to a ByteArray using
> Behavior>>adoptInstance. If the conversion does not work, as it the case
> with a V3 image and Cog or interpreter VM, then we end up with a corrupt
> image after trying to save the image as new version (and maybe other cases
> as well).
>
> It does not seem that #ascii and #binary are called frequently, even when
> doing Monticello updates, so I suspect that the optimization is not very
> important.
>
> Do we need the #ascii and #binary optimizations in Files-ul.154?
>
> Dave
>
>
More information about the Squeak-dev
mailing list
|