Skip to content

Commit

Permalink
More efficient parsing of zero numbers
Browse files Browse the repository at this point in the history
Co-authored-by: xtonik <[email protected]>
  • Loading branch information
plokhotnyuk and plokhotnyuk committed Mar 1, 2024
1 parent 26060f7 commit 9346ad0
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2039,10 +2039,10 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
s = -1
}
if (b < '0' || b > '9') numberError()
var x = b - '0'
if (isToken && x == 0) ensureNotLeadingZero()
else {
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
while ((pos < tail || {
Expand Down Expand Up @@ -2075,10 +2075,10 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
s = -1
}
if (b < '0' || b > '9') numberError()
var x = b - '0'
if (isToken && x == 0) ensureNotLeadingZero()
else {
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
while ((pos < tail || {
Expand Down Expand Up @@ -2111,10 +2111,10 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
s = 0
}
if (b < '0' || b > '9') numberError()
var x = '0' - b
if (isToken && x == 0) ensureNotLeadingZero()
else {
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
while ((pos < tail || {
Expand Down Expand Up @@ -2149,12 +2149,12 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
isPos = false
}
if (b < '0' || b > '9') numberError()
var x1 = '0' - b
if (isToken && x1 == 0) {
ensureNotLeadingZero()
0L
} else {
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
while (x1 > -214748364 && (pos < tail || {
Expand Down Expand Up @@ -2213,7 +2213,6 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
isNeg = true
}
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
val from = pos - 1
Expand All @@ -2235,6 +2234,7 @@ final class JsonReader private[jsoniter_scala](
b >= '0' && b <= '9'
}) leadingZeroError(pos - 1)
} else {
if (b < '0' || b > '9') numberError()
while ((pos < tail || {
pos = loadMore(pos)
buf = this.buf
Expand Down Expand Up @@ -2361,7 +2361,6 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
isNeg = true
}
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
val from = pos - 1
Expand All @@ -2383,6 +2382,7 @@ final class JsonReader private[jsoniter_scala](
b >= '0' && b <= '9'
}) leadingZeroError(pos - 1)
} else {
if (b < '0' || b > '9') numberError()
while ((pos < tail || {
pos = loadMore(pos)
buf = this.buf
Expand Down Expand Up @@ -2519,11 +2519,11 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
s = -1
}
if (b < '0' || b > '9') numberError()
if (isToken && b == '0') {
ensureNotLeadingZero()
BigInt(0)
} else {
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
var from = pos - 1
Expand Down Expand Up @@ -2562,7 +2562,6 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
s = -1
}
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
var from = pos - 1
Expand All @@ -2582,6 +2581,7 @@ final class JsonReader private[jsoniter_scala](
b >= '0' && b <= '9'
}) leadingZeroError(pos - 1)
} else {
if (b < '0' || b > '9') numberError()
digits -= pos
while ((pos < tail || {
digits += pos
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2001,10 +2001,10 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
s = -1
}
if (b < '0' || b > '9') numberError()
var x = b - '0'
if (isToken && x == 0) ensureNotLeadingZero()
else {
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
while ((pos < tail || {
Expand Down Expand Up @@ -2037,10 +2037,10 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
s = -1
}
if (b < '0' || b > '9') numberError()
var x = b - '0'
if (isToken && x == 0) ensureNotLeadingZero()
else {
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
while ((pos < tail || {
Expand Down Expand Up @@ -2073,10 +2073,10 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
s = 0
}
if (b < '0' || b > '9') numberError()
var x = '0' - b
if (isToken && x == 0) ensureNotLeadingZero()
else {
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
while ((pos < tail || {
Expand Down Expand Up @@ -2111,10 +2111,10 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
s = 0L
}
if (b < '0' || b > '9') numberError()
var x = ('0' - b).toLong
if (isToken && x == 0) ensureNotLeadingZero()
else {
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
var dec = 0L
Expand Down Expand Up @@ -2178,7 +2178,6 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
isNeg = true
}
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
val from = pos - 1
Expand All @@ -2200,6 +2199,7 @@ final class JsonReader private[jsoniter_scala](
b >= '0' && b <= '9'
}) leadingZeroError(pos - 1)
} else {
if (b < '0' || b > '9') numberError()
while ((pos < tail || {
pos = loadMore(pos)
buf = this.buf
Expand Down Expand Up @@ -2330,7 +2330,6 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
isNeg = true
}
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
val from = pos - 1
Expand All @@ -2352,6 +2351,7 @@ final class JsonReader private[jsoniter_scala](
b >= '0' && b <= '9'
}) leadingZeroError(pos - 1)
} else {
if (b < '0' || b > '9') numberError()
while ((pos < tail || {
pos = loadMore(pos)
buf = this.buf
Expand Down Expand Up @@ -2483,11 +2483,11 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
s = -1
}
if (b < '0' || b > '9') numberError()
if (isToken && b == '0') {
ensureNotLeadingZero()
BigInt(0)
} else {
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
var from = pos - 1
Expand Down Expand Up @@ -2542,7 +2542,6 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
s = -1
}
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
var from = pos - 1
Expand All @@ -2562,6 +2561,7 @@ final class JsonReader private[jsoniter_scala](
b >= '0' && b <= '9'
}) leadingZeroError(pos - 1)
} else {
if (b < '0' || b > '9') numberError()
digits -= pos
var m, bs = 0L
while ((pos + 7 < tail || {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2001,10 +2001,10 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
s = -1
}
if (b < '0' || b > '9') numberError()
var x = b - '0'
if (isToken && x == 0) ensureNotLeadingZero()
else {
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
while ((pos < tail || {
Expand Down Expand Up @@ -2037,10 +2037,10 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
s = -1
}
if (b < '0' || b > '9') numberError()
var x = b - '0'
if (isToken && x == 0) ensureNotLeadingZero()
else {
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
while ((pos < tail || {
Expand Down Expand Up @@ -2073,10 +2073,10 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
s = 0
}
if (b < '0' || b > '9') numberError()
var x = '0' - b
if (isToken && x == 0) ensureNotLeadingZero()
else {
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
while ((pos < tail || {
Expand Down Expand Up @@ -2111,10 +2111,10 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
s = 0L
}
if (b < '0' || b > '9') numberError()
var x = ('0' - b).toLong
if (isToken && x == 0) ensureNotLeadingZero()
else {
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
var dec = 0L
Expand Down Expand Up @@ -2178,7 +2178,6 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
isNeg = true
}
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
val from = pos - 1
Expand All @@ -2200,6 +2199,7 @@ final class JsonReader private[jsoniter_scala](
b >= '0' && b <= '9'
}) leadingZeroError(pos - 1)
} else {
if (b < '0' || b > '9') numberError()
while ((pos < tail || {
pos = loadMore(pos)
buf = this.buf
Expand Down Expand Up @@ -2330,7 +2330,6 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
isNeg = true
}
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
val from = pos - 1
Expand All @@ -2352,6 +2351,7 @@ final class JsonReader private[jsoniter_scala](
b >= '0' && b <= '9'
}) leadingZeroError(pos - 1)
} else {
if (b < '0' || b > '9') numberError()
while ((pos < tail || {
pos = loadMore(pos)
buf = this.buf
Expand Down Expand Up @@ -2480,11 +2480,11 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
s = -1
}
if (b < '0' || b > '9') numberError()
if (isToken && b == '0') {
ensureNotLeadingZero()
BigInt(0)
} else {
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
var from = pos - 1
Expand Down Expand Up @@ -2539,7 +2539,6 @@ final class JsonReader private[jsoniter_scala](
b = nextByte(head)
s = -1
}
if (b < '0' || b > '9') numberError()
var pos = head
var buf = this.buf
var from = pos - 1
Expand All @@ -2559,6 +2558,7 @@ final class JsonReader private[jsoniter_scala](
b >= '0' && b <= '9'
}) leadingZeroError(pos - 1)
} else {
if (b < '0' || b > '9') numberError()
digits -= pos
var m, bs = 0L
while ((pos + 7 < tail || {
Expand Down

0 comments on commit 9346ad0

Please sign in to comment.