[squeak-dev] The Trunk: Kernel-eem.885.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Nov 19 23:34:14 UTC 2014
Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.885.mcz
==================== Summary ====================
Name: Kernel-eem.885
Author: eem
Time: 19 November 2014, 3:33:32.003 pm
UUID: 6e239e5b-b957-4ff6-a3ce-bb3ee10cf826
Ancestors: Kernel-eem.884
Steal the Smalltalk-80 V2 definition of SmallInteger>>
digitAt: which doesn't assume max digit length.
=============== Diff against Kernel-eem.884 ===============
Item was changed:
----- Method: SmallInteger>>digitAt: (in category 'system primitives') -----
digitAt: n
+ "Answer the value of an apparent byte-indexable field in the receiver,
+ analogous. to the large integers, which are organized as bytes."
+
+ n = 1 ifTrue: "Negate carefully in case the receiver is SmallInteger minVal"
+ [self < 0 ifTrue:
+ [^-256 - self bitAnd: 255].
+ ^self bitAnd: 255].
+ self < 0 ifTrue:
+ [^(-256 - self bitShift: -8) + 1 digitAt: n - 1].
+ ^(self bitShift: 8 - (n bitShift: 3)) bitAnd: 255!
- "Answer the value of an indexable field in the receiver. LargePositiveInteger uses bytes of base two number, and each is a 'digit' base 256. Fail if the argument (the index) is not an Integer or is out of bounds."
- n>4 ifTrue: [^ 0].
- self < 0
- ifTrue:
- [self = SmallInteger minVal ifTrue:
- ["Can't negate minVal -- treat specially"
- ^ #(0 0 0 64) at: n].
- ^ ((0-self) bitShift: (1-n)*8) bitAnd: 16rFF]
- ifFalse: [^ (self bitShift: (1-n)*8) bitAnd: 16rFF]!
More information about the Squeak-dev
mailing list
|