@@ -2244,7 +2244,7 @@ final class JsonReader private[jsoniter_scala](
2244
2244
b >= '0' && b <= '9'
2245
2245
}) {
2246
2246
if (m10 < 922337203685477580L ) {
2247
- m10 = m10 * 10 + (b - '0' )
2247
+ m10 = ( m10 << 3 ) + (m10 << 1 ) + (b - '0' )
2248
2248
digits += 1
2249
2249
} else e10 += 1
2250
2250
pos += 1
@@ -2263,7 +2263,7 @@ final class JsonReader private[jsoniter_scala](
2263
2263
b >= '0' && b <= '9'
2264
2264
}) {
2265
2265
if (m10 < 922337203685477580L ) {
2266
- m10 = m10 * 10 + (b - '0' )
2266
+ m10 = ( m10 << 3 ) + (m10 << 1 ) + (b - '0' )
2267
2267
digits += 1
2268
2268
}
2269
2269
noFracDigits = false
@@ -2392,7 +2392,7 @@ final class JsonReader private[jsoniter_scala](
2392
2392
b >= '0' && b <= '9'
2393
2393
}) {
2394
2394
if (m10 < 922337203685477580L ) {
2395
- m10 = m10 * 10 + (b - '0' )
2395
+ m10 = ( m10 << 3 ) + (m10 << 1 ) + (b - '0' )
2396
2396
digits += 1
2397
2397
} else e10 += 1
2398
2398
pos += 1
@@ -2411,7 +2411,7 @@ final class JsonReader private[jsoniter_scala](
2411
2411
b >= '0' && b <= '9'
2412
2412
}) {
2413
2413
if (m10 < 922337203685477580L ) {
2414
- m10 = m10 * 10 + (b - '0' )
2414
+ m10 = ( m10 << 3 ) + (m10 << 1 ) + (b - '0' )
2415
2415
digits += 1
2416
2416
}
2417
2417
noFracDigits = false
@@ -2665,12 +2665,12 @@ final class JsonReader private[jsoniter_scala](
2665
2665
var x = (buf(from) - '0' ).toLong
2666
2666
from += 1
2667
2667
while (from < fracLimit) {
2668
- x = x * 10 + (buf(from) - '0' )
2668
+ x = (x << 3 ) + (x << 1 ) + (buf(from) - '0' )
2669
2669
from += 1
2670
2670
}
2671
2671
from += 1
2672
2672
while (from < limit) {
2673
- x = x * 10 + (buf(from) - '0' )
2673
+ x = (x << 3 ) + (x << 1 ) + (buf(from) - '0' )
2674
2674
from += 1
2675
2675
}
2676
2676
if (s != 0 ) x = - x
@@ -2697,7 +2697,7 @@ final class JsonReader private[jsoniter_scala](
2697
2697
}
2698
2698
var x1 = x.toLong
2699
2699
while (pos < limit) {
2700
- x1 = x1 * 10 + (buf(pos) - '0' )
2700
+ x1 = ( x1 << 3 ) + (x1 << 1 ) + (buf(pos) - '0' )
2701
2701
pos += 1
2702
2702
}
2703
2703
if (s != 0 ) x1 = - x1
@@ -2729,7 +2729,7 @@ final class JsonReader private[jsoniter_scala](
2729
2729
}
2730
2730
var x1 = x.toLong
2731
2731
while (pos < limit) {
2732
- x1 = x1 * 10 + (buf(pos) - '0' )
2732
+ x1 = ( x1 << 3 ) + (x1 << 1 ) + (buf(pos) - '0' )
2733
2733
pos += 1
2734
2734
}
2735
2735
if (s != 0 ) x1 = - x1
@@ -2758,19 +2758,20 @@ final class JsonReader private[jsoniter_scala](
2758
2758
var x1 = x.toLong
2759
2759
val limit2 = limit - 18
2760
2760
while (pos < limit2) {
2761
- x1 = x1 * 10 + (buf(pos) - '0' )
2761
+ x1 = ( x1 << 3 ) + (x1 << 1 ) + (buf(pos) - '0' )
2762
2762
pos += 1
2763
2763
}
2764
2764
var x2 =
2765
- (buf(pos) * 10 + buf(pos + 1 )) * 10000000000000000L +
2766
- ((buf(pos + 2 ) * 10 + buf(pos + 3 )) * 1000000 +
2767
- (buf(pos + 4 ) * 10 + buf(pos + 5 )) * 10000 +
2768
- (buf(pos + 6 ) * 10 + buf(pos + 7 )) * 100 +
2769
- (buf(pos + 8 ) * 10 + buf(pos + 9 ))) * 100000000L +
2770
- ((buf(pos + 10 ) * 10 + buf(pos + 11 )) * 1000000 +
2771
- (buf(pos + 12 ) * 10 + buf(pos + 13 )) * 10000 +
2772
- (buf(pos + 14 ) * 10 + buf(pos + 15 )) * 100 +
2773
- buf(pos + 16 ) * 10 + buf(pos + 17 )) - 5333333333333333328L // 5333333333333333328L == '0' * 111111111111111111L
2765
+ ((buf(pos) * 10 + buf(pos + 1 ) - 528 ) * 10000000 + // 528 == '0' * 11
2766
+ ((buf(pos + 2 ) * 10 + buf(pos + 3 )) * 100000 +
2767
+ (buf(pos + 4 ) * 10 + buf(pos + 5 )) * 1000 +
2768
+ (buf(pos + 6 ) * 10 + buf(pos + 7 )) * 10 +
2769
+ buf(pos + 8 ) - 53333328 )) * 1000000000L + // 53333328 == '0' * 1111111
2770
+ ((buf(pos + 9 ) * 10 + buf(pos + 10 ) - 528 ) * 10000000 + // 528 == '0' * 11
2771
+ ((buf(pos + 11 ) * 10 + buf(pos + 12 )) * 100000 +
2772
+ (buf(pos + 13 ) * 10 + buf(pos + 14 )) * 1000 +
2773
+ (buf(pos + 15 ) * 10 + buf(pos + 16 )) * 10 +
2774
+ buf(pos + 17 ) - 53333328 )) // 53333328 == '0' * 1111111
2774
2775
if (s != 0 ) {
2775
2776
x1 = - x1
2776
2777
x2 = - x2
@@ -2796,18 +2797,18 @@ final class JsonReader private[jsoniter_scala](
2796
2797
val firstBlockLimit = len % 9 + p
2797
2798
var pos = p
2798
2799
while (pos < firstBlockLimit) {
2799
- x = x * 10 + (buf(pos) - '0' )
2800
+ x = (x << 3 ) + (x << 1 ) + (buf(pos) - '0' )
2800
2801
pos += 1
2801
2802
}
2802
2803
magnitude(last) = x.toInt
2803
2804
var first = last
2804
2805
while (pos < limit) {
2805
2806
x =
2806
- (buf(pos) * 10 + buf(pos + 1 )) * 10000000L +
2807
+ (buf(pos) * 10 + buf(pos + 1 ) - 528 ) * 10000000 + // 528 == '0' * 11
2807
2808
((buf(pos + 2 ) * 10 + buf(pos + 3 )) * 100000 +
2808
2809
(buf(pos + 4 ) * 10 + buf(pos + 5 )) * 1000 +
2809
2810
(buf(pos + 6 ) * 10 + buf(pos + 7 )) * 10 +
2810
- buf(pos + 8 )) - 5333333328L // 5333333328L == '0' * 111111111L
2811
+ buf(pos + 8 ) - 53333328 ) // 53333328 == '0' * 1111111
2811
2812
pos += 9
2812
2813
first = Math .max(first - 1 , 0 )
2813
2814
var i = last
@@ -2901,7 +2902,7 @@ final class JsonReader private[jsoniter_scala](
2901
2902
b >= '0' && b <= '9'
2902
2903
}) {
2903
2904
if (x < - 922337203685477580L || {
2904
- x = x * 10 + ('0' - b)
2905
+ x = (x << 3 ) + (x << 1 ) + ('0' - b)
2905
2906
x > 0
2906
2907
}) durationError(pos)
2907
2908
pos += 1
0 commit comments