Skip to content

Commit 040f189

Browse files
committed
More inlining for Scala.js in jsoniter-scala-circe
1 parent 0a116e1 commit 040f189

File tree

2 files changed

+69
-6
lines changed

2 files changed

+69
-6
lines changed

jsoniter-scala-circe/shared/src/main/scala/com/github/plokhotnyuk/jsoniter_scala/circe/CirceCodecs.scala

Lines changed: 66 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,208 +63,268 @@ object CirceCodecs {
6363
// codecs for numeric types
6464
implicit val byteC3C: Codec[Byte] = io.circe.JsoniterScalaCodec.byteCodec {
6565
val codec: JsonValueCodec[Byte] = new JsonValueCodec[Byte] {
66+
@inline
6667
override def decodeValue(in: JsonReader, default: Byte): Byte = {
6768
val x = in.readByte(isToken = false)
6869
if (in.hasRemaining()) in.decodeError("expected '\"'")
6970
x
7071
}
7172

73+
@inline
7274
override def encodeValue(x: Byte, out: JsonWriter): Unit = out.writeVal(x)
7375

76+
@inline
7477
override def nullValue: Byte = 0
7578
}
7679
s =>
7780
numberPool.get.read(codec, s, readerConfig)
7881
}
7982
implicit val shortC3C: Codec[Short] = io.circe.JsoniterScalaCodec.shortCodec {
8083
val codec: JsonValueCodec[Short] = new JsonValueCodec[Short] {
84+
@inline
8185
override def decodeValue(in: JsonReader, default: Short): Short = {
8286
val x = in.readShort(isToken = false)
8387
if (in.hasRemaining()) in.decodeError("expected '\"'")
8488
x
8589
}
8690

91+
@inline
8792
override def encodeValue(x: Short, out: JsonWriter): Unit = out.writeVal(x)
8893

94+
@inline
8995
override def nullValue: Short = 0
9096
}
9197
s =>
9298
numberPool.get.read(codec, s, readerConfig)
9399
}
94100
implicit val intC3C: Codec[Int] = io.circe.JsoniterScalaCodec.intCodec {
95101
val codec: JsonValueCodec[Int] = new JsonValueCodec[Int] {
102+
@inline
96103
override def decodeValue(in: JsonReader, default: Int): Int = {
97104
val x = in.readInt(isToken = false)
98105
if (in.hasRemaining()) in.decodeError("expected '\"'")
99106
x
100107
}
101108

109+
@inline
102110
override def encodeValue(x: Int, out: JsonWriter): Unit = out.writeVal(x)
103111

112+
@inline
104113
override def nullValue: Int = 0
105114
}
106115
s =>
107116
numberPool.get.read(codec, s, readerConfig)
108117
}
109118
implicit val longC3C: Codec[Long] = io.circe.JsoniterScalaCodec.longCodec {
110119
val codec: JsonValueCodec[Long] = new JsonValueCodec[Long] {
120+
@inline
111121
override def decodeValue(in: JsonReader, default: Long): Long = {
112122
val x = in.readLong(isToken = false)
113123
if (in.hasRemaining()) in.decodeError("expected '\"'")
114124
x
115125
}
116126

127+
@inline
117128
override def encodeValue(x: Long, out: JsonWriter): Unit = out.writeVal(x)
118129

119-
override def nullValue: Long = 0
130+
@inline
131+
override def nullValue: Long = 0L
120132
}
121133
s =>
122134
numberPool.get.read(codec, s, readerConfig)
123135
}
124136
implicit val floatC3C: Codec[Float] = io.circe.JsoniterScalaCodec.floatCodec {
125137
val codec: JsonValueCodec[Float] = new JsonValueCodec[Float] {
138+
@inline
126139
override def decodeValue(in: JsonReader, default: Float): Float = {
127140
val x = in.readFloat(isToken = false)
128141
if (in.hasRemaining()) in.decodeError("expected '\"'")
129142
x
130143
}
131144

145+
@inline
132146
override def encodeValue(x: Float, out: JsonWriter): Unit = out.writeVal(x)
133147

134-
override def nullValue: Float = 0
148+
@inline
149+
override def nullValue: Float = 0.0f
135150
}
136151
s =>
137152
numberPool.get.read(codec, s, readerConfig)
138153
}
139154
implicit val doubleC3C: Codec[Double] = io.circe.JsoniterScalaCodec.doubleCodec {
140155
val codec: JsonValueCodec[Double] = new JsonValueCodec[Double] {
156+
@inline
141157
override def decodeValue(in: JsonReader, default: Double): Double = {
142158
val x = in.readDouble(isToken = false)
143159
if (in.hasRemaining()) in.decodeError("expected '\"'")
144160
x
145161
}
146162

163+
@inline
147164
override def encodeValue(x: Double, out: JsonWriter): Unit = out.writeVal(x)
148165

149-
override def nullValue: Double = 0
166+
@inline
167+
override def nullValue: Double = 0.0
150168
}
151169
s =>
152170
numberPool.get.read(codec, s, readerConfig)
153171
}
154172
implicit val bigIntC3C: Codec[BigInt] = io.circe.JsoniterScalaCodec.bigIntCodec {
155173
val codec: JsonValueCodec[BigInt] = new JsonValueCodec[BigInt] {
174+
@inline
156175
override def decodeValue(in: JsonReader, default: BigInt): BigInt = {
157176
val x = in.readBigInt(isToken = false, default, JsonReader.bigIntDigitsLimit)
158177
if (in.hasRemaining()) in.decodeError("expected '\"'")
159178
x
160179
}
161180

181+
@inline
162182
override def encodeValue(x: BigInt, out: JsonWriter): Unit = out.writeVal(x)
163183

184+
@inline
164185
override def nullValue: BigInt = null
165186
}
166187
s =>
167188
numberPool.get.read(codec, s, readerConfig)
168189
}
169190
implicit val bigDecimalC3C: Codec[BigDecimal] = io.circe.JsoniterScalaCodec.bigDecimalCodec {
170191
val codec: JsonValueCodec[BigDecimal] = new JsonValueCodec[BigDecimal] {
192+
@inline
171193
override def decodeValue(in: JsonReader, default: BigDecimal): BigDecimal = {
172194
val x = in.readBigDecimal(isToken = false, default, JsonReader.bigDecimalMathContext,
173195
JsonReader.bigDecimalScaleLimit, JsonReader.bigDecimalDigitsLimit)
174196
if (in.hasRemaining()) in.decodeError("expected '\"'")
175197
x
176198
}
177199

200+
@inline
178201
override def encodeValue(x: BigDecimal, out: JsonWriter): Unit = out.writeVal(x)
179202

203+
@inline
180204
override def nullValue: BigDecimal = null
181205
}
182206
s =>
183207
numberPool.get.read(codec, s, readerConfig)
184208
}
185209
// codecs for java.time.* types
186210
implicit val durationC3C: Codec[Duration] = new ShortAsciiStringCodec(new JsonValueCodec[Duration] {
211+
@inline
187212
override def decodeValue(in: JsonReader, default: Duration): Duration = in.readDuration(default)
188213

214+
@inline
189215
override def encodeValue(x: Duration, out: JsonWriter): Unit = out.writeVal(x)
190216

217+
@inline
191218
override def nullValue: Duration = null
192219
}, "Duration")
193220
implicit val instantC3C: Codec[Instant] = new ShortAsciiStringCodec(new JsonValueCodec[Instant] {
221+
@inline
194222
override def decodeValue(in: JsonReader, default: Instant): Instant = in.readInstant(default)
195223

224+
@inline
196225
override def encodeValue(x: Instant, out: JsonWriter): Unit = out.writeVal(x)
197226

227+
@inline
198228
override def nullValue: Instant = null
199229
}, "Instant")
200230
implicit val localDateC3C: Codec[LocalDate] = new ShortAsciiStringCodec(new JsonValueCodec[LocalDate] {
231+
@inline
201232
override def decodeValue(in: JsonReader, default: LocalDate): LocalDate = in.readLocalDate(default)
202233

234+
@inline
203235
override def encodeValue(x: LocalDate, out: JsonWriter): Unit = out.writeVal(x)
204236

237+
@inline
205238
override def nullValue: LocalDate = null
206239
}, "LocalDate")
207240
implicit val localDateTimeC3C: Codec[LocalDateTime] = new ShortAsciiStringCodec(new JsonValueCodec[LocalDateTime] {
241+
@inline
208242
override def decodeValue(in: JsonReader, default: LocalDateTime): LocalDateTime = in.readLocalDateTime(default)
209243

244+
@inline
210245
override def encodeValue(x: LocalDateTime, out: JsonWriter): Unit = out.writeVal(x)
211246

247+
@inline
212248
override def nullValue: LocalDateTime = null
213249
}, "LocalDateTime")
214250
implicit val localTimeC3C: Codec[LocalTime] = new ShortAsciiStringCodec(new JsonValueCodec[LocalTime] {
251+
@inline
215252
override def decodeValue(in: JsonReader, default: LocalTime): LocalTime = in.readLocalTime(default)
216253

254+
@inline
217255
override def encodeValue(x: LocalTime, out: JsonWriter): Unit = out.writeVal(x)
218256

257+
@inline
219258
override def nullValue: LocalTime = null
220259
}, "LocalTime")
221260
implicit val monthDayC3C: Codec[MonthDay] = new ShortAsciiStringCodec(new JsonValueCodec[MonthDay] {
261+
@inline
222262
override def decodeValue(in: JsonReader, default: MonthDay): MonthDay = in.readMonthDay(default)
223263

264+
@inline
224265
override def encodeValue(x: MonthDay, out: JsonWriter): Unit = out.writeVal(x)
225266

267+
@inline
226268
override def nullValue: MonthDay = null
227269
}, "MonthDay")
228270
implicit val offsetDateTimeC3C: Codec[OffsetDateTime] = new ShortAsciiStringCodec(new JsonValueCodec[OffsetDateTime] {
271+
@inline
229272
override def decodeValue(in: JsonReader, default: OffsetDateTime): OffsetDateTime = in.readOffsetDateTime(default)
230273

274+
@inline
231275
override def encodeValue(x: OffsetDateTime, out: JsonWriter): Unit = out.writeVal(x)
232276

277+
@inline
233278
override def nullValue: OffsetDateTime = null
234279
}, "OffsetDateTime")
235280
implicit val offsetTimeC3C: Codec[OffsetTime] = new ShortAsciiStringCodec(new JsonValueCodec[OffsetTime] {
281+
@inline
236282
override def decodeValue(in: JsonReader, default: OffsetTime): OffsetTime = in.readOffsetTime(default)
237283

284+
@inline
238285
override def encodeValue(x: OffsetTime, out: JsonWriter): Unit = out.writeVal(x)
239286

287+
@inline
240288
override def nullValue: OffsetTime = null
241289
}, "OffsetTime")
242290
implicit val periodC3C: Codec[Period] = new ShortAsciiStringCodec(new JsonValueCodec[Period] {
291+
@inline
243292
override def decodeValue(in: JsonReader, default: Period): Period = in.readPeriod(default)
244293

294+
@inline
245295
override def encodeValue(x: Period, out: JsonWriter): Unit = out.writeVal(x)
246296

297+
@inline
247298
override def nullValue: Period = null
248299
}, "Period")
249300
implicit val yearMonthC3C: Codec[YearMonth] = new ShortAsciiStringCodec(new JsonValueCodec[YearMonth] {
301+
@inline
250302
override def decodeValue(in: JsonReader, default: YearMonth): YearMonth = in.readYearMonth(default)
251303

304+
@inline
252305
override def encodeValue(x: YearMonth, out: JsonWriter): Unit = out.writeVal(x)
253306

307+
@inline
254308
override def nullValue: YearMonth = null
255309
}, "YearMonth")
256310
implicit val yearC3C: Codec[Year] = new ShortAsciiStringCodec(new JsonValueCodec[Year] {
257-
override def decodeValue(in: JsonReader, default: Year): Year = in.readYear(default)
311+
@inline
312+
override def decodeValue(in: JsonReader, default: Year): Year = in.readYear(default)
258313

259-
override def encodeValue(x: Year, out: JsonWriter): Unit = out.writeVal(x)
314+
@inline
315+
override def encodeValue(x: Year, out: JsonWriter): Unit = out.writeVal(x)
260316

261-
override def nullValue: Year = null
317+
@inline
318+
override def nullValue: Year = null
262319
}, "Year")
263320
implicit val zonedDateTimeC3C: Codec[ZonedDateTime] = new ShortAsciiStringCodec(new JsonValueCodec[ZonedDateTime] {
321+
@inline
264322
override def decodeValue(in: JsonReader, default: ZonedDateTime): ZonedDateTime = in.readZonedDateTime(default)
265323

324+
@inline
266325
override def encodeValue(x: ZonedDateTime, out: JsonWriter): Unit = out.writeVal(x)
267326

327+
@inline
268328
override def nullValue: ZonedDateTime = null
269329
}, "ZonedDateTime")
270330
}

jsoniter-scala-circe/shared/src/main/scala/io/circe/JsoniterScalaCodec.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ object JsoniterScalaCodec {
207207
case _ => fail(c)
208208
}
209209

210+
@inline
210211
final def apply(x: Float): Json = new JNumber(new JsonFloat(x))
211212

212213
private[this] def fail(c: HCursor): Result[Float] = new Left(DecodingFailure("Float", c.history))
@@ -246,6 +247,7 @@ object JsoniterScalaCodec {
246247
case NonFatal(_) => fail(c)
247248
}
248249

250+
@inline
249251
final def apply(x: BigInt): Json =
250252
if (x.isValidLong) JsonNumber.fromLong(x.longValue)
251253
else new JNumber(new JsonBigDecimal(new java.math.BigDecimal(x.bigInteger)))
@@ -269,6 +271,7 @@ object JsoniterScalaCodec {
269271
case _ => fail(c)
270272
}
271273

274+
@inline
272275
final def apply(x: BigDecimal): Json = new JNumber(new JsonBigDecimal(x.bigDecimal))
273276

274277
private[this] def fail(c: HCursor): Result[BigDecimal] = new Left(DecodingFailure("BigDecimal", c.history))

0 commit comments

Comments
 (0)