The Trunk: Kernel-ul.1007.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Kernel-ul.1007.mcz

commits-2
Levente Uzonyi uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-ul.1007.mcz

==================== Summary ====================

Name: Kernel-ul.1007
Author: ul
Time: 20 March 2016, 12:46:32.331305 am
UUID: 10e56dde-9a4b-4fe5-af9f-a02546962e66
Ancestors: Kernel-ul.1006, Kernel-bf.1006

- merged
- quicker SmallInteger>>printOn:base:length:padded: for base 10, the most common case

=============== Diff against Kernel-ul.1006 ===============

Item was changed:
  ----- Method: Pragma>>hasLiteral: (in category 'testing') -----
  hasLiteral: aLiteral
  ^keyword == aLiteral
+   or: [(arguments hasLiteral: aLiteral)
+ or: [keyword == #hasLiteralTest: and: [
+ self methodClass perform: arguments first with: aLiteral]]]!
-   or: [arguments hasLiteral: aLiteral]!

Item was changed:
  ----- Method: SmallInteger>>printOn:base:length:padded: (in category 'printing') -----
  printOn: stream base: base length: minimumLength padded: padWithZeroes
 
  | n numberOfDigits totalLength divisor |
  self < 0
  ifTrue: [
  n := self negated.
  totalLength := 1 ]
  ifFalse: [
  n := self.
  totalLength := 0 ].
  numberOfDigits := n numberOfDigitsInBase: base.
  totalLength := totalLength + numberOfDigits.
  padWithZeroes ifFalse: [
  [ totalLength < minimumLength ] whileTrue: [
  stream space.
  totalLength := totalLength + 1 ] ].
+ self < 0 ifTrue: [ stream nextPut: $- ].
- n = self ifFalse: [ stream nextPut: $- ].
  padWithZeroes ifTrue: [
  [ totalLength < minimumLength ] whileTrue: [
  stream nextPut: $0.
  totalLength := totalLength + 1 ] ].
+ divisor := base = 10
+ ifTrue: [ #(1 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000 100000000000 1000000000000 10000000000000 100000000000000 1000000000000000 10000000000000000 100000000000000000 1000000000000000000) at: numberOfDigits ]
+ ifFalse: [ base raisedToInteger: numberOfDigits - 1 ].
- divisor := (base raisedToInteger: numberOfDigits - 1).
  [ divisor > 0 ] whileTrue: [
  | digit |
  digit := n // divisor.
  stream nextPut: ('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' at: digit + 1).
  n := n - (digit * divisor).
  divisor := divisor // base ]!