Skip to content

Commit f33d4ae

Browse files
committed
Use cached ByteList for infinity and nan Float#to_s
1 parent 9b41ab2 commit f33d4ae

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

core/src/main/java/org/jruby/RubyFloat.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,10 +255,10 @@ public static IRubyObject induced_from(ThreadContext context, IRubyObject recv,
255255
public IRubyObject to_s() {
256256
final Ruby runtime = metaClass.runtime;
257257
if (Double.isInfinite(value)) {
258-
return RubyString.newString(runtime, value < 0 ? "-Infinity" : "Infinity");
258+
return RubyString.newStringShared(runtime, value < 0 ? NEGATIVE_INFINITY_TO_S_BYTELIST : POSITIVE_INFINITY_TO_S_BYTELIST);
259259
}
260260
if (Double.isNaN(value)) {
261-
return RubyString.newString(runtime, "NaN");
261+
return RubyString.newStringShared(runtime, NAN_TO_S_BYTELIST);
262262
}
263263

264264
ByteList buf = new ByteList();
@@ -287,6 +287,10 @@ public IRubyObject to_s() {
287287
return runtime.newString(buf);
288288
}
289289

290+
public static final ByteList POSITIVE_INFINITY_TO_S_BYTELIST = new ByteList(ByteList.plain("Infinity"), USASCIIEncoding.INSTANCE, false);
291+
public static final ByteList NEGATIVE_INFINITY_TO_S_BYTELIST = new ByteList(ByteList.plain("-Infinity"), USASCIIEncoding.INSTANCE, false);
292+
public static final ByteList NAN_TO_S_BYTELIST = new ByteList(ByteList.plain("NaN"), USASCIIEncoding.INSTANCE, false);
293+
290294
/** flo_coerce
291295
*
292296
*/

0 commit comments

Comments
 (0)