Skip to content

Commit 41b38b4

Browse files
committed
Convert RangeLiteralNode to DSL node
1 parent fcbd85e commit 41b38b4

File tree

2 files changed

+18
-18
lines changed

2 files changed

+18
-18
lines changed

src/main/java/org/truffleruby/core/range/RangeNodes.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import com.oracle.truffle.api.dsl.GenerateInline;
1515
import com.oracle.truffle.api.dsl.GenerateUncached;
1616
import com.oracle.truffle.api.dsl.NeverDefault;
17+
import com.oracle.truffle.api.dsl.NodeChild;
18+
import com.oracle.truffle.api.dsl.NodeField;
1719
import com.oracle.truffle.api.nodes.Node;
1820
import com.oracle.truffle.api.profiles.InlinedConditionProfile;
1921
import com.oracle.truffle.api.profiles.InlinedLoopConditionProfile;
@@ -391,29 +393,27 @@ Object newRange(RubyClass rubyClass, Object begin, Object end, Object maybeExclu
391393
}
392394
}
393395

394-
public static final class RangeLiteralNode extends RubyContextSourceNode {
396+
@NodeChild(value = "beginNode", type = RubyNode.class)
397+
@NodeChild(value = "endNode", type = RubyNode.class)
398+
@NodeField(name = "excludeEnd", type = Boolean.class)
399+
public abstract static class RangeLiteralNode extends RubyContextSourceNode {
395400

396-
@Child RubyNode beginNode;
397-
@Child RubyNode endNode;
398-
@Child NewRangeNode newRangeNode = RangeNodesFactory.NewRangeNodeGen.create();
399-
private final boolean excludeEnd;
401+
abstract RubyNode getBeginNode();
400402

401-
public RangeLiteralNode(RubyNode beginNode, RubyNode endNode, boolean excludeEnd) {
402-
this.beginNode = beginNode;
403-
this.endNode = endNode;
404-
this.excludeEnd = excludeEnd;
405-
}
403+
abstract RubyNode getEndNode();
406404

407-
@Override
408-
public Object execute(VirtualFrame frame) {
409-
Object begin = beginNode.execute(frame);
410-
Object end = endNode.execute(frame);
411-
return newRangeNode.execute(coreLibrary().rangeClass, begin, end, excludeEnd);
405+
abstract boolean getExcludeEnd();
406+
407+
@Specialization
408+
Object doRange(Object begin, Object end,
409+
@Cached NewRangeNode newRangeNode) {
410+
return newRangeNode.execute(coreLibrary().rangeClass, begin, end, getExcludeEnd());
412411
}
413412

414413
@Override
415414
public RubyNode cloneUninitialized() {
416-
return new RangeLiteralNode(beginNode.cloneUninitialized(), endNode.cloneUninitialized(), excludeEnd)
415+
return RangeNodesFactory.RangeLiteralNodeGen
416+
.create(getBeginNode().cloneUninitialized(), getEndNode().cloneUninitialized(), getExcludeEnd())
417417
.copyFlags(this);
418418
}
419419
}

src/main/java/org/truffleruby/parser/BodyTranslator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
import org.truffleruby.core.kernel.KernelNodesFactory;
4141
import org.truffleruby.core.module.ModuleNodes;
4242
import org.truffleruby.core.numeric.BignumOperations;
43-
import org.truffleruby.core.range.RangeNodes;
43+
import org.truffleruby.core.range.RangeNodesFactory;
4444
import org.truffleruby.core.range.RubyIntRange;
4545
import org.truffleruby.core.range.RubyLongRange;
4646
import org.truffleruby.core.regexp.ClassicRegexp;
@@ -1417,7 +1417,7 @@ public RubyNode visitDotNode(DotParseNode node) {
14171417
} else {
14181418
final RubyNode begin = node.getBeginNode().accept(this);
14191419
final RubyNode end = node.getEndNode().accept(this);
1420-
ret = new RangeNodes.RangeLiteralNode(begin, end, node.isExclusive());
1420+
ret = RangeNodesFactory.RangeLiteralNodeGen.create(begin, end, node.isExclusive());
14211421
}
14221422
ret.unsafeSetSourceSection(sourceSection);
14231423
return addNewlineIfNeeded(node, ret);

0 commit comments

Comments
 (0)