Skip to content

Commit 3bea3fa

Browse files
committed
More efficient reading of Byte and Short values
1 parent ab961f1 commit 3bea3fa

File tree

3 files changed

+30
-24
lines changed
  • jsoniter-scala-core

3 files changed

+30
-24
lines changed

jsoniter-scala-core/js/src/main/scala/com/github/plokhotnyuk/jsoniter_scala/core/JsonReader.scala

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2034,10 +2034,10 @@ final class JsonReader private[jsoniter_scala](
20342034
var b =
20352035
if (isToken) nextToken(head)
20362036
else nextByte(head)
2037-
var isNeg = false
2037+
var s = 0
20382038
if (b == '-') {
20392039
b = nextByte(head)
2040-
isNeg = true
2040+
s = -1
20412041
}
20422042
if (b < '0' || b > '9') numberError()
20432043
var x = b - '0'
@@ -2058,9 +2058,10 @@ final class JsonReader private[jsoniter_scala](
20582058
pos += 1
20592059
}
20602060
head = pos
2061+
x ^= s
2062+
x -= s
20612063
if ((b | 0x20) == 'e' || b == '.') numberError(pos)
2062-
if (isNeg) x = -x
2063-
else if (x == 128) byteOverflowError(pos - 1)
2064+
if (x == 128) byteOverflowError(pos - 1)
20642065
}
20652066
x.toByte
20662067
}
@@ -2069,10 +2070,10 @@ final class JsonReader private[jsoniter_scala](
20692070
var b =
20702071
if (isToken) nextToken(head)
20712072
else nextByte(head)
2072-
var isNeg = false
2073+
var s = 0
20732074
if (b == '-') {
20742075
b = nextByte(head)
2075-
isNeg = true
2076+
s = -1
20762077
}
20772078
if (b < '0' || b > '9') numberError()
20782079
var x = b - '0'
@@ -2093,9 +2094,10 @@ final class JsonReader private[jsoniter_scala](
20932094
pos += 1
20942095
}
20952096
head = pos
2097+
x ^= s
2098+
x -= s
20962099
if ((b | 0x20) == 'e' || b == '.') numberError(pos)
2097-
if (isNeg) x = -x
2098-
else if (x == 32768) shortOverflowError(pos - 1)
2100+
if (x == 32768) shortOverflowError(pos - 1)
20992101
}
21002102
x.toShort
21012103
}

jsoniter-scala-core/jvm/src/main/scala/com/github/plokhotnyuk/jsoniter_scala/core/JsonReader.scala

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1996,10 +1996,10 @@ final class JsonReader private[jsoniter_scala](
19961996
var b =
19971997
if (isToken) nextToken(head)
19981998
else nextByte(head)
1999-
var isNeg = false
1999+
var s = 0
20002000
if (b == '-') {
20012001
b = nextByte(head)
2002-
isNeg = true
2002+
s = -1
20032003
}
20042004
if (b < '0' || b > '9') numberError()
20052005
var x = b - '0'
@@ -2020,9 +2020,10 @@ final class JsonReader private[jsoniter_scala](
20202020
pos += 1
20212021
}
20222022
head = pos
2023+
x ^= s
2024+
x -= s
20232025
if ((b | 0x20) == 'e' || b == '.') numberError(pos)
2024-
if (isNeg) x = -x
2025-
else if (x == 128) byteOverflowError(pos - 1)
2026+
if (x == 128) byteOverflowError(pos - 1)
20262027
}
20272028
x.toByte
20282029
}
@@ -2031,10 +2032,10 @@ final class JsonReader private[jsoniter_scala](
20312032
var b =
20322033
if (isToken) nextToken(head)
20332034
else nextByte(head)
2034-
var isNeg = false
2035+
var s = 0
20352036
if (b == '-') {
20362037
b = nextByte(head)
2037-
isNeg = true
2038+
s = -1
20382039
}
20392040
if (b < '0' || b > '9') numberError()
20402041
var x = b - '0'
@@ -2055,9 +2056,10 @@ final class JsonReader private[jsoniter_scala](
20552056
pos += 1
20562057
}
20572058
head = pos
2059+
x ^= s
2060+
x -= s
20582061
if ((b | 0x20) == 'e' || b == '.') numberError(pos)
2059-
if (isNeg) x = -x
2060-
else if (x == 32768) shortOverflowError(pos - 1)
2062+
if (x == 32768) shortOverflowError(pos - 1)
20612063
}
20622064
x.toShort
20632065
}

jsoniter-scala-core/native/src/main/scala/com/github/plokhotnyuk/jsoniter_scala/core/JsonReader.scala

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1996,10 +1996,10 @@ final class JsonReader private[jsoniter_scala](
19961996
var b =
19971997
if (isToken) nextToken(head)
19981998
else nextByte(head)
1999-
var isNeg = false
1999+
var s = 0
20002000
if (b == '-') {
20012001
b = nextByte(head)
2002-
isNeg = true
2002+
s = -1
20032003
}
20042004
if (b < '0' || b > '9') numberError()
20052005
var x = b - '0'
@@ -2020,9 +2020,10 @@ final class JsonReader private[jsoniter_scala](
20202020
pos += 1
20212021
}
20222022
head = pos
2023+
x ^= s
2024+
x -= s
20232025
if ((b | 0x20) == 'e' || b == '.') numberError(pos)
2024-
if (isNeg) x = -x
2025-
else if (x == 128) byteOverflowError(pos - 1)
2026+
if (x == 128) byteOverflowError(pos - 1)
20262027
}
20272028
x.toByte
20282029
}
@@ -2031,10 +2032,10 @@ final class JsonReader private[jsoniter_scala](
20312032
var b =
20322033
if (isToken) nextToken(head)
20332034
else nextByte(head)
2034-
var isNeg = false
2035+
var s = 0
20352036
if (b == '-') {
20362037
b = nextByte(head)
2037-
isNeg = true
2038+
s = -1
20382039
}
20392040
if (b < '0' || b > '9') numberError()
20402041
var x = b - '0'
@@ -2055,9 +2056,10 @@ final class JsonReader private[jsoniter_scala](
20552056
pos += 1
20562057
}
20572058
head = pos
2059+
x ^= s
2060+
x -= s
20582061
if ((b | 0x20) == 'e' || b == '.') numberError(pos)
2059-
if (isNeg) x = -x
2060-
else if (x == 32768) shortOverflowError(pos - 1)
2062+
if (x == 32768) shortOverflowError(pos - 1)
20612063
}
20622064
x.toShort
20632065
}

0 commit comments

Comments
 (0)