Skip to content

Commit 231dd2f

Browse files
committed
More efficient writing of double values with Scala.js
1 parent 3f8fb28 commit 231dd2f

File tree

1 file changed

+10
-10
lines changed
  • jsoniter-scala-core/js/src/main/scala/com/github/plokhotnyuk/jsoniter_scala/core

1 file changed

+10
-10
lines changed

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2453,7 +2453,7 @@ final class JsonWriter private[jsoniter_scala](
24532453
m2 &= 0xFFFFFFFFFFFFFL
24542454
e2 = -1074
24552455
if (m2 < 3) {
2456-
m2 *= 10
2456+
m2 = (m2 << 3) + (m2 << 1)
24572457
e10Corr = 1
24582458
}
24592459
} else if (e2 == 972) illegalNumberError(x)
@@ -2467,22 +2467,22 @@ final class JsonWriter private[jsoniter_scala](
24672467
val g1 = gs(i)
24682468
val g0 = gs(i + 1)
24692469
val h = (e10 * -108853 >> 15) + e2 + 2
2470-
val cb = m2 << 2
2470+
val cbh = m2 << (h + 2)
24712471
val vbCorr = (m2.toInt & 0x1) - 1
2472-
val vb = rop(g1, g0, cb << h)
2473-
val vbl = rop(g1, g0, cb - cblCorr << h) + vbCorr
2474-
val vbr = rop(g1, g0, cb + 2 << h) - vbCorr
2472+
val vb = rop(g1, g0, cbh)
2473+
val vbl = rop(g1, g0, cbh - (cblCorr << h))
2474+
val vbr = rop(g1, g0, cbh + (2 << h))
24752475
var diff = 0
24762476
if (vb < 400 || {
24772477
m10 = vb / 40
2478-
val vb40 = m10 * 40
2479-
diff = (vbl - vb40).toInt
2480-
((vb40 - vbr).toInt + 40 ^ diff) >= 0
2478+
val vb40 = (m10 << 5) + (m10 << 3)
2479+
diff = (vbl - vb40).toInt + vbCorr
2480+
((vb40 - vbr).toInt + vbCorr + 40 ^ diff) >= 0
24812481
}) {
24822482
m10 = vb >> 2
24832483
val vb4 = m10 << 2
2484-
diff = (vbl - vb4).toInt
2485-
if (((vb4 - vbr).toInt + 4 ^ diff) >= 0) diff = (vb.toInt & 0x3) + (m10.toInt & 0x1) - 3
2484+
diff = (vbl - vb4).toInt + vbCorr
2485+
if (((vb4 - vbr).toInt + vbCorr + 4 ^ diff) >= 0) diff = (vb.toInt & 0x3) + (m10.toInt & 0x1) - 3
24862486
} else e10Corr = -1
24872487
m10 += ~diff >>> 31
24882488
e10 -= e10Corr

0 commit comments

Comments
 (0)