Skip to content

Commit f0370c2

Browse files
committed
Refactor KeywordArgumentsDescriptorManager.EMPTY and move it to KeywordArgumentsDescriptor
1 parent f9b3036 commit f0370c2

File tree

6 files changed

+12
-14
lines changed

6 files changed

+12
-14
lines changed

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

+2-3
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@
9595
import org.truffleruby.language.arguments.ArgumentsDescriptor;
9696
import org.truffleruby.language.arguments.NoKeywordArgumentsDescriptor;
9797
import org.truffleruby.language.arguments.KeywordArgumentsDescriptor;
98-
import org.truffleruby.language.arguments.KeywordArgumentsDescriptorManager;
9998
import org.truffleruby.language.arguments.RubyArguments;
10099
import org.truffleruby.language.backtrace.Backtrace;
101100
import org.truffleruby.language.constants.GetConstantNode;
@@ -396,7 +395,7 @@ Object sendWithoutCExtLock(VirtualFrame frame, Object receiver, RubySymbol metho
396395
dispatchNode, PRIVATE, ownedProfile);
397396
} else {
398397
return sendWithoutCExtLock(frame, receiver, method, block,
399-
KeywordArgumentsDescriptorManager.EMPTY, args,
398+
KeywordArgumentsDescriptor.EMPTY, args,
400399
dispatchNode, PRIVATE, ownedProfile);
401400
}
402401
}
@@ -434,7 +433,7 @@ Object sendWithoutCExtLock(VirtualFrame frame, Object receiver, RubySymbol metho
434433
dispatchNode, PUBLIC, ownedProfile);
435434
} else {
436435
return sendWithoutCExtLock(frame, receiver, method, block,
437-
KeywordArgumentsDescriptorManager.EMPTY, args,
436+
KeywordArgumentsDescriptor.EMPTY, args,
438437
dispatchNode, PUBLIC, ownedProfile);
439438
}
440439
}

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

