Skip to content

Commit 181b405

Browse files
committed
StringEqualInternalNode is DSL inlinable node
1 parent 860f905 commit 181b405

File tree

3 files changed

+14
-9
lines changed

3 files changed

+14
-9
lines changed

src/main/java/org/truffleruby/core/inlined/InlinedEqualNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ protected static boolean stringEqual(VirtualFrame frame, Object a, Object b,
8181
var tstringB = libB.getTString(b);
8282
var encB = libB.getEncoding(b);
8383
var compatibleEncoding = negotiateCompatibleStringEncodingNode.execute(node, tstringA, encA, tstringB, encB);
84-
return stringEqualInternalNode.executeInternal(tstringA, tstringB, compatibleEncoding);
84+
return stringEqualInternalNode.executeInternal(node, tstringA, tstringB, compatibleEncoding);
8585
}
8686

8787
@Specialization

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

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ protected boolean equal(AbstractTruffleString a, RubyEncoding encA, TruffleStrin
108108
@Cached EncodingNodes.NegotiateCompatibleStringEncodingNode negotiateCompatibleStringEncodingNode,
109109
@Cached StringEqualInternalNode stringEqualInternalNode) {
110110
var compatibleEncoding = negotiateCompatibleStringEncodingNode.execute(this, a, encA, b, encB);
111-
return stringEqualInternalNode.executeInternal(a, b, compatibleEncoding);
111+
return stringEqualInternalNode.executeInternal(this, a, b, compatibleEncoding);
112112
}
113113
}
114114

@@ -128,9 +128,10 @@ public abstract boolean execute(Node node, AbstractTruffleString tstring, RubyEn
128128
TruffleString cachedString, RubyEncoding cachedEncoding);
129129

130130
@Specialization(guards = "encA == encB")
131-
protected static boolean same(AbstractTruffleString a, RubyEncoding encA, TruffleString b, RubyEncoding encB,
131+
protected static boolean same(
132+
Node node, AbstractTruffleString a, RubyEncoding encA, TruffleString b, RubyEncoding encB,
132133
@Cached StringEqualInternalNode stringEqualInternalNode) {
133-
return stringEqualInternalNode.executeInternal(a, b, encA);
134+
return stringEqualInternalNode.executeInternal(node, a, b, encA);
134135
}
135136

136137
@Specialization(guards = "encA != encB")
@@ -140,25 +141,29 @@ protected static boolean diff(AbstractTruffleString a, RubyEncoding encA, Truffl
140141
}
141142

142143
@GenerateUncached
144+
@GenerateCached(false)
145+
@GenerateInline
143146
public abstract static class StringEqualInternalNode extends RubyBaseNode {
144147
// compatibleEncoding is RubyEncoding or null
145-
public abstract boolean executeInternal(AbstractTruffleString a, AbstractTruffleString b,
148+
public abstract boolean executeInternal(Node node, AbstractTruffleString a, AbstractTruffleString b,
146149
RubyEncoding compatibleEncoding);
147150

148151
@Specialization(guards = "a.isEmpty() || b.isEmpty()")
149-
protected boolean empty(AbstractTruffleString a, AbstractTruffleString b, RubyEncoding compatibleEncoding) {
152+
protected static boolean empty(
153+
AbstractTruffleString a, AbstractTruffleString b, RubyEncoding compatibleEncoding) {
150154
assert compatibleEncoding != null;
151155
return a.isEmpty() && b.isEmpty();
152156
}
153157

154158
@Specialization(guards = { "compatibleEncoding != null", "!a.isEmpty()", "!b.isEmpty()" })
155-
protected boolean equalBytes(AbstractTruffleString a, AbstractTruffleString b, RubyEncoding compatibleEncoding,
159+
protected static boolean equalBytes(
160+
AbstractTruffleString a, AbstractTruffleString b, RubyEncoding compatibleEncoding,
156161
@Cached TruffleString.EqualNode equalNode) {
157162
return equalNode.execute(a, b, compatibleEncoding.tencoding);
158163
}
159164

160165
@Specialization(guards = "compatibleEncoding == null")
161-
protected boolean notComparable(
166+
protected static boolean notComparable(
162167
AbstractTruffleString a, AbstractTruffleString b, RubyEncoding compatibleEncoding) {
163168
return false;
164169
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ protected static boolean equalString(Object a, Object b,
311311
var encB = libB.getEncoding(b);
312312
var compatibleEncoding = negotiateCompatibleStringEncodingNode.execute(node, tstringA, encA, tstringB,
313313
encB);
314-
return stringEqualInternalNode.executeInternal(tstringA, tstringB, compatibleEncoding);
314+
return stringEqualInternalNode.executeInternal(node, tstringA, tstringB, compatibleEncoding);
315315
}
316316

317317
@Specialization(guards = "isNotRubyString(b)")

0 commit comments

Comments
 (0)