Had a chance to play a bit last night.
Stepping through Integer readFrom: (ReadStream on: '8000000000000000') base:16. tells the tale.
Definitely an edge problem going from SmallInteger into bignums.
I'll try to get into why in the next couple of days.
FYI, -KenD vvv===vvv 16r8000000000000000 printString." '0' " (16r800000000000000 * 16) printStringHex." '8000000000000000' " (16r8000000000000000 * 16) printStringHex. '0' Integer readFrom: (ReadStream on: '8000000000000000') base:16. " 0 " SmallInteger maxVal printStringHex. 'FFFFFFFFFFFFFFF' 16r800000000000000 class." SmallInteger " (16r800000000000000 * 16) class." LargePositiveInteger " 16r8000000000000000 printString." '0' " (16r800000000000000 * 16) printStringHex. " '8000000000008000000000000000' " ^^^===^^^
vm-dev@lists.squeakfoundation.org