<div dir="ltr"><div><div>I have this infamous warning : shift count &gt; width of type<br><br>value = (((usqInt) (((usqInt)oop))) &gt;&gt; (3 + 1)) + ((oop &amp; (1 &lt;&lt; 3)<br>    ? <b>-1 &lt;&lt; ((64 - 3) - 1)</b><br>    : 0));<br><br></div>It&#39;s true, -1 is an int (32 bits) so the 60 bit shift may not work...<br><br></div>May I suggest Smalltalk code change:<br><br>    ^oop asUnsignedInteger &gt;&gt; (self numTagBits + 1)<br>     + ((oop anyMask: self smallFloatSignBit)<br>        ifTrue: [-1 <b>asUnsignedInteger</b> &lt;&lt; (64 - self numTagBits - 1)]<br>        ifFalse: [0])<br></div>