Large and small integers on 64 bit Squeak

David T. Lewis lewis at mail.msen.com
Sat Jan 14 14:27:25 UTC 2006


For 32 bit Squeak on 32 bit Intel hardware:
	SmallInteger maxVal hex ==> '16r3FFFFFFF'
	16r3FFFFFFF class ==> SmallInteger
	16r40000000 class ==> LargePositiveInteger
	16r3FFFFFFF + 1 = 16r40000000 ==> true

For 64 bit Squeak on 32 bit Intel hardware:
	SmallInteger maxVal hex ==> '16r3FFFFFFF'
	16r4FFFFFF03FFFFFFF class ==> SmallInteger
	16r4FFFFFF040000000 class ==> LargePositiveInteger
	(16r4FFFFFF03FFFFFFF + 1) = 16r4FFFFFF040000000 ==> true

For 64 bit Squeak on 64 bit AMD hardware (note high order bit):
	SmallInteger maxVal hex ==> '16r3FFFFFFF'
	16rFFFFFFF03FFFFFFF class ==> SmallInteger
	16rFFFFFFF040000000 class ==> LargePositiveInteger
	(16rFFFFFFF03FFFFFFF + 1) = 16rFFFFFFF040000000 ==> true

SmallIntegers are still 31 bits in 64 bit Squeak, so this does not
look right. Or am I just misunderstanding something?

I was looking at this because of
	DateAndTime now ==> -4391-03-28T17:46:11+00:00
on 64 bit Squeak, which definitely does not look right.

Dave




More information about the Vm-dev mailing list