[squeak-dev] The Trunk: Kernel-nice.962.mcz
commits at source.squeak.org
commits at source.squeak.org
Sat Oct 31 18:25:36 UTC 2015
Nicolas Cellier uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-nice.962.mcz
==================== Summary ====================
Name: Kernel-nice.962
Author: nice
Time: 31 October 2015, 7:24:30.118 pm
UUID: 7437325d-9085-4d61-9960-368cd42f46fe
Ancestors: Kernel-ul.961
Fix DataStream-serialization of SmallInteger in a 64bits spur VM.
DataStream assumes each and every SmallInteger fits in 32bits which is no more true.
If the SmallInteger is out of 32bits VM SmallInteger range, then use a fake LargeInteger.
Also care to re-normalize LageIntegers at materialization time.
=============== Diff against Kernel-ul.961 ===============
Item was added:
+ ----- Method: LargePositiveInteger>>readDataFrom:size: (in category 'objects from disk') -----
+ readDataFrom: aDataStream size: varsOnDisk
+ ^(super readDataFrom: aDataStream size: varsOnDisk) normalize
+ !
Item was added:
+ ----- Method: SmallInteger>>objectForDataStream: (in category 'objects from disk') -----
+ objectForDataStream: refStrm
+ "In a 64bits sput VM, we may have to fake 32bits SmallInteger for compatibility"
+
+ | large |
+ self > 16r37777777 ifTrue: [
+ large := LargePositiveInteger new: self digitLength neg: false.
+ 1 to: self digitLength do: [:i | large digitAt: i put: (self digitAt: i)].
+ ^large].
+ self < -16r40000000 ifTrue: [
+ large := LargeNegativeInteger new: self digitLength neg: true.
+ 1 to: self digitLength do: [:i | large digitAt: i put: (self digitAt: i)].
+ ^large].
+ ^ self
+ !
More information about the Squeak-dev
mailing list
|