@@ -38,8 +38,8 @@ public final class Encodings {
38
38
39
39
public static final int INITIAL_NUMBER_OF_ENCODINGS = EncodingDB .getEncodings ().size ();
40
40
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 );
43
43
static final RubyEncoding [] BUILT_IN_ENCODINGS = initializeRubyEncodings ();
44
44
private static final RubyEncoding [] BUILT_IN_ENCODINGS_BY_JCODING_INDEX = initializeBuiltinEncodingsByJCodingIndex ();
45
45
@@ -64,29 +64,39 @@ public final class Encodings {
64
64
public Encodings () {
65
65
}
66
66
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" );
69
76
}
70
77
71
78
private static RubyEncoding [] initializeRubyEncodings () {
72
79
final RubyEncoding [] encodings = new RubyEncoding [INITIAL_NUMBER_OF_ENCODINGS ];
73
80
74
- int index = US_ASCII_INDEX + 1 ;
81
+ int index = 0 ;
75
82
for (var entry : EncodingDB .getEncodings ()) {
76
83
final Encoding encoding = entry .getEncoding ();
77
84
85
+ final RubyEncoding rubyEncoding ;
78
86
if (encoding == USASCIIEncoding .INSTANCE ) {
79
- encodings [US_ASCII_INDEX ] = US_ASCII ;
87
+ assert index == US_ASCII_INDEX ;
88
+ rubyEncoding = US_ASCII ;
80
89
} else {
81
90
TruffleString tstring = TStringConstants .TSTRING_CONSTANTS .get (encoding .toString ());
82
91
if (tstring == null ) {
83
92
throw CompilerDirectives .shouldNotReachHere ("no TStringConstants for " + encoding );
84
93
}
85
94
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 );
89
96
}
97
+ encodings [index ] = rubyEncoding ;
98
+
99
+ index ++;
90
100
}
91
101
92
102
assert index == EncodingDB .getEncodings ().size ();
0 commit comments