Class new title: Integer subclassof: Number fields: '' declare: 'digitbuffer '; bytesize: true; sharing: BitMasks; sharing: ByteCodes  t1 | t2 [t2 _ t1 asInteger. t2 isLarge  [t2 neg  false] self  t2]  t1 | t2 [t1 = 1  [self < 0  [((self land: 255) lxor: 255) + 1 land: 255] self land: 255] [t1 = 2  [self < 0  [t2 _ (self lshift: 8) lxor: 255. (self land: 255) = 0  [t2 + 1 land: 255] t2] self lshift: 8]]. 0]  t1 | t2 [t1 isNumber  [t2 _ t1 asInteger. t2 isLarge  [true] self  t2] true]  t1 | t2 [t2 _ t1 asInteger. t2 isLarge  [t2 neg] self  t2] * t1 | t2 [t1 is: Integer  [self asLarge * t1] t2 _ t1 asInteger. t2 isLarge  [self asLarge * t1] self * t2] primitive: 8 + t1 | t2 [t1 is: Integer  [self asLarge + t1] t2 _ t1 asInteger. t2 isLarge  [self asLarge + t1] self + t2] - t1 | t2 [t1 is: Integer  [self asLarge - t1] t2 _ t1 asInteger. t2 isLarge  [self asLarge - t1] self - t2] / t1 [0 = t1  [user notify: 'Attempt to divide by 0'] t1 isLarge  [self asLarge / t1] self / t1 asInteger] primitive: 9 < t1 | t2 [t2 _ t1 asInteger. t2 isLarge  [t2 neg  false] self < t2] = t1 | t2 [t1 isNumber  [t2 _ t1 asInteger. t2 isLarge  [false] self = t2] false] > t1 | t2 [t2 _ t1 asInteger. t2 isLarge  [t2 neg] self > t2] \ t1 [0 = t1  [user notify: 'Attempt to divide by 0'] t1 isLarge  [self asLarge \ t1] self \ t1 asInteger] primitive: 10 absprinton: t1 | t2 [t2 _ self \ 10. [self > 9  [self / 10 absprinton: t1]]. t1 next_ t2 + 48] allmask: t1 [t1 = (self land: t1)] anymask: t1 [0  (self land: t1)] asCompilerCode [self < 16  [self + codeLoadField] self < 32  [self - 16 + codeLoadTemp] self < 64  [self - 32 + codeLoadLit] self < 111  [self - 64 + codeLoadLitInd] self < 208  [self] self < 256  [self - 208 + codeSendLit] user notify: 'unexpected byte'] asFloat [user croak] primitive: 32 asInt16 asInt32 [Int32 new high: 0 low: self] asInteger asLarge | t1 t2 [t1 _ self bytes. t2 _ Natural new: t1 length. t2  1 _ t1  1. [t2 length = 2  [t2  2 _ t1  2]]. LargeInteger new bytes: t2 neg: self neg] asLowercase [65  self  [self  90  [self + 32]]] asNatural | t1 [t1 _ Natural new: self length. t1  1 _ self  1. [t1 length > 1  [t1  2 _ self  2]]. t1] asObject [user croak] primitive: 37 asSmall asUppercase [97  self  [self  122  [self - 32]]] between: t1 and: t2 [self  t1 and self  t2] bfpSize [[self < 0  [2] self > 8  [2] 1]] bits: t1 [self bits: t1 start to: t1 stop] bits: t1 to: t2 | t3 t4 [t3 _ t2 - t1 + 1. t4 _ [t3 < 15  [biton  (t3 + 1) - 1] t3 = 15  [32767] 1]. (self lshift: t2 - 15) land: t4] bits: t1 to: t2 _ t3 | t4 t5 [t4 _ t2 - t1 + 1. t5 _ [t4 < 15  [biton  (t4 + 1) - 1] t4 = 15  [32767] 1]. (self land: ((t5 lshift: 15 - t2) lxor: 1)) lor: ((t3 land: t5) lshift: 15 - t2)] bytes cansubscript: t1 [self  1 and self  t1 length] classInit [digitbuffer _ String new: 16] compare: t1 | t2 t3 t4 [t3 _ self length. t3 > t1 length  [3] t3 < t1 length  [1] for t2 from: self length to: 1 by: 1 do [t4 _ self  t2. t4 > (t1  t2)  [3] t4 < (t1  t2)  [1]]. 2] compareChar: t1 | t2 [t2 _ self. [65  t2  [t2  90  [t2 _ t2 + 32]]]. [65  t1  [t1  90  [t1 _ t1 + 32]]]. t2 < t1  [1] t2 = t1  [2] 3] copy emitBfp: t1 on: t2 [t2 pop: 1. 0 = self  [t1 next_ toPop] 1  self and self  8  [t1 next_ self + toShortBfp - 1] t1 emitLong: toLongBfp by: self] emitBytes: t1 | t2 t3 [self < 256  [t1 next_ self] t2 _ self lshift: 8. t3 _ self land: 255. (16 16 32 48 48 )  t2 > t3  [t1 next_ (0 16 32 64 208 )  t2 + t3] t1 next_ toLoadFieldLong + t2 - 1. t1 next_ t3] emitForValue: t1 on: t2 [[self = toSuper  [t1 next_ toLoadSelf] self emitBytes: t1]. t2 push: 1] emitJmp: t1 on: t2 [0 = self  [] 1  self and self  8  [t1 next_ self + toShortJmp - 1] t1 emitLong: toLongJmp by: self] emitsLoad [self < 256  [self < toSmashPop] self < codeSendLit] emittedVariable [[self < 256  [self  toSuper] self < codeSendLit]  [] false] even [(self land: 1) = 0] field: t1 | t2 [t2 _ 15 - (t1 land: 15). self bits: t2 - (t1 / 16) + 1 to: t2] field: t1 _ t2 | t3 [t3 _ 15 - (t1 land: 15). self bits: t3 - (t1 / 16) + 1 to: t3 _ t2] findMacros: t1 compilerTemps: t2 | t3 t4 t5 [self < codeLoadTemp or self > (codeLoadTemp + 255)  [] t4 _ self - codeLoadTemp + 1. t2  t4  false  [] t2  t4  nil  [t2  t4 _ false] for t3 from: t1 position to: 2 by: 2 do [t5 _ t1  (t3 - 1)  (t1  t3). t5 var = self  [t1  t3 _ nil. t1  t3 - 1 _ nil. t2  t4 _ false. nil]]. user notify: 'couldnt find bad macro'] firstPush hash hex4 [self base: 16] hibit | t1 [for t1 to: 16 do [(self land: biton  (17 - t1))  0  [17 - t1]]. 0] inString | t1 [t1 _ String new: 1. t1  1 _ self. t1] instfield: t1 [t1 = 1  [self] user notify: 'arg too big'] intdiv: t1 [t1 is: Integer  [self / t1 , (self \ t1)] t1 is: LargeInteger  [self asLarge intdiv: t1] user notify: 'I give up'] isField [self  codeLoadField and self < codeLoadTemp] isInt isalphanumeric [self isletter  [true] self isdigit] isdigit [self  48  [self  57] false] isletter [self  97  [self  122] self  65  [self  90] false] jmpSize [[self = 0  [0] self < 0  [2] self > 8  [2] 1]] land: t1 [t1 land: self] primitive: 14 last [self  self length] length [self  256 or self  256  [2] 1] lor: t1 [t1 lor: self] primitive: 15 lshift: t1 [NoteTaker and t1 class  Integer  [self asLarge lshift: t1] self lshift: t1 asSmall] primitive: 12 lxor: t1 [t1 lxor: self] primitive: 13 maxVal [NoteTaker  [16383] 32767] minVal [NoteTaker  [16384] 32768] natcompare: t1 | t2 t3 t4 [t3 _ self length. t3 > t1 length  [3] t3 < t1 length  [1] for t2 from: self length to: 1 by: 1 do [t4 _ self  t2. t4 > (t1  t2)  [3] t4 < (t1  t2)  [1]]. 2] natnormalize: t1 | t2 t3 t4 t5 t6 [t4 _ Natural new: self length + 1. t2 _ 0. t5 _ t1 - 8. for t3 to: t4 length do [t6 _ self  t3. t4  t3 _ ((t6 lshift: t1) lor: t2) land: 255. t2 _ t6 lshift: t5]. t4] neg [self < 0  [true] false] negate [0 - self] negated [0 - self] nomask: t1 [0 = (self land: t1)] oneToMeAsStream [Stream new of: (Interval new from: 1 to: self by: 1)] printon: t1 [self < 0  [self = self minVal  [t1 append: [NoteTaker  ['16384'] '32768']] t1 append: ''. 0 - self printon: t1 base: 10] self printon: t1 base: 10] printon: t1 base: t2 | t3 t4 t5 [t5 _ self. [t5 < 0  [t3 _ 1. digitbuffer  1 _ 16384 \ t2 * 2 + self - 32768 \ t2. t5 _ 16384 / t2 * 2 + (self - 32768 / t2)] t3 _ 0]. while t5  t2 do [t3 _ t3 + 1. digitbuffer  t3 _ t5 \ t2. t5 _ t5 / t2]. t3 _ t3 + 1. digitbuffer  t3 _ t5. for t4 to: t3 do [t5 _ digitbuffer  t3. t1 next_ [t5 < 10  [48 + t5] 55 + t5]. t3 _ t3 - 1]] printon: t1 indent: t2 precedence: t3 forValue: t4 decompiler: t5 [t4  false  [] self < 112  [user notify: 'unknown code'] self < 128  [t1 append: ('sender' 'self' '?' '?' '?' '?' '?' '?' '1' '0' '1' '2' '10' 'nil' 'false' 'true' )  (self - 111)] self = 133  [t1 append: 'thisContext'] self = 134  [t1 append: 'super'] self < 167  [user notify: 'unknown code'] self < 208  [t1 append: SpecialOops  (self - 166)] self < 256  [user notify: 'unknown code'] self < 512  [t1 append: (t5 instvar: self)] self < 768  [t1 append: (t5 temp: self)] self < 1024  [t1 append: (t5 literal: self)] self < 1280  [t1 append: (t5 literalIndirect: self)] t1 append: (t5 selector: self)] purge [user croak] primitive: 54 recopy sameAs: t1 [self = t1] sizeForValue [self < 256 or (16 16 32 48 48 )  (self lshift: 8) > (self land: 127)  [1] 2] subscripts: t1 [self cansubscript: t1  [t1  self] user notify: 'Subscript out of bounds: ' + self asString] subscripts: t1 _ t2 | t3 [self cansubscript: t1  [t3 _ t2 asInteger. (t1 is: String) and (t3 isnt: Integer)  [user notify: 'Improper store (non-char into String?)'] t1  self _ t3] user notify: 'Subscript out of bounds: ' + self asString] time [] primitive: 71 time t1 | t2 [t2 _ self time. t1 eval. self time - t2] tokenish [self isletter  [true] self isdigit  [true] '.:' has: self] unsigned [self < 0  [65536.0 + self asFloat] self asFloat] unsignedadd: t1 [self + t1 land: 255] unsignedlessthan: t1 [self < t1] | t1 [self / t1 * t1]