Skip to content

Commit 951756a

Browse files
committed
Refactor ToJavaStringNode so it can be DSL inlinable
1 parent ff3dc4e commit 951756a

17 files changed

+90
-131
lines changed

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

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,6 @@
126126
import com.oracle.truffle.api.Truffle;
127127
import com.oracle.truffle.api.dsl.Cached;
128128
import com.oracle.truffle.api.dsl.Cached.Shared;
129-
import com.oracle.truffle.api.dsl.CreateCast;
130129
import com.oracle.truffle.api.dsl.Fallback;
131130
import com.oracle.truffle.api.dsl.NodeChild;
132131
import com.oracle.truffle.api.dsl.ReportPolymorphism;
@@ -1003,16 +1002,14 @@ public abstract static class RbConstGetNode extends CoreMethodNode {
10031002

10041003
@Child private LookupConstantNode lookupConstantNode = LookupConstantNode.create(true, true);
10051004

1006-
@CreateCast("name")
1007-
protected RubyNode coerceToString(RubyNode name) {
1008-
return ToJavaStringNode.create(name);
1009-
}
1010-
10111005
@Specialization
1012-
protected Object rbConstGet(RubyModule module, String name,
1006+
protected Object rbConstGet(RubyModule module, Object name,
1007+
@Cached ToJavaStringNode toJavaStringNode,
10131008
@Cached GetConstantNode getConstantNode) {
1009+
final var nameAsString = toJavaStringNode.execute(name);
10141010
return getConstantNode
1015-
.lookupAndResolveConstant(LexicalScope.IGNORE, module, name, false, lookupConstantNode, true);
1011+
.lookupAndResolveConstant(LexicalScope.IGNORE, module, nameAsString, false, lookupConstantNode,
1012+
true);
10161013
}
10171014

10181015
}
@@ -1024,16 +1021,14 @@ public abstract static class RbConstGetFromNode extends CoreMethodNode {
10241021

10251022
@Child private LookupConstantNode lookupConstantNode = LookupConstantNode.create(true, false);
10261023

1027-
@CreateCast("name")
1028-
protected RubyNode coerceToString(RubyNode name) {
1029-
return ToJavaStringNode.create(name);
1030-
}
1031-
10321024
@Specialization
1033-
protected Object rbConstGetFrom(RubyModule module, String name,
1025+
protected Object rbConstGetFrom(RubyModule module, Object name,
1026+
@Cached ToJavaStringNode toJavaStringNode,
10341027
@Cached GetConstantNode getConstantNode) {
1028+
final var nameAsString = toJavaStringNode.execute(name);
10351029
return getConstantNode
1036-
.lookupAndResolveConstant(LexicalScope.IGNORE, module, name, false, lookupConstantNode, true);
1030+
.lookupAndResolveConstant(LexicalScope.IGNORE, module, nameAsString, false, lookupConstantNode,
1031+
true);
10371032
}
10381033

10391034
}
@@ -1044,17 +1039,14 @@ protected Object rbConstGetFrom(RubyModule module, String name,
10441039
@NodeChild(value = "value", type = RubyNode.class)
10451040
public abstract static class RbConstSetNode extends CoreMethodNode {
10461041

1047-
@CreateCast("name")
1048-
protected RubyNode coerceToString(RubyNode name) {
1049-
return ToJavaStringNode.create(name);
1050-
}
10511042

10521043
@Specialization
1053-
protected Object rbConstSet(RubyModule module, String name, Object value,
1044+
protected Object rbConstSet(RubyModule module, Object name, Object value,
1045+
@Cached ToJavaStringNode toJavaStringNode,
10541046
@Cached ConstSetUncheckedNode constSetUncheckedNode) {
1055-
return constSetUncheckedNode.execute(module, name, value);
1047+
final var nameAsString = toJavaStringNode.execute(name);
1048+
return constSetUncheckedNode.execute(module, nameAsString, value);
10561049
}
1057-
10581050
}
10591051

10601052
@Primitive(name = "rb_gv_get")

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

Lines changed: 4 additions & 4 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.executeToJavaString(name);
113+
final String javaName = toJavaStringNode.execute(name);
114114
final String value = getEnv(javaName);
115115

116116
if (nullValueProfile.profile(node, value == null)) {
@@ -191,7 +191,7 @@ public abstract static class GetJavaPropertyNode extends CoreMethodArrayArgument
191191
protected Object getJavaProperty(Object property,
192192
@Cached RubyStringLibrary strings,
193193
@Cached ToJavaStringNode toJavaStringNode) {
194-
String value = getProperty(toJavaStringNode.executeToJavaString(property));
194+
String value = getProperty(toJavaStringNode.execute(property));
195195
if (value == null) {
196196
return nil;
197197
} else {
@@ -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.executeToJavaString(message));
241+
log(javaLevel, toJavaStringNode.execute(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.executeToJavaString(message));
249+
log(getLevel(level), toJavaStringNode.execute(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
@@ -1431,7 +1431,7 @@ protected Object injectSymbolNoInitial(
14311431
return injectSymbolHelper(
14321432
frame,
14331433
array,
1434-
toJavaString.executeToJavaString(initialOrSymbol),
1434+
toJavaString.execute(initialOrSymbol),
14351435
stores,
14361436
store,
14371437
stores.read(store, 0),
@@ -1455,7 +1455,7 @@ protected Object injectSymbolWithInitial(
14551455
return injectSymbolHelper(
14561456
frame,
14571457
array,
1458-
toJavaString.executeToJavaString(symbol),
1458+
toJavaString.execute(symbol),
14591459
stores,
14601460
store,
14611461
initialOrSymbol,
@@ -1588,7 +1588,7 @@ protected RubyString packUncached(RubyArray array, Object format,
15881588
@Cached @Shared RubyStringLibrary libFormat,
15891589
@Cached ToJavaStringNode toJavaStringNode,
15901590
@Cached IndirectCallNode callPackNode) {
1591-
final String formatString = toJavaStringNode.executeToJavaString(format);
1591+
final String formatString = toJavaStringNode.execute(format);
15921592

15931593
final BytesResult result;
15941594
try {

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

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

315315
if (count >= 2) {
316316
fileName = toJavaStringNode
317-
.executeToJavaString(toStrNode.execute(RubyArguments.getArgument(rubyArgs, 1)));
317+
.execute(toStrNode.execute(RubyArguments.getArgument(rubyArgs, 1)));
318318
}
319319

320320
if (count >= 3) {

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,13 @@ public static NameToJavaStringNode getUncached() {
5555
protected String stringNameToJavaString(Object value,
5656
@Cached @Exclusive RubyStringLibrary libString,
5757
@Cached @Shared ToJavaStringNode toJavaStringNode) {
58-
return toJavaStringNode.executeToJavaString(value);
58+
return toJavaStringNode.execute(value);
5959
}
6060

6161
@Specialization
6262
protected String symbolNameToJavaString(RubySymbol value,
6363
@Cached @Shared ToJavaStringNode toJavaStringNode) {
64-
return toJavaStringNode.executeToJavaString(value);
64+
return toJavaStringNode.execute(value);
6565
}
6666

6767
@Specialization
@@ -91,7 +91,7 @@ protected static String nameToJavaString(Object object,
9191
}
9292

9393
if (libString.isRubyString(coerced)) {
94-
return toJavaStringNode.executeToJavaString(coerced);
94+
return toJavaStringNode.execute(coerced);
9595
} else {
9696
errorProfile.enter(node);
9797
throw new RaiseException(getContext(node), coreExceptions(node).typeErrorBadCoercion(

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -697,7 +697,7 @@ public abstract static class EncodingReplicateNode extends EncodingCreationNode
697697
protected RubyArray encodingReplicate(RubyEncoding object, Object nameObject,
698698
@Cached RubyStringLibrary strings,
699699
@Cached ToJavaStringNode toJavaStringNode) {
700-
final String name = toJavaStringNode.executeToJavaString(nameObject);
700+
final String name = toJavaStringNode.execute(nameObject);
701701

702702
final RubyEncoding newEncoding = replicate(name, object);
703703
return setIndexOrRaiseError(name, newEncoding);
@@ -717,7 +717,7 @@ public abstract static class DummyEncodingNode extends EncodingCreationNode {
717717
protected RubyArray createDummyEncoding(Object nameObject,
718718
@Cached RubyStringLibrary strings,
719719
@Cached ToJavaStringNode toJavaStringNode) {
720-
final String name = toJavaStringNode.executeToJavaString(nameObject);
720+
final String name = toJavaStringNode.execute(nameObject);
721721

722722
final RubyEncoding newEncoding = createDummy(name);
723723
return setIndexOrRaiseError(name, newEncoding);

src/main/java/org/truffleruby/core/kernel/KernelNodes.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ protected Object findFile(Object featureString,
270270
@Cached @Shared TruffleString.FromJavaStringNode fromJavaStringNode,
271271
@Cached RubyStringLibrary libFeatureString,
272272
@Cached ToJavaStringNode toJavaStringNode) {
273-
String feature = toJavaStringNode.executeToJavaString(featureString);
273+
String feature = toJavaStringNode.execute(featureString);
274274
return findFileString(feature, notFoundProfile, fromJavaStringNode);
275275
}
276276

@@ -337,7 +337,7 @@ protected boolean loadFeature(Object featureString, Object expandedPathString,
337337
@Cached RubyStringLibrary libFeatureString,
338338
@Cached ToJavaStringNode toJavaStringNode) {
339339
return requireNode.executeRequire(
340-
toJavaStringNode.executeToJavaString(featureString),
340+
toJavaStringNode.execute(featureString),
341341
expandedPathString);
342342
}
343343

@@ -773,7 +773,7 @@ protected Object evalBindingUncached(Object self, Object source, RubyBinding bin
773773
@Cached ToJavaStringNode toJavaStringNode) {
774774

775775
var callTarget = parse(libSource.getTString(source), libSource.getEncoding(source), binding.getFrame(),
776-
toJavaStringNode.executeToJavaString(file), line);
776+
toJavaStringNode.execute(file), line);
777777
boolean assignsNewUserVariables = assignsNewUserVariables(getDescriptor(callTarget));
778778

779779
Object[] rubyArgs = prepareEvalArgs(callTarget, assignsNewUserVariables, self, binding);
@@ -1453,7 +1453,7 @@ protected boolean doesRespondTo(Frame callerFrame, Object self, Object[] rubyArg
14531453
coreExceptions().typeErrorIsNotAOrB(self, "symbol", "string", this));
14541454
}
14551455

1456-
final String methodName = toJavaString.executeToJavaString(name);
1456+
final String methodName = toJavaString.execute(name);
14571457
final boolean found;
14581458
if (ignoreVisibilityProfile.profile(this, includeProtectedAndPrivate)) {
14591459
found = dispatchPrivate.execute(callerFrame, self, methodName);

src/main/java/org/truffleruby/core/module/ModuleNodes.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -748,7 +748,7 @@ protected static Object evalWithString(
748748

749749
if (count >= 2) {
750750
fileName = toJavaStringNode
751-
.executeToJavaString(toStrNode.execute(RubyArguments.getArgument(rubyArgs, 1)));
751+
.execute(toStrNode.execute(RubyArguments.getArgument(rubyArgs, 1)));
752752
}
753753

754754
if (count >= 3) {
@@ -1106,7 +1106,7 @@ protected Object getConstantString(
11061106
RubyModule module, Object name, boolean inherit, boolean lookInObject, boolean checkName,
11071107
@Cached @Shared RubyStringLibrary stringsName,
11081108
@Cached @Shared ToJavaStringNode toJavaStringNode) {
1109-
return getConstant(module, toJavaStringNode.executeToJavaString(name), checkName, lookInObject);
1109+
return getConstant(module, toJavaStringNode.execute(name), checkName, lookInObject);
11101110
}
11111111

11121112
@Specialization(
@@ -1115,7 +1115,7 @@ protected Object getConstantNoInheritString(
11151115
RubyModule module, Object name, boolean inherit, boolean lookInObject, boolean checkName,
11161116
@Cached @Shared RubyStringLibrary stringsName,
11171117
@Cached @Shared ToJavaStringNode toJavaStringNode) {
1118-
return getConstantNoInherit(module, toJavaStringNode.executeToJavaString(name), checkName);
1118+
return getConstantNoInherit(module, toJavaStringNode.execute(name), checkName);
11191119
}
11201120

11211121
// Scoped String

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1398,7 +1398,7 @@ protected static RubyString forceEncodingString(RubyString string, Object newEnc
13981398
@Cached InlinedBranchProfile errorProfile,
13991399
@Cached @Exclusive ForceEncodingNode forceEncodingNode,
14001400
@Bind("this") Node node) {
1401-
final String stringName = toJavaStringNode.executeToJavaString(newEncoding);
1401+
final String stringName = toJavaStringNode.execute(newEncoding);
14021402
final RubyEncoding rubyEncoding = getContext(node).getEncodingManager().getRubyEncoding(stringName);
14031403

14041404
if (rubyEncoding == null) {
@@ -2904,7 +2904,7 @@ protected RubyArray unpackUncached(Object string, Object format, Object offsetOb
29042904

29052905
try {
29062906
result = (ArrayResult) callUnpackNode.call(
2907-
compileFormat(toJavaStringNode.executeToJavaString(format)),
2907+
compileFormat(toJavaStringNode.execute(format)),
29082908
new Object[]{
29092909
byteArray.getArray(),
29102910
byteArray.getEnd(),

src/main/java/org/truffleruby/debug/TruffleDebugNodes.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,7 @@ public abstract static class LogWarningNode extends CoreMethodArrayArgumentsNode
498498
@Specialization
499499
protected Object logWarning(Object value,
500500
@Cached ToJavaStringNode toJavaStringNode) {
501-
warning(toJavaStringNode.executeToJavaString(value));
501+
warning(toJavaStringNode.execute(value));
502502
return nil;
503503
}
504504

@@ -515,7 +515,7 @@ public abstract static class LogInfoNode extends CoreMethodArrayArgumentsNode {
515515
@Specialization
516516
protected Object logInfo(Object value,
517517
@Cached ToJavaStringNode toJavaStringNode) {
518-
info(toJavaStringNode.executeToJavaString(value));
518+
info(toJavaStringNode.execute(value));
519519
return nil;
520520
}
521521

@@ -532,7 +532,7 @@ public abstract static class LogConfigNode extends CoreMethodArrayArgumentsNode
532532
@Specialization
533533
protected Object logConfig(Object value,
534534
@Cached ToJavaStringNode toJavaStringNode) {
535-
config(toJavaStringNode.executeToJavaString(value));
535+
config(toJavaStringNode.execute(value));
536536
return nil;
537537
}
538538

0 commit comments

Comments
 (0)