Skip to content

Commit 4795370

Browse files
committed
Convert NewRangeNode to DSL inlinable
1 parent 41b38b4 commit 4795370

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

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

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ Object newRange(RubyClass rubyClass, Object begin, Object end, Object maybeExclu
389389
@Cached BooleanCastWithDefaultNode booleanCastWithDefaultNode,
390390
@Cached NewRangeNode newRangeNode) {
391391
final boolean excludeEnd = booleanCastWithDefaultNode.execute(this, maybeExcludeEnd, false);
392-
return newRangeNode.execute(rubyClass, begin, end, excludeEnd);
392+
return newRangeNode.execute(this, rubyClass, begin, end, excludeEnd);
393393
}
394394
}
395395

@@ -407,7 +407,7 @@ public abstract static class RangeLiteralNode extends RubyContextSourceNode {
407407
@Specialization
408408
Object doRange(Object begin, Object end,
409409
@Cached NewRangeNode newRangeNode) {
410-
return newRangeNode.execute(coreLibrary().rangeClass, begin, end, getExcludeEnd());
410+
return newRangeNode.execute(this, coreLibrary().rangeClass, begin, end, getExcludeEnd());
411411
}
412412

413413
@Override
@@ -418,37 +418,40 @@ public RubyNode cloneUninitialized() {
418418
}
419419
}
420420

421+
@GenerateCached(false)
422+
@GenerateInline
421423
public abstract static class NewRangeNode extends RubyBaseNode {
422424

423-
public abstract Object execute(RubyClass rubyClass, Object begin, Object end, boolean excludeEnd);
425+
public abstract Object execute(Node node, RubyClass rubyClass, Object begin, Object end, boolean excludeEnd);
424426

425427
@Specialization(guards = "rubyClass == getRangeClass()")
426-
RubyIntRange intRange(RubyClass rubyClass, int begin, int end, boolean excludeEnd) {
428+
static RubyIntRange intRange(RubyClass rubyClass, int begin, int end, boolean excludeEnd) {
427429
return new RubyIntRange(excludeEnd, begin, end);
428430
}
429431

430432
@Specialization(guards = { "rubyClass == getRangeClass()", "fitsInInteger(begin)", "fitsInInteger(end)" })
431-
RubyIntRange longFittingIntRange(RubyClass rubyClass, long begin, long end, boolean excludeEnd) {
433+
static RubyIntRange longFittingIntRange(RubyClass rubyClass, long begin, long end, boolean excludeEnd) {
432434
return new RubyIntRange(excludeEnd, (int) begin, (int) end);
433435
}
434436

435437
@Specialization(guards = { "rubyClass == getRangeClass()", "!fitsInInteger(begin) || !fitsInInteger(end)" })
436-
RubyLongRange longRange(RubyClass rubyClass, long begin, long end, boolean excludeEnd) {
438+
static RubyLongRange longRange(RubyClass rubyClass, long begin, long end, boolean excludeEnd) {
437439
return new RubyLongRange(excludeEnd, begin, end);
438440
}
439441

440442
@Specialization(guards = { "!standardClass || (!isImplicitLong(begin) || !isImplicitLong(end))" })
441-
RubyObjectRange objectRange(RubyClass rubyClass, Object begin, Object end, boolean excludeEnd,
442-
@Cached DispatchNode compare,
443+
static RubyObjectRange objectRange(Node node, RubyClass rubyClass, Object begin, Object end, boolean excludeEnd,
444+
@Cached(inline = false) DispatchNode compare,
443445
@Bind("rubyClass == getRangeClass()") boolean standardClass) {
444446

445447
if (compare.call(begin, "<=>", end) == nil && end != nil && begin != nil) {
446-
throw new RaiseException(getContext(), coreExceptions().argumentError("bad value for range", this));
448+
throw new RaiseException(getContext(node),
449+
coreExceptions(node).argumentError("bad value for range", node));
447450
}
448451

449-
final Shape shape = getLanguage().objectRangeShape;
452+
final Shape shape = getLanguage(node).objectRangeShape;
450453
final RubyObjectRange range = new RubyObjectRange(rubyClass, shape, excludeEnd, begin, end, standardClass);
451-
AllocationTracing.trace(range, this);
454+
AllocationTracing.trace(range, node);
452455
return range;
453456
}
454457

0 commit comments

Comments
 (0)