Skip to content

Commit d5490f1

Browse files
committed
Compute the arity number once
* It's used on the fast path for Hash#{each,each_pair} now.
1 parent 7e99bdf commit d5490f1

File tree

1 file changed

+7
-1
lines changed
  • src/main/java/org/truffleruby/language/methods

1 file changed

+7
-1
lines changed

src/main/java/org/truffleruby/language/methods/Arity.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public class Arity {
2828
private final int postRequired;
2929
private final boolean hasKeywordsRest;
3030
private final String[] keywordArguments;
31+
private final int arityNumber;
3132

3233
public Arity(int preRequired, int optional, boolean hasRest) {
3334
this(preRequired, optional, hasRest, 0, NO_KEYWORDS, false);
@@ -41,6 +42,7 @@ public Arity(int preRequired, int optional, boolean hasRest, int postRequired, S
4142
this.postRequired = postRequired;
4243
this.keywordArguments = keywordArguments;
4344
this.hasKeywordsRest = hasKeywordsRest;
45+
this.arityNumber = computeArityNumber();
4446

4547
assert keywordArguments != null && preRequired >= 0 && optional >= 0 && postRequired >= 0 : toString();
4648
}
@@ -77,7 +79,7 @@ public boolean hasKeywordsRest() {
7779
return hasKeywordsRest;
7880
}
7981

80-
public int getArityNumber() {
82+
private int computeArityNumber() {
8183
int count = getRequired();
8284

8385
if (acceptsKeywords()) {
@@ -91,6 +93,10 @@ public int getArityNumber() {
9193
return count;
9294
}
9395

96+
public int getArityNumber() {
97+
return arityNumber;
98+
}
99+
94100
public String[] getKeywordArguments() {
95101
return keywordArguments;
96102
}

0 commit comments

Comments
 (0)