Skip to content

Commit 9092f76

Browse files
committed
Use the proper index for US-ASCII
1 parent 97230bd commit 9092f76

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

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

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ public final class Encodings {
3838

3939
public static final int INITIAL_NUMBER_OF_ENCODINGS = EncodingDB.getEncodings().size();
4040
public static final int MAX_NUMBER_OF_ENCODINGS = 256;
41-
public static final int US_ASCII_INDEX = 0;
42-
public static final RubyEncoding US_ASCII = initializeUsAscii();
41+
public static final int US_ASCII_INDEX = getUsAsciiIndex();
42+
public static final RubyEncoding US_ASCII = new RubyEncoding(US_ASCII_INDEX);
4343
static final RubyEncoding[] BUILT_IN_ENCODINGS = initializeRubyEncodings();
4444
private static final RubyEncoding[] BUILT_IN_ENCODINGS_BY_JCODING_INDEX = initializeBuiltinEncodingsByJCodingIndex();
4545

@@ -64,29 +64,39 @@ public final class Encodings {
6464
public Encodings() {
6565
}
6666

67-
private static RubyEncoding initializeUsAscii() {
68-
return new RubyEncoding(US_ASCII_INDEX);
67+
private static int getUsAsciiIndex() {
68+
int index = 0;
69+
for (var entry : EncodingDB.getEncodings()) {
70+
if (entry.getEncoding() == USASCIIEncoding.INSTANCE) {
71+
return index;
72+
}
73+
index++;
74+
}
75+
throw CompilerDirectives.shouldNotReachHere("No US-ASCII");
6976
}
7077

7178
private static RubyEncoding[] initializeRubyEncodings() {
7279
final RubyEncoding[] encodings = new RubyEncoding[INITIAL_NUMBER_OF_ENCODINGS];
7380

74-
int index = US_ASCII_INDEX + 1;
81+
int index = 0;
7582
for (var entry : EncodingDB.getEncodings()) {
7683
final Encoding encoding = entry.getEncoding();
7784

85+
final RubyEncoding rubyEncoding;
7886
if (encoding == USASCIIEncoding.INSTANCE) {
79-
encodings[US_ASCII_INDEX] = US_ASCII;
87+
assert index == US_ASCII_INDEX;
88+
rubyEncoding = US_ASCII;
8089
} else {
8190
TruffleString tstring = TStringConstants.TSTRING_CONSTANTS.get(encoding.toString());
8291
if (tstring == null) {
8392
throw CompilerDirectives.shouldNotReachHere("no TStringConstants for " + encoding);
8493
}
8594
final ImmutableRubyString name = FrozenStringLiterals.createStringAndCacheLater(tstring, US_ASCII);
86-
var rubyEncoding = new RubyEncoding(encoding, name, index);
87-
encodings[index] = rubyEncoding;
88-
index++;
95+
rubyEncoding = new RubyEncoding(encoding, name, index);
8996
}
97+
encodings[index] = rubyEncoding;
98+
99+
index++;
90100
}
91101

92102
assert index == EncodingDB.getEncodings().size();

0 commit comments

Comments
 (0)