Skip to content

Commit 3b308d8

Browse files
committed
avoid Arrays.copyOf when not keywords are given
1 parent 7e900ef commit 3b308d8

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/argument/ReadVarKeywordsNode.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,19 @@ private Object returnValue(PKeyword[] keywords) {
8282
}
8383
}
8484

85+
@Specialization(guards = {"getKwargLen(frame) == cachedLen", "cachedLen == 0"}, limit = "1")
86+
@ExplodeLoop
87+
Object noKeywordArgs(@SuppressWarnings("unused") VirtualFrame frame,
88+
@SuppressWarnings("unused") @Cached("getAndCheckKwargLen(frame)") int cachedLen) {
89+
return returnValue(PKeyword.EMPTY_KEYWORDS);
90+
}
91+
8592
@Specialization(guards = {"getKwargLen(frame) == cachedLen"}, limit = "getLimit()")
8693
@ExplodeLoop
8794
Object extractKwargs(VirtualFrame frame,
8895
@Cached("getAndCheckKwargLen(frame)") int cachedLen) {
8996
PKeyword[] keywordArguments = PArguments.getKeywordArguments(frame);
90-
PKeyword[] remArguments = new PKeyword[keywordArguments.length];
97+
PKeyword[] remArguments = new PKeyword[cachedLen];
9198
CompilerAsserts.compilationConstant(keywordNames.length);
9299
int i = 0;
93100
for (int j = 0; j < cachedLen; j++) {

0 commit comments

Comments
 (0)