Skip to content

Commit a53236e

Browse files
committed
[GR-30852] Add RubyEncoding field to RubyRegexp
PullRequest: truffleruby/2816
2 parents f09f57e + 60245f5 commit a53236e

15 files changed

+270
-240
lines changed

src/main/java/org/truffleruby/core/cast/ToRubyEncodingNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ protected RubyEncoding symbolToEncoding(RubySymbol value) {
4545

4646
@Specialization
4747
protected RubyEncoding regexpToEncoding(RubyRegexp value) {
48-
return getContext().getEncodingManager().getRubyEncoding(value.regex.getEncoding());
48+
return value.encoding;
4949
}
5050

5151
@Specialization

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

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -230,10 +230,6 @@ public RubyEncoding getRubyEncoding(int encodingIndex) {
230230
return ENCODING_LIST_BY_ENCODING_INDEX[encodingIndex];
231231
}
232232

233-
public RubyEncoding getRubyEncoding(Encoding encoding) {
234-
return ENCODING_LIST_BY_ENCODING_INDEX[encoding.getIndex()];
235-
}
236-
237233
@TruffleBoundary
238234
public synchronized RubyEncoding defineBuiltInEncoding(EncodingDB.Entry encodingEntry) {
239235
final int encodingIndex = encodingEntry.getEncoding().getIndex();
@@ -263,7 +259,7 @@ public synchronized RubyEncoding defineDynamicEncoding(Encoding encoding, byte[]
263259

264260
@TruffleBoundary
265261
public RubyEncoding defineAlias(Encoding encoding, String name) {
266-
final RubyEncoding rubyEncoding = getRubyEncoding(encoding);
262+
final RubyEncoding rubyEncoding = Encodings.getBuiltInEncoding(encoding.getIndex());
267263
addToLookup(name, rubyEncoding);
268264
return rubyEncoding;
269265
}

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

Lines changed: 2 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import org.truffleruby.core.cast.ToEncodingNode;
3030
import org.truffleruby.core.cast.ToRubyEncodingNode;
3131
import org.truffleruby.core.encoding.EncodingNodesFactory.CheckRopeEncodingNodeGen;
32-
import org.truffleruby.core.encoding.EncodingNodesFactory.GetRubyEncodingNodeGen;
3332
import org.truffleruby.core.encoding.EncodingNodesFactory.NegotiateCompatibleEncodingNodeGen;
3433
import org.truffleruby.core.encoding.EncodingNodesFactory.NegotiateCompatibleRopeEncodingNodeGen;
3534
import org.truffleruby.core.klass.RubyClass;
@@ -69,40 +68,6 @@ protected boolean isAsciiCompatible(RubyEncoding encoding) {
6968
}
7069
}
7170

72-
public abstract static class GetRubyEncodingNode extends RubyContextNode {
73-
74-
public static GetRubyEncodingNode create() {
75-
return GetRubyEncodingNodeGen.create();
76-
}
77-
78-
/** This returns only the built-in RubyEncoding for the given Encoding. It will not return dummy/replicate
79-
* encodings that might be associated to an Encoding so this should rarely be used.
80-
*
81-
* @param encoding
82-
* @return a built-in RubyEncoding */
83-
public abstract RubyEncoding executeGetRubyEncoding(Encoding encoding);
84-
85-
@Specialization(guards = "isSameEncoding(encoding, cachedRubyEncoding)", limit = "getCacheLimit()")
86-
protected RubyEncoding getRubyEncodingCached(Encoding encoding,
87-
@Cached("getRubyEncodingUncached(encoding)") RubyEncoding cachedRubyEncoding) {
88-
return cachedRubyEncoding;
89-
}
90-
91-
@Specialization(replaces = "getRubyEncodingCached")
92-
protected RubyEncoding getRubyEncodingUncached(Encoding encoding) {
93-
return Encodings.getBuiltInEncoding(encoding.getIndex());
94-
}
95-
96-
protected boolean isSameEncoding(Encoding encoding, RubyEncoding rubyEncoding) {
97-
return encoding == rubyEncoding.jcoding;
98-
}
99-
100-
protected int getCacheLimit() {
101-
return getLanguage().options.ENCODING_LOADED_CLASSES_CACHE;
102-
}
103-
104-
}
105-
10671
public abstract static class NegotiateCompatibleRopeEncodingNode extends RubyContextNode {
10772

10873
public abstract RubyEncoding executeNegotiate(Rope first, RubyEncoding firstEncoding, Rope second,
@@ -472,7 +437,7 @@ protected Object eachAlias(RubyProc block) {
472437
yieldNode.yield(
473438
block,
474439
aliasName,
475-
getContext().getEncodingManager().getRubyEncoding(entry.value.getEncoding()));
440+
Encodings.getBuiltInEncoding(entry.value.getEncoding().getIndex()));
476441
}
477442
return nil;
478443
}
@@ -629,8 +594,6 @@ protected int encodingFindIndex(Object nameObject,
629594
@Primitive(name = "encoding_get_object_encoding")
630595
public abstract static class EncodingGetObjectEncodingNode extends PrimitiveArrayArgumentsNode {
631596

632-
@Child private GetRubyEncodingNode getRubyEncodingNode = EncodingNodesFactory.GetRubyEncodingNodeGen.create();
633-
634597
@Specialization
635598
protected RubyEncoding encodingGetObjectEncodingString(RubyString object) {
636599
return object.encoding;
@@ -657,7 +620,7 @@ protected Object encodingGetObjectEncodingRegexp(RubyRegexp object,
657620
final Rope regexpSource = object.source;
658621

659622
if (hasRegexpSource.profile(regexpSource != null)) {
660-
return getRubyEncodingNode.executeGetRubyEncoding(regexpSource.getEncoding());
623+
return object.encoding;
661624
} else {
662625
return Encodings.BINARY;
663626
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.jcodings.Encoding;
1717
import org.jcodings.EncodingDB;
1818
import org.jcodings.specific.ASCIIEncoding;
19+
import org.jcodings.specific.ISO8859_1Encoding;
1920
import org.jcodings.specific.USASCIIEncoding;
2021
import org.jcodings.specific.UTF16BEEncoding;
2122
import org.jcodings.specific.UTF16LEEncoding;
@@ -43,6 +44,7 @@ public class Encodings {
4344
public static final RubyEncoding UTF16BE = BUILT_IN_ENCODINGS[UTF16BEEncoding.INSTANCE.getIndex()];
4445
public static final RubyEncoding UTF32LE = BUILT_IN_ENCODINGS[UTF32LEEncoding.INSTANCE.getIndex()];
4546
public static final RubyEncoding UTF32BE = BUILT_IN_ENCODINGS[UTF32BEEncoding.INSTANCE.getIndex()];
47+
public static final RubyEncoding ISO_8859_1 = BUILT_IN_ENCODINGS[ISO8859_1Encoding.INSTANCE.getIndex()];
4648
public static final RubyEncoding UTF16_DUMMY = BUILT_IN_ENCODINGS[EncodingDB
4749
.getEncodings()
4850
.get(RopeOperations.encodeAsciiBytes("UTF-16"))

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

Lines changed: 0 additions & 31 deletions
This file was deleted.

0 commit comments

Comments
 (0)