Skip to content

Commit 1662114

Browse files
committed
Remove ToJavaStringWithDefaultNode usage in CreateCast
1 parent 2eb0713 commit 1662114

File tree

2 files changed

+16
-34
lines changed

2 files changed

+16
-34
lines changed

src/main/java/org/truffleruby/interop/ToJavaStringWithDefaultNode.java

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,43 +9,31 @@
99
*/
1010
package org.truffleruby.interop;
1111

12+
import com.oracle.truffle.api.dsl.GenerateCached;
13+
import com.oracle.truffle.api.dsl.GenerateInline;
14+
import com.oracle.truffle.api.nodes.Node;
1215
import org.truffleruby.language.NotProvided;
13-
import org.truffleruby.language.RubyContextSourceNode;
14-
import org.truffleruby.language.RubyNode;
16+
import org.truffleruby.language.RubyBaseNode;
1517

1618
import com.oracle.truffle.api.dsl.Cached;
17-
import com.oracle.truffle.api.dsl.NodeChild;
1819
import com.oracle.truffle.api.dsl.Specialization;
1920

2021
/** Convert a Ruby String or Symbol to a Java string, or return a default string if a value was not provided. */
21-
@NodeChild(value = "valueNode", type = RubyNode.class)
22-
public abstract class ToJavaStringWithDefaultNode extends RubyContextSourceNode {
22+
@GenerateInline
23+
@GenerateCached(false)
24+
public abstract class ToJavaStringWithDefaultNode extends RubyBaseNode {
2325

24-
private final String defaultValue;
25-
26-
public ToJavaStringWithDefaultNode(String defaultValue) {
27-
this.defaultValue = defaultValue;
28-
}
29-
30-
abstract RubyNode getValueNode();
26+
public abstract String execute(Node node, Object value, String defaultValue);
3127

3228
@Specialization
33-
protected String doDefault(NotProvided value) {
29+
protected static String doDefault(NotProvided value, String defaultValue) {
3430
return defaultValue;
3531
}
3632

3733
@Specialization(guards = "wasProvided(value)")
38-
protected String doProvided(Object value,
34+
protected static String doProvided(Node node, Object value, String defaultValue,
3935
@Cached ToJavaStringNode toJavaStringNode) {
40-
return toJavaStringNode.execute(this, value);
41-
}
42-
43-
@Override
44-
public RubyNode cloneUninitialized() {
45-
var copy = ToJavaStringWithDefaultNodeGen.create(
46-
defaultValue,
47-
getValueNode().cloneUninitialized());
48-
return copy.copyFlags(this);
36+
return toJavaStringNode.execute(node, value);
4937
}
5038

5139
}

src/main/java/org/truffleruby/stdlib/readline/ReadlineNodes.java

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,12 @@
4444
import org.truffleruby.core.support.RubyIO;
4545
import org.truffleruby.core.thread.ThreadManager.BlockingAction;
4646
import org.truffleruby.interop.ToJavaStringNode;
47-
import org.truffleruby.interop.ToJavaStringWithDefaultNodeGen;
47+
import org.truffleruby.interop.ToJavaStringWithDefaultNode;
4848
import org.truffleruby.language.RubyBaseNodeWithExecute;
4949
import org.truffleruby.language.RubyGuards;
5050
import org.truffleruby.language.RubyNode;
5151

5252
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
53-
import com.oracle.truffle.api.dsl.CreateCast;
5453
import com.oracle.truffle.api.dsl.NodeChild;
5554
import com.oracle.truffle.api.dsl.Specialization;
5655
import org.truffleruby.language.dispatch.DispatchNode;
@@ -122,20 +121,15 @@ protected RubyArray getScreenSize() {
122121
}
123122

124123
@CoreMethod(names = "readline", isModuleFunction = true, optional = 2)
125-
@NodeChild(value = "prompt", type = RubyNode.class)
126-
@NodeChild(value = "addToHistory", type = RubyBaseNodeWithExecute.class)
127-
public abstract static class ReadlineNode extends CoreMethodNode {
128-
129-
@CreateCast("prompt")
130-
protected RubyNode coercePromptToJavaString(RubyNode prompt) {
131-
return ToJavaStringWithDefaultNodeGen.create("", prompt);
132-
}
124+
public abstract static class ReadlineNode extends CoreMethodArrayArgumentsNode {
133125

134126
@TruffleBoundary
135127
@Specialization
136-
protected Object readline(String prompt, Object maybeAddToHistory,
128+
protected Object readline(Object maybePromptObject, Object maybeAddToHistory,
129+
@Cached ToJavaStringWithDefaultNode toJavaStringWithDefaultNode,
137130
@Cached TruffleString.FromJavaStringNode fromJavaStringNode,
138131
@Cached BooleanCastWithDefaultNode booleanCastWithDefaultNode) {
132+
final var prompt = toJavaStringWithDefaultNode.execute(this, maybePromptObject, "");
139133
final boolean addToHistory = booleanCastWithDefaultNode.execute(this, maybeAddToHistory, false);
140134
final LineReader readline = getContext().getConsoleHolder().getReadline();
141135

0 commit comments

Comments
 (0)