Skip to content

Commit e348bd0

Browse files
committed
Convert GetActualEncodingNode to DSL inlinable node
1 parent 41fa0e7 commit e348bd0

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

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

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -520,28 +520,31 @@ boolean isUnicode(RubyEncoding encoding) {
520520
public abstract static class GetActualEncodingPrimitiveNode extends PrimitiveArrayArgumentsNode {
521521

522522
@Specialization(guards = "libString.isRubyString(string)", limit = "1")
523-
RubyEncoding getActualEncoding(Object string,
523+
static RubyEncoding getActualEncoding(Object string,
524524
@Cached GetActualEncodingNode getActualEncodingNode,
525-
@Cached RubyStringLibrary libString) {
526-
return getActualEncodingNode.execute(libString.getTString(string), libString.getEncoding(string));
525+
@Cached RubyStringLibrary libString,
526+
@Bind("this") Node node) {
527+
return getActualEncodingNode.execute(node, libString.getTString(string), libString.getEncoding(string));
527528
}
528529

529530
}
530531

531532
// MRI: get_actual_encoding
533+
@GenerateInline
534+
@GenerateCached(false)
532535
public abstract static class GetActualEncodingNode extends RubyBaseNode {
533536

534-
public abstract RubyEncoding execute(AbstractTruffleString tstring, RubyEncoding encoding);
537+
public abstract RubyEncoding execute(Node node, AbstractTruffleString tstring, RubyEncoding encoding);
535538

536539
@Specialization(guards = "!encoding.isDummy")
537-
RubyEncoding getActualEncoding(AbstractTruffleString tstring, RubyEncoding encoding) {
540+
static RubyEncoding getActualEncoding(AbstractTruffleString tstring, RubyEncoding encoding) {
538541
return encoding;
539542
}
540543

541544
@TruffleBoundary
542545
@Specialization(guards = "encoding.isDummy")
543-
RubyEncoding getActualEncodingDummy(AbstractTruffleString tstring, RubyEncoding encoding,
544-
@Cached TruffleString.ReadByteNode readByteNode) {
546+
static RubyEncoding getActualEncodingDummy(AbstractTruffleString tstring, RubyEncoding encoding,
547+
@Cached(inline = false) TruffleString.ReadByteNode readByteNode) {
545548
if (encoding.isUnicode) {
546549
var enc = encoding.tencoding;
547550
var byteLength = tstring.byteLength(enc);

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1612,7 +1612,7 @@ static Object lstripBangSingleByte(RubyString string,
16121612
@Cached InlinedConditionProfile noopProfile,
16131613
@Bind("this") Node node) {
16141614
var tstring = string.tstring;
1615-
var encoding = getActualEncodingNode.execute(tstring, libString.getEncoding(string));
1615+
var encoding = getActualEncodingNode.execute(node, tstring, libString.getEncoding(string));
16161616
var tencoding = encoding.tencoding;
16171617

16181618
var iterator = createCodePointIteratorNode.execute(tstring, tencoding, ErrorHandling.RETURN_NEGATIVE);
@@ -1751,7 +1751,7 @@ static Object rstripBangNonEmptyString(RubyString string,
17511751
@Cached @Exclusive InlinedConditionProfile noopProfile,
17521752
@Bind("this") Node node) {
17531753
var tstring = string.tstring;
1754-
var encoding = getActualEncodingNode.execute(tstring, libString.getEncoding(string));
1754+
var encoding = getActualEncodingNode.execute(node, tstring, libString.getEncoding(string));
17551755
var tencoding = encoding.tencoding;
17561756

17571757
var iterator = createBackwardCodePointIteratorNode.execute(tstring, tencoding,
@@ -3423,7 +3423,7 @@ static Object stringChrAt(Object string, int byteIndex,
34233423
@Bind("strings.getTString(string)") AbstractTruffleString originalTString,
34243424
@Bind("strings.getEncoding(string)") RubyEncoding originalEncoding,
34253425
@Bind("this") Node node) {
3426-
final RubyEncoding actualEncoding = getActualEncodingNode.execute(originalTString, originalEncoding);
3426+
final RubyEncoding actualEncoding = getActualEncodingNode.execute(node, originalTString, originalEncoding);
34273427
var tstring = forceEncodingNode.execute(originalTString, originalEncoding.tencoding,
34283428
actualEncoding.tencoding);
34293429

0 commit comments

Comments
 (0)