<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2015-10-31 19:25 GMT+01:00 <span dir="ltr"><<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>></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>>readDataFrom:size: (in category 'objects from disk') -----<br>
+ readDataFrom: aDataStream size: varsOnDisk<br>
+ ^(super readDataFrom: aDataStream size: varsOnDisk) normalize<br>
+ !<br>
<br>
Item was added:<br>
+ ----- Method: SmallInteger>>objectForDataStream: (in category 'objects from disk') -----<br>
+ objectForDataStream: refStrm<br>
+ "In a 64bits sput VM, we may have to fake 32bits SmallInteger for compatibility"<br>
+<br>
+ | large |<br>
+ self > 16r37777777 ifTrue: [<br></blockquote><div><br></div><div>Ahem, err...<br></div><div>what'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 < -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>