Skip to content

Commit 2fe8c33

Browse files
committed
Add the CESU-8 encoding
1 parent 66b65b1 commit 2fe8c33

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

src/main/java/org/truffleruby/core/encoding/Encodings.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
*/
1313
package org.truffleruby.core.encoding;
1414

15+
import com.oracle.truffle.api.CompilerDirectives;
1516
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
17+
import com.oracle.truffle.api.strings.TruffleString;
1618
import org.jcodings.Encoding;
1719
import org.jcodings.EncodingDB;
1820
import org.jcodings.specific.ASCIIEncoding;
@@ -72,8 +74,11 @@ private static RubyEncoding[] initializeRubyEncodings() {
7274
if (encoding == USASCIIEncoding.INSTANCE) {
7375
rubyEncoding = US_ASCII;
7476
} else {
75-
final ImmutableRubyString name = FrozenStringLiterals.createStringAndCacheLater(
76-
TStringConstants.TSTRING_CONSTANTS.get(encoding.toString()), US_ASCII);
77+
TruffleString tstring = TStringConstants.TSTRING_CONSTANTS.get(encoding.toString());
78+
if (tstring == null) {
79+
throw CompilerDirectives.shouldNotReachHere("no TStringConstants for " + encoding);
80+
}
81+
final ImmutableRubyString name = FrozenStringLiterals.createStringAndCacheLater(tstring, US_ASCII);
7782
rubyEncoding = new RubyEncoding(encoding, name, encoding.getIndex());
7883
}
7984
encodings[encoding.getIndex()] = rubyEncoding;

src/main/java/org/truffleruby/core/string/ImmutableRubyString.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
import org.truffleruby.language.dispatch.DispatchNode;
3636
import org.truffleruby.language.library.RubyStringLibrary;
3737

38+
import java.util.Objects;
39+
3840
/** All ImmutableRubyString are interned and must be created through
3941
* {@link FrozenStringLiterals#getFrozenStringLiteral}. */
4042
@ExportLibrary(InteropLibrary.class)
@@ -47,8 +49,8 @@ public final class ImmutableRubyString extends ImmutableRubyObjectCopyable imple
4749
ImmutableRubyString(TruffleString tstring, RubyEncoding encoding) {
4850
assert tstring.isCompatibleToUncached(encoding.tencoding);
4951
assert tstring.isManaged();
50-
this.tstring = tstring;
51-
this.encoding = encoding;
52+
this.tstring = Objects.requireNonNull(tstring);
53+
this.encoding = Objects.requireNonNull(encoding);
5254
}
5355

5456
/** should only be used for debugging */

src/main/java/org/truffleruby/core/string/TStringConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,8 @@ public class TStringConstants {
203203
public static final TruffleString STATELESS_ISO_2022_JP_KDDI = ascii("stateless-ISO-2022-JP-KDDI");
204204
public static final TruffleString UTF8_SOFTBANK = ascii("UTF8-SoftBank");
205205
public static final TruffleString SJIS_SOFTBANK = ascii("SJIS-SoftBank");
206+
public static final TruffleString IBM720 = ascii("IBM720");
207+
public static final TruffleString CESU_8 = ascii("CESU-8");
206208

207209
private static TruffleString ascii(String string) {
208210
if (string.length() == 1) {

0 commit comments

Comments
 (0)