Skip to content

Commit 26ba660

Browse files
committed
ToJavaStringNode supports DSL inlining
1 parent fbad85e commit 26ba660

17 files changed

+245
-204
lines changed

src/main/java/org/truffleruby/cext/CExtNodes.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1006,7 +1006,7 @@ public abstract static class RbConstGetNode extends CoreMethodNode {
10061006
protected Object rbConstGet(RubyModule module, Object name,
10071007
@Cached ToJavaStringNode toJavaStringNode,
10081008
@Cached GetConstantNode getConstantNode) {
1009-
final var nameAsString = toJavaStringNode.execute(name);
1009+
final var nameAsString = toJavaStringNode.execute(this, name);
10101010
return getConstantNode
10111011
.lookupAndResolveConstant(LexicalScope.IGNORE, module, nameAsString, false, lookupConstantNode,
10121012
true);
@@ -1025,7 +1025,7 @@ public abstract static class RbConstGetFromNode extends CoreMethodNode {
10251025
protected Object rbConstGetFrom(RubyModule module, Object name,
10261026
@Cached ToJavaStringNode toJavaStringNode,
10271027
@Cached GetConstantNode getConstantNode) {
1028-
final var nameAsString = toJavaStringNode.execute(name);
1028+
final var nameAsString = toJavaStringNode.execute(this, name);
10291029
return getConstantNode
10301030
.lookupAndResolveConstant(LexicalScope.IGNORE, module, nameAsString, false, lookupConstantNode,
10311031
true);
@@ -1044,7 +1044,7 @@ public abstract static class RbConstSetNode extends CoreMethodNode {
10441044
protected Object rbConstSet(RubyModule module, Object name, Object value,
10451045
@Cached ToJavaStringNode toJavaStringNode,
10461046
@Cached ConstSetUncheckedNode constSetUncheckedNode) {
1047-
final var nameAsString = toJavaStringNode.execute(name);
1047+
final var nameAsString = toJavaStringNode.execute(this, name);
10481048
return constSetUncheckedNode.execute(module, nameAsString, value);
10491049
}
10501050
}

src/main/java/org/truffleruby/core/TruffleSystemNodes.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ protected static Object javaGetEnv(Object name,
110110
@Cached FromJavaStringNode fromJavaStringNode,
111111
@Cached InlinedConditionProfile nullValueProfile,
112112
@Bind("this") Node node) {
113-
final String javaName = toJavaStringNode.execute(name);
113+
final String javaName = toJavaStringNode.execute(node, name);
114114
final String value = getEnv(javaName);
115115

116116
if (nullValueProfile.profile(node, value == null)) {
@@ -185,17 +185,17 @@ private static String[] getProperties() {
185185
@CoreMethod(names = "get_java_property", onSingleton = true, required = 1)
186186
public abstract static class GetJavaPropertyNode extends CoreMethodArrayArgumentsNode {
187187

188-
@Child private TruffleString.FromJavaStringNode fromJavaStringNode = TruffleString.FromJavaStringNode.create();
189-
190188
@Specialization(guards = "strings.isRubyString(property)", limit = "1")
191-
protected Object getJavaProperty(Object property,
189+
protected static Object getJavaProperty(Object property,
192190
@Cached RubyStringLibrary strings,
193-
@Cached ToJavaStringNode toJavaStringNode) {
194-
String value = getProperty(toJavaStringNode.execute(property));
191+
@Cached TruffleString.FromJavaStringNode fromJavaStringNode,
192+
@Cached ToJavaStringNode toJavaStringNode,
193+
@Bind("this") Node node) {
194+
String value = getProperty(toJavaStringNode.execute(node, property));
195195
if (value == null) {
196196
return nil;
197197
} else {
198-
return createString(fromJavaStringNode, value, Encodings.UTF_8);
198+
return createString(node, fromJavaStringNode, value, Encodings.UTF_8);
199199
}
200200
}
201201

@@ -238,15 +238,15 @@ protected Object logCached(RubySymbol level, Object message,
238238
@Shared @Cached ToJavaStringNode toJavaStringNode,
239239
@Cached("level") RubySymbol cachedLevel,
240240
@Cached("getLevel(cachedLevel)") Level javaLevel) {
241-
log(javaLevel, toJavaStringNode.execute(message));
241+
log(javaLevel, toJavaStringNode.execute(this, message));
242242
return nil;
243243
}
244244

245245
@Specialization(guards = "strings.isRubyString(message)", replaces = "logCached", limit = "1")
246246
protected Object log(RubySymbol level, Object message,
247247
@Shared @Cached RubyStringLibrary strings,
248248
@Shared @Cached ToJavaStringNode toJavaStringNode) {
249-
log(getLevel(level), toJavaStringNode.execute(message));
249+
log(getLevel(level), toJavaStringNode.execute(this, message));
250250
return nil;
251251
}
252252

src/main/java/org/truffleruby/core/array/ArrayNodes.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1427,7 +1427,7 @@ protected Object injectSymbolNoInitial(
14271427
return injectSymbolHelper(
14281428
frame,
14291429
array,
1430-
toJavaString.execute(initialOrSymbol),
1430+
toJavaString.execute(this, initialOrSymbol),
14311431
stores,
14321432
store,
14331433
stores.read(store, 0),
@@ -1451,7 +1451,7 @@ protected Object injectSymbolWithInitial(
14511451
return injectSymbolHelper(
14521452
frame,
14531453
array,
1454-
toJavaString.execute(symbol),
1454+
toJavaString.execute(this, symbol),
14551455
stores,
14561456
store,
14571457
initialOrSymbol,
@@ -1596,7 +1596,7 @@ protected static RubyString packUncached(Node node, RubyArray array, Object form
15961596
@Cached @Shared TruffleString.FromByteArrayNode fromByteArrayNode,
15971597
@Cached ToJavaStringNode toJavaStringNode,
15981598
@Cached IndirectCallNode callPackNode) {
1599-
final String formatString = toJavaStringNode.execute(format);
1599+
final String formatString = toJavaStringNode.execute(node, format);
16001600

16011601
final BytesResult result;
16021602
try {

src/main/java/org/truffleruby/core/basicobject/BasicObjectNodes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ protected static Object evalWithString(Frame callerFrame, Object self, Object[]
305305

306306
if (count >= 2) {
307307
fileName = toJavaStringNode
308-
.execute(toStrNode.execute(node, RubyArguments.getArgument(rubyArgs, 1)));
308+
.execute(node, toStrNode.execute(node, RubyArguments.getArgument(rubyArgs, 1)));
309309
}
310310

311311
if (count >= 3) {

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,16 @@ public static String executeUncached(Object name) {
4141
}
4242

4343
@Specialization(guards = "libString.isRubyString(value)", limit = "1")
44-
protected static String stringNameToJavaString(Object value,
44+
protected static String stringNameToJavaString(Node node, Object value,
4545
@Cached @Exclusive RubyStringLibrary libString,
4646
@Cached @Shared ToJavaStringNode toJavaStringNode) {
47-
return toJavaStringNode.execute(value);
47+
return toJavaStringNode.execute(node, value);
4848
}
4949

5050
@Specialization
51-
protected static String symbolNameToJavaString(RubySymbol value,
51+
protected static String symbolNameToJavaString(Node node, RubySymbol value,
5252
@Cached @Shared ToJavaStringNode toJavaStringNode) {
53-
return toJavaStringNode.execute(value);
53+
return toJavaStringNode.execute(node, value);
5454
}
5555

5656
@Specialization
@@ -79,7 +79,7 @@ protected static String nameToJavaString(Node node, Object object,
7979
}
8080

8181
if (libString.isRubyString(coerced)) {
82-
return toJavaStringNode.execute(coerced);
82+
return toJavaStringNode.execute(node, coerced);
8383
} else {
8484
errorProfile.enter(node);
8585
throw new RaiseException(getContext(node), coreExceptions(node).typeErrorBadCoercion(

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

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -660,15 +660,15 @@ protected Object getObjectEncoding(Object object,
660660

661661
public abstract static class EncodingCreationNode extends PrimitiveArrayArgumentsNode {
662662

663-
public RubyArray setIndexOrRaiseError(String name, RubyEncoding newEncoding) {
663+
public static RubyArray setIndexOrRaiseError(Node node, String name, RubyEncoding newEncoding) {
664664
if (newEncoding == null) {
665665
throw new RaiseException(
666-
getContext(),
667-
coreExceptions().argumentErrorEncodingAlreadyRegistered(name, this));
666+
getContext(node),
667+
coreExceptions(node).argumentErrorEncodingAlreadyRegistered(name, node));
668668
}
669669

670670
final int index = newEncoding.index;
671-
return createArray(new Object[]{ newEncoding, index });
671+
return createArray(node, new Object[]{ newEncoding, index });
672672
}
673673

674674
}
@@ -677,18 +677,19 @@ public RubyArray setIndexOrRaiseError(String name, RubyEncoding newEncoding) {
677677
public abstract static class EncodingReplicateNode extends EncodingCreationNode {
678678

679679
@Specialization(guards = "strings.isRubyString(nameObject)", limit = "1")
680-
protected RubyArray encodingReplicate(RubyEncoding object, Object nameObject,
680+
protected static RubyArray encodingReplicate(RubyEncoding object, Object nameObject,
681681
@Cached RubyStringLibrary strings,
682-
@Cached ToJavaStringNode toJavaStringNode) {
683-
final String name = toJavaStringNode.execute(nameObject);
682+
@Cached ToJavaStringNode toJavaStringNode,
683+
@Bind("this") Node node) {
684+
final String name = toJavaStringNode.execute(node, nameObject);
684685

685-
final RubyEncoding newEncoding = replicate(name, object);
686-
return setIndexOrRaiseError(name, newEncoding);
686+
final RubyEncoding newEncoding = replicate(node, name, object);
687+
return setIndexOrRaiseError(node, name, newEncoding);
687688
}
688689

689690
@TruffleBoundary
690-
private RubyEncoding replicate(String name, RubyEncoding encoding) {
691-
return getContext().getEncodingManager().replicateEncoding(encoding, name);
691+
private static RubyEncoding replicate(Node node, String name, RubyEncoding encoding) {
692+
return getContext(node).getEncodingManager().replicateEncoding(encoding, name);
692693
}
693694

694695
}
@@ -697,18 +698,19 @@ private RubyEncoding replicate(String name, RubyEncoding encoding) {
697698
public abstract static class DummyEncodingNode extends EncodingCreationNode {
698699

699700
@Specialization(guards = "strings.isRubyString(nameObject)", limit = "1")
700-
protected RubyArray createDummyEncoding(Object nameObject,
701+
protected static RubyArray createDummyEncoding(Object nameObject,
701702
@Cached RubyStringLibrary strings,
702-
@Cached ToJavaStringNode toJavaStringNode) {
703-
final String name = toJavaStringNode.execute(nameObject);
703+
@Cached ToJavaStringNode toJavaStringNode,
704+
@Bind("this") Node node) {
705+
final String name = toJavaStringNode.execute(node, nameObject);
704706

705-
final RubyEncoding newEncoding = createDummy(name);
706-
return setIndexOrRaiseError(name, newEncoding);
707+
final RubyEncoding newEncoding = createDummy(node, name);
708+
return setIndexOrRaiseError(node, name, newEncoding);
707709
}
708710

709711
@TruffleBoundary
710-
private RubyEncoding createDummy(String name) {
711-
return getContext().getEncodingManager().createDummyEncoding(name);
712+
private static RubyEncoding createDummy(Node node, String name) {
713+
return getContext(node).getEncodingManager().createDummyEncoding(name);
712714
}
713715

714716
}

0 commit comments

Comments
 (0)