Skip to content

Commit 3d6e3a7

Browse files
committed
Remove YieldingCoreMethodNode. Inlined all calls into caller
1 parent d6aaaee commit 3d6e3a7

File tree

15 files changed

+72
-106
lines changed

15 files changed

+72
-106
lines changed

src/main/java/org/truffleruby/builtins/YieldingCoreMethodNode.java

Lines changed: 0 additions & 22 deletions
This file was deleted.

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import org.truffleruby.builtins.CoreMethodArrayArgumentsNode;
3636
import org.truffleruby.builtins.CoreMethodNode;
3737
import org.truffleruby.builtins.PrimitiveArrayArgumentsNode;
38-
import org.truffleruby.builtins.YieldingCoreMethodNode;
3938
import org.truffleruby.cext.CExtNodesFactory.StringToNativeNodeGen;
4039
import org.truffleruby.cext.UnwrapNode.UnwrapCArrayNode;
4140
import org.truffleruby.core.MarkingService.ExtensionCallStack;
@@ -1457,15 +1456,15 @@ private Object callToS(Object object) {
14571456
}
14581457

14591458
@CoreMethod(names = "capture_exception", onSingleton = true, needsBlock = true)
1460-
public abstract static class CaptureExceptionNode extends YieldingCoreMethodNode {
1459+
public abstract static class CaptureExceptionNode extends CoreMethodArrayArgumentsNode {
14611460

14621461
@Specialization
14631462
protected Object captureException(RubyProc block,
14641463
@Cached InlinedBranchProfile exceptionProfile,
14651464
@Cached InlinedBranchProfile noExceptionProfile,
14661465
@Cached CallBlockNode yieldNode) {
14671466
try {
1468-
callBlock(yieldNode, block);
1467+
yieldNode.yield(block);
14691468
noExceptionProfile.enter(this);
14701469
return nil;
14711470
} catch (Throwable e) {
@@ -1476,7 +1475,7 @@ protected Object captureException(RubyProc block,
14761475
}
14771476

14781477
@CoreMethod(names = "store_exception", onSingleton = true, required = 1)
1479-
public abstract static class StoreException extends YieldingCoreMethodNode {
1478+
public abstract static class StoreException extends CoreMethodArrayArgumentsNode {
14801479

14811480
@Specialization
14821481
protected Object storeException(CapturedException captured) {
@@ -1487,7 +1486,7 @@ protected Object storeException(CapturedException captured) {
14871486
}
14881487

14891488
@CoreMethod(names = "retrieve_exception", onSingleton = true)
1490-
public abstract static class RetrieveException extends YieldingCoreMethodNode {
1489+
public abstract static class RetrieveException extends CoreMethodArrayArgumentsNode {
14911490

14921491
@Specialization
14931492
protected CapturedException retrieveException() {

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

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import org.truffleruby.annotations.CoreModule;
3131
import org.truffleruby.annotations.Primitive;
3232
import org.truffleruby.builtins.PrimitiveArrayArgumentsNode;
33-
import org.truffleruby.builtins.YieldingCoreMethodNode;
3433
import org.truffleruby.collections.SimpleStack;
3534
import org.truffleruby.core.CoreLibrary;
3635
import org.truffleruby.core.Hashing;
@@ -661,7 +660,7 @@ protected RubyArray concatManyGeneral(RubyArray array, Object first, Object[] re
661660

662661
@CoreMethod(names = "delete", required = 1, needsBlock = true)
663662
@ImportStatic(ArrayGuards.class)
664-
public abstract static class DeleteNode extends YieldingCoreMethodNode {
663+
public abstract static class DeleteNode extends CoreMethodArrayArgumentsNode {
665664

666665
@Child private SameOrEqualNode sameOrEqualNode = SameOrEqualNode.create();
667666
@Child private TypeNodes.CheckFrozenNode raiseIfFrozenNode;
@@ -743,7 +742,7 @@ private Object delete(RubyArray array, Object value, Object maybeBlock,
743742
if (maybeBlock == nil) {
744743
return nil;
745744
} else {
746-
return callBlock(yieldNode, (RubyProc) maybeBlock, value);
745+
return yieldNode.yield((RubyProc) maybeBlock, value);
747746
}
748747
}
749748
}
@@ -825,7 +824,7 @@ protected Object deleteAtCopying(RubyArray array, int index,
825824

826825
@CoreMethod(names = "each", needsBlock = true, enumeratorSize = "size")
827826
@ImportStatic(ArrayGuards.class)
828-
public abstract static class EachNode extends YieldingCoreMethodNode implements ArrayElementConsumerNode {
827+
public abstract static class EachNode extends CoreMethodArrayArgumentsNode implements ArrayElementConsumerNode {
829828

830829
@Specialization
831830
protected Object each(RubyArray array, RubyProc block,
@@ -836,7 +835,7 @@ protected Object each(RubyArray array, RubyProc block,
836835
@Override
837836
public void accept(CallBlockNode yieldNode, RubyArray array, Object state, Object element, int index) {
838837
RubyProc block = (RubyProc) state;
839-
callBlock(yieldNode, block, element);
838+
yieldNode.yield(block, element);
840839
}
841840

842841
}
@@ -1125,7 +1124,7 @@ protected boolean include(RubyArray array, Object value,
11251124
lowerFixnum = 1,
11261125
argumentNames = { "size_or_copy", "filling_value", "block" })
11271126
@ImportStatic({ ArrayGuards.class, ArrayStoreLibrary.class })
1128-
public abstract static class InitializeNode extends YieldingCoreMethodNode {
1127+
public abstract static class InitializeNode extends CoreMethodArrayArgumentsNode {
11291128

11301129
@Child private ToIntNode toIntNode;
11311130
@Child private DispatchNode toAryNode;
@@ -1244,7 +1243,7 @@ protected Object initializeBlock(RubyArray array, int size, Object unusedFilling
12441243
int n = 0;
12451244
try {
12461245
for (; loopProfile.inject(n < size); n++) {
1247-
final Object value = callBlock(yieldNode, block, n);
1246+
final Object value = yieldNode.yield(block, n);
12481247
arrayBuilder.appendValue(state, n, value);
12491248
}
12501249
} finally {
@@ -1479,7 +1478,7 @@ private Object injectSymbolHelper(VirtualFrame frame, RubyArray array, String sy
14791478

14801479
@CoreMethod(names = { "map", "collect" }, needsBlock = true, enumeratorSize = "size")
14811480
@ImportStatic(ArrayGuards.class)
1482-
public abstract static class MapNode extends YieldingCoreMethodNode implements ArrayElementConsumerNode {
1481+
public abstract static class MapNode extends CoreMethodArrayArgumentsNode implements ArrayElementConsumerNode {
14831482

14841483
private static class State {
14851484
final BuilderState builderState;
@@ -1510,15 +1509,16 @@ protected Object map(RubyArray array, RubyProc block,
15101509
public void accept(CallBlockNode yieldNode, RubyArray array, Object stateObject, Object element, int index) {
15111510
final State state = (State) stateObject;
15121511

1513-
Object value = callBlock(yieldNode, state.block, element);
1512+
Object value = yieldNode.yield(state.block, element);
15141513
arrayBuilder.appendValue(state.builderState, index, value);
15151514
}
15161515

15171516
}
15181517

15191518
@CoreMethod(names = { "map!", "collect!" }, needsBlock = true, enumeratorSize = "size", raiseIfFrozenSelf = true)
15201519
@ImportStatic(ArrayGuards.class)
1521-
public abstract static class MapInPlaceNode extends YieldingCoreMethodNode implements ArrayElementConsumerNode {
1520+
public abstract static class MapInPlaceNode extends CoreMethodArrayArgumentsNode
1521+
implements ArrayElementConsumerNode {
15221522

15231523
@Child private ArrayWriteNormalizedNode writeNode = ArrayWriteNormalizedNodeGen.create();
15241524

@@ -1531,7 +1531,7 @@ protected Object map(RubyArray array, RubyProc block,
15311531
@Override
15321532
public void accept(CallBlockNode yieldNode, RubyArray array, Object state, Object element, int index) {
15331533
RubyProc block = (RubyProc) state;
1534-
writeNode.executeWrite(array, index, callBlock(yieldNode, block, element));
1534+
writeNode.executeWrite(array, index, yieldNode.yield(block, element));
15351535
}
15361536

15371537
}
@@ -1763,7 +1763,7 @@ protected RubyArray pushMany(VirtualFrame frame, RubyArray array, Object value,
17631763

17641764
@CoreMethod(names = "reject", needsBlock = true, enumeratorSize = "size")
17651765
@ImportStatic(ArrayGuards.class)
1766-
public abstract static class RejectNode extends YieldingCoreMethodNode implements ArrayElementConsumerNode {
1766+
public abstract static class RejectNode extends CoreMethodArrayArgumentsNode implements ArrayElementConsumerNode {
17671767

17681768
private static class State {
17691769
final BuilderState builderState;
@@ -1797,7 +1797,7 @@ protected Object reject(RubyArray array, RubyProc block,
17971797
public void accept(CallBlockNode yieldNode, RubyArray array, Object stateObject, Object element, int index) {
17981798
final State state = (State) stateObject;
17991799

1800-
if (!booleanCastNode.execute(callBlock(yieldNode, state.block, element))) {
1800+
if (!booleanCastNode.execute(yieldNode.yield(state.block, element))) {
18011801
arrayBuilder.appendValue(state.builderState, state.newArraySize, element);
18021802
state.newArraySize++;
18031803
}
@@ -1976,7 +1976,7 @@ private void reverse(ArrayStoreLibrary stores,
19761976

19771977
@CoreMethod(names = { "select", "filter" }, needsBlock = true, enumeratorSize = "size")
19781978
@ImportStatic(ArrayGuards.class)
1979-
public abstract static class SelectNode extends YieldingCoreMethodNode implements ArrayElementConsumerNode {
1979+
public abstract static class SelectNode extends CoreMethodArrayArgumentsNode implements ArrayElementConsumerNode {
19801980

19811981
private static class State {
19821982
final BuilderState builderState;
@@ -2010,7 +2010,7 @@ protected Object select(RubyArray array, RubyProc block,
20102010
public void accept(CallBlockNode yieldNode, RubyArray array, Object stateObject, Object element, int index) {
20112011
final State state = (State) stateObject;
20122012

2013-
if (booleanCastNode.execute(callBlock(yieldNode, state.block, element))) {
2013+
if (booleanCastNode.execute(yieldNode.yield(state.block, element))) {
20142014
arrayBuilder.appendValue(state.builderState, state.selectedSize, element);
20152015
state.selectedSize++;
20162016
}

src/main/java/org/truffleruby/core/mutex/MutexNodes.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import org.truffleruby.annotations.CoreMethod;
1717
import org.truffleruby.annotations.CoreModule;
1818
import org.truffleruby.builtins.CoreMethodArrayArgumentsNode;
19-
import org.truffleruby.builtins.YieldingCoreMethodNode;
2019
import org.truffleruby.core.cast.DurationToNanoSecondsNode;
2120
import org.truffleruby.core.kernel.KernelNodes;
2221
import org.truffleruby.core.klass.RubyClass;
@@ -117,7 +116,7 @@ protected RubyMutex unlock(RubyMutex mutex,
117116
}
118117

119118
@CoreMethod(names = "synchronize", needsBlock = true)
120-
public abstract static class SynchronizeNode extends YieldingCoreMethodNode {
119+
public abstract static class SynchronizeNode extends CoreMethodArrayArgumentsNode {
121120

122121
@Specialization
123122
protected Object synchronize(RubyMutex mutex, RubyProc block,
@@ -136,7 +135,7 @@ protected Object synchronize(RubyMutex mutex, RubyProc block,
136135
* locks list to be in consistent state at the end. */
137136
MutexOperations.lock(getContext(), lock, thread, this);
138137
try {
139-
return callBlock(yieldNode, block);
138+
return yieldNode.yield(block);
140139
} finally {
141140
MutexOperations.checkOwnedMutex(getContext(), lock, this, errorProfile);
142141
MutexOperations.unlock(lock, thread);

src/main/java/org/truffleruby/core/numeric/IntegerNodes.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import org.truffleruby.annotations.Primitive;
3030
import org.truffleruby.builtins.PrimitiveArrayArgumentsNode;
3131
import org.truffleruby.builtins.PrimitiveNode;
32-
import org.truffleruby.builtins.YieldingCoreMethodNode;
3332
import org.truffleruby.core.CoreLibrary;
3433
import org.truffleruby.core.array.RubyArray;
3534
import org.truffleruby.core.cast.BigIntegerCastNode;
@@ -1980,7 +1979,7 @@ public RubyNode cloneUninitialized() {
19801979
}
19811980

19821981
@CoreMethod(names = "downto", needsBlock = true, required = 1, returnsEnumeratorIfNoBlock = true)
1983-
public abstract static class DownToNode extends YieldingCoreMethodNode {
1982+
public abstract static class DownToNode extends CoreMethodArrayArgumentsNode {
19841983

19851984
@Child private DispatchNode downtoInternalCall;
19861985

@@ -1991,7 +1990,7 @@ protected Object downto(int from, int to, RubyProc block,
19911990
int i = from;
19921991
try {
19931992
for (; loopProfile.inject(this, i >= to); i--) {
1994-
callBlock(yieldNode, block, i);
1993+
yieldNode.yield(block, i);
19951994
}
19961995
} finally {
19971996
profileAndReportLoopCount(this, loopProfile, from - i + 1);
@@ -2012,7 +2011,7 @@ protected Object downto(long from, long to, RubyProc block,
20122011
long i = from;
20132012
try {
20142013
for (; i >= to; i--) {
2015-
callBlock(yieldNode, block, i);
2014+
yieldNode.yield(block, i);
20162015
}
20172016
} finally {
20182017
profileAndReportLoopCount(this, loopProfile, from - i + 1);
@@ -2059,7 +2058,7 @@ protected RubyBignum toI(RubyBignum n) {
20592058
}
20602059

20612060
@CoreMethod(names = "upto", needsBlock = true, required = 1, returnsEnumeratorIfNoBlock = true)
2062-
public abstract static class UpToNode extends YieldingCoreMethodNode {
2061+
public abstract static class UpToNode extends CoreMethodArrayArgumentsNode {
20632062

20642063
@Child private DispatchNode uptoInternalCall;
20652064
private final LoopConditionProfile loopProfile = LoopConditionProfile.create();
@@ -2070,7 +2069,7 @@ protected Object upto(int from, int to, RubyProc block,
20702069
int i = from;
20712070
try {
20722071
for (; loopProfile.inject(i <= to); i++) {
2073-
callBlock(yieldNode, block, i);
2072+
yieldNode.yield(block, i);
20742073
}
20752074
} finally {
20762075
profileAndReportLoopCount(loopProfile, i - from + 1);
@@ -2090,7 +2089,7 @@ protected Object upto(long from, long to, RubyProc block,
20902089
long i = from;
20912090
try {
20922091
for (; i <= to; i++) {
2093-
callBlock(yieldNode, block, i);
2092+
yieldNode.yield(block, i);
20942093
}
20952094
} finally {
20962095
profileAndReportLoopCount(loopProfile, i - from + 1);

src/main/java/org/truffleruby/core/objectspace/ObjectSpaceNodes.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import org.truffleruby.annotations.CoreModule;
1717
import org.truffleruby.annotations.Primitive;
1818
import org.truffleruby.builtins.PrimitiveArrayArgumentsNode;
19-
import org.truffleruby.builtins.YieldingCoreMethodNode;
2019
import org.truffleruby.cext.DataHolder;
2120
import org.truffleruby.core.DataObjectFinalizerReference;
2221
import org.truffleruby.core.FinalizerReference;
@@ -128,7 +127,7 @@ protected boolean isFloatID(RubyBignum id) {
128127
needsBlock = true,
129128
optional = 1,
130129
returnsEnumeratorIfNoBlock = true)
131-
public abstract static class EachObjectNode extends YieldingCoreMethodNode {
130+
public abstract static class EachObjectNode extends CoreMethodArrayArgumentsNode {
132131

133132
@TruffleBoundary // for the iterator
134133
@Specialization
@@ -138,7 +137,7 @@ protected int eachObject(NotProvided ofClass, RubyProc block,
138137

139138
for (Object object : ObjectGraph.stopAndGetAllObjects("ObjectSpace.each_object", getContext(), this)) {
140139
if (include(object)) {
141-
callBlock(yieldNode, block, object);
140+
yieldNode.yield(block, object);
142141
count++;
143142
}
144143
}
@@ -156,7 +155,7 @@ protected int eachObject(RubyModule ofClass, RubyProc block,
156155
final String reason = "ObjectSpace.each_object(" + ofClass + ")";
157156
for (Object object : ObjectGraph.stopAndGetAllObjects(reason, getContext(), this)) {
158157
if (include(object) && isANode.executeIsA(object, ofClass)) {
159-
callBlock(yieldNode, block, object);
158+
yieldNode.yield(block, object);
160159
count++;
161160
}
162161
}

0 commit comments

Comments
 (0)