+3
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
* arguments were passed. The callee must handle that for now. */
1919
public final class KeywordArgumentsDescriptor extends ArgumentsDescriptor {
2020

21+
public static final KeywordArgumentsDescriptor EMPTY = new KeywordArgumentsDescriptor(
22+
StringUtils.EMPTY_STRING_ARRAY);
23+
2124
@CompilationFinal(dimensions = 1) private final String[] keywords;
2225

2326
/** Use {@link KeywordArgumentsDescriptorManager} to get an instance. */

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

+1-4
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,10 @@
1616

1717
public final class KeywordArgumentsDescriptorManager {
1818

19-
public static final KeywordArgumentsDescriptor EMPTY = new KeywordArgumentsDescriptor(
20-
StringUtils.EMPTY_STRING_ARRAY);
21-
2219
private final WeakValueCache<Key, KeywordArgumentsDescriptor> CANONICAL_KEYWORD_DESCRIPTORS = new WeakValueCache<>();
2320

2421
public KeywordArgumentsDescriptorManager() {
25-
CANONICAL_KEYWORD_DESCRIPTORS.put(new Key(StringUtils.EMPTY_STRING_ARRAY), EMPTY);
22+
CANONICAL_KEYWORD_DESCRIPTORS.put(new Key(StringUtils.EMPTY_STRING_ARRAY), KeywordArgumentsDescriptor.EMPTY);
2623
}
2724

2825
public KeywordArgumentsDescriptor getArgumentsDescriptor(String[] keywords) {

src/main/java/org/truffleruby/language/dispatch/DispatchNode.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
import org.truffleruby.language.RubyRootNode;
2828
import org.truffleruby.language.SpecialVariablesSendingNode;
2929
import org.truffleruby.language.arguments.ArgumentsDescriptor;
30+
import org.truffleruby.language.arguments.KeywordArgumentsDescriptor;
3031
import org.truffleruby.language.arguments.NoKeywordArgumentsDescriptor;
31-
import org.truffleruby.language.arguments.KeywordArgumentsDescriptorManager;
3232
import org.truffleruby.language.arguments.RubyArguments;
3333
import org.truffleruby.language.methods.CallInternalMethodNode;
3434
import org.truffleruby.language.methods.InternalMethod;
@@ -149,7 +149,7 @@ public Object callWithKeywords(Object receiver, String method, Object arg1,
149149
final Object[] rubyArgs = RubyArguments.allocate(2);
150150
RubyArguments.setSelf(rubyArgs, receiver);
151151
RubyArguments.setBlock(rubyArgs, nil);
152-
RubyArguments.setDescriptor(rubyArgs, KeywordArgumentsDescriptorManager.EMPTY);
152+
RubyArguments.setDescriptor(rubyArgs, KeywordArgumentsDescriptor.EMPTY);
153153
RubyArguments.setArgument(rubyArgs, 0, arg1);
154154
RubyArguments.setArgument(rubyArgs, 1, keywords);
155155
return execute(null, receiver, method, rubyArgs, PRIVATE);

src/main/java/org/truffleruby/language/dispatch/LiteralCallNode.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
2121
import org.truffleruby.language.arguments.NoKeywordArgumentsDescriptor;
2222
import org.truffleruby.language.arguments.KeywordArgumentsDescriptor;
23-
import org.truffleruby.language.arguments.KeywordArgumentsDescriptorManager;
2423

2524
/** A literal call site in Ruby code: one of foo(), super or yield. */
2625
public abstract class LiteralCallNode extends RubyContextSourceNode {
@@ -58,7 +57,7 @@ protected ArgumentsDescriptor getArgumentsDescriptorAndCheckRuby2KeywordsHash(Ob
5857
RubyHash hash = (RubyHash) lastArgument;
5958
if (hash.ruby2_keywords) { // both branches profiled
6059
copyRuby2KeywordsHashBoundary(args, hash);
61-
return KeywordArgumentsDescriptorManager.EMPTY;
60+
return KeywordArgumentsDescriptor.EMPTY;
6261
} else {
6362
if (!notRuby2KeywordsHashProfile) {
6463
CompilerDirectives.transferToInterpreterAndInvalidate();

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
import org.truffleruby.language.RubyRootNode;
6262
import org.truffleruby.language.RubyTopLevelRootNode;
6363
import org.truffleruby.language.arguments.ArgumentsDescriptor;
64-
import org.truffleruby.language.arguments.KeywordArgumentsDescriptorManager;
64+
import org.truffleruby.language.arguments.KeywordArgumentsDescriptor;
6565
import org.truffleruby.language.arguments.NoKeywordArgumentsDescriptor;
6666
import org.truffleruby.language.arguments.ProfileArgumentNodeGen;
6767
import org.truffleruby.language.arguments.ReadSelfNode;
@@ -809,7 +809,7 @@ private ArgumentsDescriptor getKeywordArgumentsDescriptor(Nodes.Node[] arguments
809809
Nodes.Node last = ArrayUtils.getLast(arguments);
810810
// if `...` then we know there are no literal keyword arguments, only **kwrest
811811
if (last instanceof Nodes.ForwardingArgumentsNode) {
812-
return KeywordArgumentsDescriptorManager.EMPTY;
812+
return KeywordArgumentsDescriptor.EMPTY;
813813
}
814814
// if there are no keywords the descriptor is NoKeywordArgumentsDescriptor.INSTANCE
815815
if (!(last instanceof Nodes.KeywordHashNode keywords)) {
@@ -1826,7 +1826,7 @@ public RubyNode visitForwardingSuperNode(Nodes.ForwardingSuperNode node) {
18261826
final RubyNode[] reloadSequence = reloadTranslator.reload(parametersNode);
18271827

18281828
var descriptor = (parametersNode.keywords.length > 0 || parametersNode.keyword_rest != null)
1829-
? KeywordArgumentsDescriptorManager.EMPTY
1829+
? KeywordArgumentsDescriptor.EMPTY
18301830
: NoKeywordArgumentsDescriptor.INSTANCE;
18311831
final int restParamIndex = reloadTranslator.getRestParameterIndex();
18321832
final RubyNode arguments = new ReadZSuperArgumentsNode(restParamIndex, reloadSequence);

0 commit comments

Comments
 (0)