Skip to content

Commit 1cb5019

Browse files
committed
[GR-30034] Make BiConsumerNode and BiFunctionNode not implement NodeInterface any longer and rename them to clarify they should PE.
PullRequest: truffleruby/2623
2 parents 484f9e4 + ef6a511 commit 1cb5019

File tree

9 files changed

+30
-36
lines changed

9 files changed

+30
-36
lines changed

src/main/java/org/truffleruby/collections/BiConsumerNode.java renamed to src/main/java/org/truffleruby/collections/PEBiConsumer.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,8 @@
1212
import java.util.function.BiConsumer;
1313

1414
import com.oracle.truffle.api.frame.VirtualFrame;
15-
import com.oracle.truffle.api.nodes.NodeInterface;
16-
17-
/** {@link BiConsumer} as a Node */
18-
public interface BiConsumerNode extends NodeInterface {
1915

16+
/** A {@link BiConsumer} that can be partially evaluated. */
17+
public interface PEBiConsumer {
2018
void accept(VirtualFrame frame, Object key, Object value, Object state);
21-
2219
}

src/main/java/org/truffleruby/collections/BiFunctionNode.java renamed to src/main/java/org/truffleruby/collections/PEBiFunction.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,8 @@
1212
import java.util.function.BiFunction;
1313

1414
import com.oracle.truffle.api.frame.VirtualFrame;
15-
import com.oracle.truffle.api.nodes.NodeInterface;
16-
17-
/** {@link BiFunction} as a Node */
18-
public interface BiFunctionNode extends NodeInterface {
1915

16+
/** A {@link BiFunction} that can be partially evaluated. */
17+
public interface PEBiFunction {
2018
Object accept(VirtualFrame frame, Object hash, Object key);
21-
2219
}

src/main/java/org/truffleruby/core/hash/HashNodes.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
import org.truffleruby.builtins.Primitive;
2222
import org.truffleruby.builtins.PrimitiveArrayArgumentsNode;
2323
import org.truffleruby.builtins.YieldingCoreMethodNode;
24-
import org.truffleruby.collections.BiConsumerNode;
25-
import org.truffleruby.collections.BiFunctionNode;
24+
import org.truffleruby.collections.PEBiConsumer;
25+
import org.truffleruby.collections.PEBiFunction;
2626
import org.truffleruby.core.array.ArrayBuilderNode;
2727
import org.truffleruby.core.array.ArrayBuilderNode.BuilderState;
2828
import org.truffleruby.core.array.RubyArray;
@@ -183,24 +183,24 @@ public static HashLookupOrExecuteDefaultNode getUncached() {
183183
}
184184

185185
public abstract Object executeGet(Frame frame, RubyHash hash, Object key,
186-
BiFunctionNode defaultValueNode);
186+
PEBiFunction defaultValueNode);
187187

188188
@Specialization(guards = "isNullHash(hash)")
189-
protected Object getNull(Frame frame, RubyHash hash, Object key, BiFunctionNode defaultValueNode) {
189+
protected Object getNull(Frame frame, RubyHash hash, Object key, PEBiFunction defaultValueNode) {
190190
// frame should be virtual or null
191191
return defaultValueNode.accept((VirtualFrame) frame, hash, key);
192192
}
193193

194194
@Specialization(guards = "isPackedHash(hash)")
195-
protected Object getPackedArray(Frame frame, RubyHash hash, Object key, BiFunctionNode defaultValueNode,
195+
protected Object getPackedArray(Frame frame, RubyHash hash, Object key, PEBiFunction defaultValueNode,
196196
@Cached LookupPackedEntryNode lookupPackedEntryNode,
197197
@Cached HashingNodes.ToHash hashNode) {
198198
int hashed = hashNode.execute(key, hash.compareByIdentity); // Call key.hash only once
199199
return lookupPackedEntryNode.executePackedLookup(frame, hash, key, hashed, defaultValueNode);
200200
}
201201

202202
@Specialization(guards = "isBucketHash(hash)")
203-
protected Object getBuckets(Frame frame, RubyHash hash, Object key, BiFunctionNode defaultValueNode,
203+
protected Object getBuckets(Frame frame, RubyHash hash, Object key, PEBiFunction defaultValueNode,
204204
@Cached LookupEntryNode lookupEntryNode,
205205
@Cached BranchProfile notInHashProfile) {
206206
final HashLookupResult hashLookupResult = lookupEntryNode.lookup(hash, key);
@@ -217,7 +217,7 @@ protected Object getBuckets(Frame frame, RubyHash hash, Object key, BiFunctionNo
217217

218218
@CoreMethod(names = "[]", required = 1)
219219
@ImportStatic(HashGuards.class)
220-
public abstract static class GetIndexNode extends CoreMethodArrayArgumentsNode implements BiFunctionNode {
220+
public abstract static class GetIndexNode extends CoreMethodArrayArgumentsNode implements PEBiFunction {
221221

222222
@Child private DispatchNode callDefaultNode;
223223

@@ -240,7 +240,7 @@ public Object accept(VirtualFrame frame, Object hash, Object key) {
240240
}
241241

242242
@Primitive(name = "hash_get_or_undefined")
243-
public abstract static class GetOrUndefinedNode extends PrimitiveArrayArgumentsNode implements BiFunctionNode {
243+
public abstract static class GetOrUndefinedNode extends PrimitiveArrayArgumentsNode implements PEBiFunction {
244244

245245
@Child private HashLookupOrExecuteDefaultNode lookupNode = HashLookupOrExecuteDefaultNode.create();
246246

@@ -950,11 +950,11 @@ public static EachKeyValueNode create() {
950950
return EachKeyValueNodeGen.create();
951951
}
952952

953-
public abstract Object executeEachKeyValue(VirtualFrame frame, RubyHash hash, BiConsumerNode callbackNode,
953+
public abstract Object executeEachKeyValue(VirtualFrame frame, RubyHash hash, PEBiConsumer callbackNode,
954954
Object state);
955955

956956
@Specialization(guards = "isNullHash(hash)")
957-
protected Object eachNull(RubyHash hash, BiConsumerNode callbackNode, Object state) {
957+
protected Object eachNull(RubyHash hash, PEBiConsumer callbackNode, Object state) {
958958
return state;
959959
}
960960

@@ -963,7 +963,7 @@ protected Object eachNull(RubyHash hash, BiConsumerNode callbackNode, Object sta
963963
guards = { "isPackedHash(hash)", "getSize(hash) == cachedSize" },
964964
limit = "getPackedHashLimit()")
965965
protected Object eachPackedArrayCached(
966-
VirtualFrame frame, RubyHash hash, BiConsumerNode callbackNode, Object state,
966+
VirtualFrame frame, RubyHash hash, PEBiConsumer callbackNode, Object state,
967967
@Cached("getSize(hash)") int cachedSize) {
968968
assert HashOperations.verifyStore(getContext(), hash);
969969
final Object[] store = (Object[]) hash.store;
@@ -980,7 +980,7 @@ protected Object eachPackedArrayCached(
980980
}
981981

982982
@Specialization(guards = "isBucketHash(hash)")
983-
protected Object eachBuckets(VirtualFrame frame, RubyHash hash, BiConsumerNode callbackNode, Object state) {
983+
protected Object eachBuckets(VirtualFrame frame, RubyHash hash, PEBiConsumer callbackNode, Object state) {
984984
assert HashOperations.verifyStore(getContext(), hash);
985985

986986
Entry entry = hash.firstInSequence;

src/main/java/org/truffleruby/core/hash/LookupPackedEntryNode.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import com.oracle.truffle.api.dsl.GenerateUncached;
1414
import com.oracle.truffle.api.frame.VirtualFrame;
1515
import org.truffleruby.RubyLanguage;
16-
import org.truffleruby.collections.BiFunctionNode;
16+
import org.truffleruby.collections.PEBiFunction;
1717
import org.truffleruby.core.basicobject.BasicObjectNodes.ReferenceEqualNode;
1818
import org.truffleruby.language.RubyBaseNode;
1919

@@ -35,7 +35,7 @@ public static LookupPackedEntryNode create() {
3535
}
3636

3737
public abstract Object executePackedLookup(Frame frame, RubyHash hash, Object key, int hashed,
38-
BiFunctionNode defaultValueNode);
38+
PEBiFunction defaultValueNode);
3939

4040
@Specialization(
4141
guards = {
@@ -44,7 +44,7 @@ public abstract Object executePackedLookup(Frame frame, RubyHash hash, Object ke
4444
"cachedIndex < getSize(hash)",
4545
"sameKeysAtIndex(refEqual, hash, key, hashed, cachedIndex, cachedByIdentity)" },
4646
limit = "1")
47-
protected Object getConstantIndexPackedArray(RubyHash hash, Object key, int hashed, BiFunctionNode defaultValueNode,
47+
protected Object getConstantIndexPackedArray(RubyHash hash, Object key, int hashed, PEBiFunction defaultValueNode,
4848
@Cached ReferenceEqualNode refEqual,
4949
@Cached("isCompareByIdentity(hash)") boolean cachedByIdentity,
5050
@Cached("index(refEqual, hash, key, hashed, cachedByIdentity)") int cachedIndex) {
@@ -93,7 +93,7 @@ protected int getSize(RubyHash hash) {
9393

9494
@ExplodeLoop(kind = LoopExplosionKind.FULL_UNROLL_UNTIL_RETURN)
9595
@Specialization(replaces = "getConstantIndexPackedArray")
96-
protected Object getPackedArray(Frame frame, RubyHash hash, Object key, int hashed, BiFunctionNode defaultValueNode,
96+
protected Object getPackedArray(Frame frame, RubyHash hash, Object key, int hashed, PEBiFunction defaultValueNode,
9797
@Cached CompareHashKeysNode compareHashKeys,
9898
@Cached BranchProfile notInHashProfile,
9999
@Cached ConditionProfile byIdentityProfile,

src/main/java/org/truffleruby/core/hash/RubyHash.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
import com.oracle.truffle.api.profiles.ConditionProfile;
2828
import org.truffleruby.RubyContext;
29-
import org.truffleruby.collections.BiFunctionNode;
29+
import org.truffleruby.collections.PEBiFunction;
3030
import org.truffleruby.core.klass.RubyClass;
3131
import org.truffleruby.interop.ForeignToRubyNode;
3232
import org.truffleruby.language.RubyDynamicObject;
@@ -98,7 +98,7 @@ public long getHashSize() {
9898
return size;
9999
}
100100

101-
private static final class DefaultProvider implements BiFunctionNode {
101+
private static final class DefaultProvider implements PEBiFunction {
102102
final Object defaultValue;
103103

104104
private DefaultProvider(Object defaultValue) {

src/main/java/org/truffleruby/language/arguments/CheckKeywordArityNode.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import com.oracle.truffle.api.TruffleLanguage.ContextReference;
1515
import org.truffleruby.RubyContext;
1616
import org.truffleruby.RubyLanguage;
17-
import org.truffleruby.collections.BiConsumerNode;
17+
import org.truffleruby.collections.PEBiConsumer;
1818
import org.truffleruby.core.hash.RubyHash;
1919
import org.truffleruby.core.hash.HashNodes.EachKeyValueNode;
2020
import org.truffleruby.core.symbol.RubySymbol;
@@ -80,7 +80,7 @@ void checkKeywordArguments(VirtualFrame frame, RubyHash keywordArguments, Arity
8080
eachKeyNode.executeEachKeyValue(frame, keywordArguments, checkKeywordArgumentsNode, null);
8181
}
8282

83-
private static class CheckKeywordArgumentsNode extends RubyContextNode implements BiConsumerNode {
83+
private static class CheckKeywordArgumentsNode extends RubyContextNode implements PEBiConsumer {
8484

8585
private final boolean doesNotAcceptExtraArguments;
8686
private final int required;

src/main/java/org/truffleruby/language/arguments/ReadKeywordArgumentNode.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*/
1010
package org.truffleruby.language.arguments;
1111

12-
import org.truffleruby.collections.BiFunctionNode;
12+
import org.truffleruby.collections.PEBiFunction;
1313
import org.truffleruby.core.hash.RubyHash;
1414
import org.truffleruby.core.hash.HashNodes.HashLookupOrExecuteDefaultNode;
1515
import org.truffleruby.core.symbol.RubySymbol;
@@ -20,7 +20,7 @@
2020
import com.oracle.truffle.api.frame.VirtualFrame;
2121
import com.oracle.truffle.api.profiles.ConditionProfile;
2222

23-
public class ReadKeywordArgumentNode extends RubyContextSourceNode implements BiFunctionNode {
23+
public class ReadKeywordArgumentNode extends RubyContextSourceNode implements PEBiFunction {
2424

2525
private final RubySymbol name;
2626
private final ConditionProfile defaultProfile = ConditionProfile.create();

src/main/java/org/truffleruby/language/arguments/ReadKeywordRestArgumentNode.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
package org.truffleruby.language.arguments;
1111

1212
import org.truffleruby.RubyLanguage;
13-
import org.truffleruby.collections.BiConsumerNode;
13+
import org.truffleruby.collections.PEBiConsumer;
1414
import org.truffleruby.core.hash.HashNodes.EachKeyValueNode;
1515
import org.truffleruby.core.hash.HashOperations;
1616
import org.truffleruby.core.hash.RubyHash;
@@ -24,7 +24,7 @@
2424
import com.oracle.truffle.api.nodes.ExplodeLoop;
2525
import com.oracle.truffle.api.profiles.ConditionProfile;
2626

27-
public class ReadKeywordRestArgumentNode extends RubyContextSourceNode implements BiConsumerNode {
27+
public class ReadKeywordRestArgumentNode extends RubyContextSourceNode implements PEBiConsumer {
2828

2929
@CompilationFinal(dimensions = 1) private final RubySymbol[] excludedKeywords;
3030

src/main/java/org/truffleruby/language/arguments/ReadRejectedKeywordArgumentsNode.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*/
1010
package org.truffleruby.language.arguments;
1111

12-
import org.truffleruby.collections.BiConsumerNode;
12+
import org.truffleruby.collections.PEBiConsumer;
1313
import org.truffleruby.core.hash.HashNodes.EachKeyValueNode;
1414
import org.truffleruby.core.hash.HashOperations;
1515
import org.truffleruby.core.hash.RubyHash;
@@ -20,7 +20,7 @@
2020
import com.oracle.truffle.api.frame.VirtualFrame;
2121
import com.oracle.truffle.api.profiles.ConditionProfile;
2222

23-
public class ReadRejectedKeywordArgumentsNode extends RubyContextNode implements BiConsumerNode {
23+
public class ReadRejectedKeywordArgumentsNode extends RubyContextNode implements PEBiConsumer {
2424

2525
@Child private EachKeyValueNode eachKeyNode = EachKeyValueNode.create();
2626
@Child private SetNode setNode = SetNode.create();

0 commit comments

Comments
 (0)