<br><br><div class="gmail_quote">On Mon, Oct 18, 2010 at 11:31 AM, Jecel Assumpcao Jr. <span dir="ltr">&lt;<a href="mailto:jecel@merlintec.com">jecel@merlintec.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
We have had several discussions about the tags in Squeak. xxxxxx1 is a<br>
SmallInteger and xxxxxx00 is an object pointer, but xxxxxx10 is not<br>
generally used. In one of the previous discussions somebody did mention<br>
a very obscure case in which this is actually used, but I can&#39;t find<br>
this email right now and don&#39;t remember the details. I do remember that<br>
at the time it seemed to me that it wouldn&#39;t be hard to change this to<br>
free up the 10 tag for some other use.<br>
<br>
The most interesting use, in my opinion, would be to have unboxed<br>
floating point numbers. A very common reaction here to this is that we<br>
will all be moving to 64 bits anyway so it is not worth the trouble to<br>
make this change.  I might have agreed a few years ago, but today it<br>
looks like we will have to deal with 32 bit Squeak for quite a while<br>
yet. And with 4.2 introducing some important image format changes<br>
anyway, this might be the right time to revisit this issue.<br>
<br>
Boxed floats have the disadvantage of requiring an object allocation for<br>
every operation. Their great advantage is being 64 bits, even in 32 bit<br>
images. The unboxed floats would have to be 30 bits, not even 32 bits.<br>
So the fraction size goes from 53 bits to only 21. And while they would<br>
mostly speed things up, the current tag tests would have to go from two<br>
alternatives to three and that would slow them down. The extra tests<br>
would be in what is already a slow path anyway, so it wouldn&#39;t hurt as<br>
much as it would initially seem.<br>
<br>
Does anybody have any data related to this or any opinions?<br></blockquote><div><br></div><div>I think immediate characters are much more generally useful, especially considering unicode.  The current implementation of only codes 0 to 255 being == is error-prone.  The problem 30 bit floats have is that they&#39;re not a useful subset of Float.  A 60-bit immediate float is a different beast altogether.  You really need the number of bits to be sihnificanty greater than the size of the mantissa.  With 30 bits it is still 23 bits short.</div>
<div><br></div><div>2˘</div><div>Eliot </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<font color="#888888"><br>
-- Jecel<br>
<br>
<br>
</font></blockquote></div><br>