<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2015-10-31 19:25 GMT+01:00  <span dir="ltr">&lt;<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Nicolas Cellier uploaded a new version of Kernel to project The Trunk:<br>
<a href="http://source.squeak.org/trunk/Kernel-nice.962.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/trunk/Kernel-nice.962.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Kernel-nice.962<br>
Author: nice<br>
Time: 31 October 2015, 7:24:30.118 pm<br>
UUID: 7437325d-9085-4d61-9960-368cd42f46fe<br>
Ancestors: Kernel-ul.961<br>
<br>
Fix DataStream-serialization of SmallInteger in a 64bits spur VM.<br>
<br>
DataStream assumes each and every SmallInteger fits in 32bits which is no more true.<br>
If the SmallInteger is out of 32bits VM SmallInteger range, then use a fake LargeInteger.<br>
Also care to re-normalize LageIntegers at materialization time.<br>
<br>
=============== Diff against Kernel-ul.961 ===============<br>
<br>
Item was added:<br>
+ ----- Method: LargePositiveInteger&gt;&gt;readDataFrom:size: (in category &#39;objects from disk&#39;) -----<br>
+ readDataFrom: aDataStream size: varsOnDisk<br>
+       ^(super readDataFrom: aDataStream size: varsOnDisk) normalize<br>
+       !<br>
<br>
Item was added:<br>
+ ----- Method: SmallInteger&gt;&gt;objectForDataStream: (in category &#39;objects from disk&#39;) -----<br>
+ objectForDataStream: refStrm<br>
+       &quot;In a 64bits sput VM, we may have to fake 32bits SmallInteger for compatibility&quot;<br>
+<br>
+       | large |<br>
+       self &gt; 16r37777777 ifTrue: [<br></blockquote><div><br></div><div>Ahem, err...<br></div><div>what&#39;s this 7777777 ???<br></div><div>Probably I was thinking of typing seven F so loud that I fooled myself !!!<br></div><div>Let me retry...<br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+               large := LargePositiveInteger new: self digitLength neg: false.<br>
+               1 to: self digitLength do: [:i | large digitAt: i put: (self digitAt: i)].<br>
+               ^large].<br>
+       self &lt; -16r40000000 ifTrue: [<br>
+               large := LargeNegativeInteger new: self digitLength neg: true.<br>
+               1 to: self digitLength do: [:i | large digitAt: i put: (self digitAt: i)].<br>
+               ^large].<br>
+       ^ self<br>
+ !<br>
<br>
<br>
</blockquote></div><br></div></div>