Skip to content

Commit 5b23bc9

Browse files
committed
avoid inlining of java library code
1 parent 29a2af9 commit 5b23bc9

File tree

2 files changed

+21
-29
lines changed

2 files changed

+21
-29
lines changed

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

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@
4040
*/
4141
package com.oracle.graal.python.nodes.argument;
4242

43-
import java.util.ArrayList;
44-
4543
import com.oracle.graal.python.builtins.objects.function.Arity;
4644
import com.oracle.graal.python.builtins.objects.function.PArguments;
4745
import com.oracle.graal.python.builtins.objects.function.PKeyword;
@@ -65,7 +63,8 @@ private static Object[] applyKeywordArgs(Arity calleeArity, Object[] arguments,
6563
combined = PArguments.create(parameters.length);
6664
System.arraycopy(arguments, 0, combined, 0, arguments.length);
6765
}
68-
ArrayList<PKeyword> unusedKeywords = new ArrayList<>();
66+
PKeyword[] unusedKeywords = new PKeyword[keywords.length];
67+
int unusedKeywordsIdx = 0;
6968
for (int i = 0; i < keywords.length; i++) {
7069
PKeyword keyarg = keywords[i];
7170
int keywordIdx = -1;
@@ -80,10 +79,13 @@ private static Object[] applyKeywordArgs(Arity calleeArity, Object[] arguments,
8079
assert PArguments.getArgument(combined, keywordIdx) == null : calleeArity.getFunctionName() + " got multiple values for argument '" + keyarg.getName() + "'";
8180
PArguments.setArgument(combined, keywordIdx, keyarg.getValue());
8281
} else {
83-
unusedKeywords.add(keyarg);
82+
unusedKeywords[unusedKeywordsIdx] = keyarg;
83+
unusedKeywordsIdx++;
8484
}
8585
}
86-
PArguments.setKeywordArguments(combined, unusedKeywords.toArray(new PKeyword[unusedKeywords.size()]));
86+
PKeyword[] keywordArguments = new PKeyword[unusedKeywordsIdx];
87+
System.arraycopy(unusedKeywords, 0, keywordArguments, 0, unusedKeywordsIdx);
88+
PArguments.setKeywordArguments(combined, keywordArguments);
8789
return combined;
8890
}
8991

@@ -112,18 +114,22 @@ Object[] applyCached(Arity calleeArity, Object[] arguments, PKeyword[] keywords,
112114
combined[i] = arguments[i];
113115
}
114116
}
115-
ArrayList<PKeyword> unusedKeywords = new ArrayList<>();
117+
PKeyword[] unusedKeywords = new PKeyword[kwLen];
118+
int unusedKeywordsIdx = 0;
116119
for (int i = 0; i < kwLen; i++) {
117120
PKeyword keyarg = keywords[i];
118121
int keywordIdx = searchParamNode.execute(parameters, keyarg.getName());
119122
if (keywordIdx != -1) {
120123
assert PArguments.getArgument(combined, keywordIdx) == null : calleeArity.getFunctionName() + " got multiple values for argument '" + keyarg.getName() + "'";
121124
PArguments.setArgument(combined, keywordIdx, keyarg.getValue());
122125
} else {
123-
unusedKeywords.add(keyarg);
126+
unusedKeywords[unusedKeywordsIdx] = keyarg;
127+
unusedKeywordsIdx++;
124128
}
125129
}
126-
PArguments.setKeywordArguments(combined, unusedKeywords.toArray(new PKeyword[unusedKeywords.size()]));
130+
PKeyword[] keywordArguments = new PKeyword[unusedKeywordsIdx];
131+
System.arraycopy(unusedKeywords, 0, keywordArguments, 0, unusedKeywordsIdx);
132+
PArguments.setKeywordArguments(combined, keywordArguments);
127133
return combined;
128134
}
129135

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

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,7 @@ private void arityCheck(Arity arity, int numOfArgs, int numOfKeywordsDeclared, i
114114
if (numOfKeywordsGiven == 0) {
115115
arityCheck(arity, numOfArgs);
116116
} else if (!arity.takesKeywordArg() && numOfKeywordsGiven > 0) {
117-
Object[] args = {};
118-
throw raise(TypeError, arity.getFunctionName() + "() takes no keyword arguments", args);
117+
throw raise(TypeError, "%s() takes no keyword arguments", arity.getFunctionName());
119118
} else {
120119
for (int i = 0; i < numOfKeywordsGiven; i++) {
121120
String keyword = keywords[i];
@@ -136,37 +135,24 @@ private void checkKeyword(Arity arity, String keyword, int length) {
136135
return;
137136
}
138137
}
139-
Object[] args = {arity.getFunctionName(), keyword};
140-
throw raise(TypeError, "%s() got an unexpected keyword argument '%s'", args);
138+
throw raise(TypeError, "%s() got an unexpected keyword argument '%s'", arity.getFunctionName(), keyword);
141139
}
142140

143141
private void arityCheck(Arity arity, int numOfArgs) {
144-
String argMessage;
145142
if (!arity.takesVarArgs() && arity.getMinNumOfArgs() == arity.getMaxNumOfArgs()) {
146143
if (numOfArgs != arity.getMinNumOfArgs()) {
147144
if (arity.getMinNumOfArgs() == 0) {
148-
argMessage = "no arguments";
145+
throw raise(TypeError, "%s() takes no arguments (%d given)", arity.getFunctionName(), numOfArgs);
149146
} else if (arity.getMinNumOfArgs() == 1) {
150-
argMessage = "exactly one argument";
147+
throw raise(TypeError, "%s() takes exactly one argument (%d given)", arity.getFunctionName(), numOfArgs);
151148
} else {
152-
argMessage = arity.getMinNumOfArgs() + " arguments";
149+
throw raise(TypeError, "%s() takes %d arguments (%d given)", arity.getFunctionName(), arity.getMinNumOfArgs(), numOfArgs);
153150
}
154-
Object[] args = {arity.getFunctionName(), argMessage, numOfArgs};
155-
throw raise(TypeError, "%s() takes %s (%d given)", args);
156151
}
157152
} else if (numOfArgs < arity.getMinNumOfArgs()) {
158-
/**
159-
* For ex, iter(object[, sentinel]) takes at least 1 argument.
160-
*/
161-
Object[] args = {arity.getFunctionName(), arity.getMinNumOfArgs(), numOfArgs};
162-
throw raise(TypeError, "%s() expected at least %d arguments (%d) given", args);
153+
throw raise(TypeError, "%s() expected at least %d arguments (%d) given", arity.getFunctionName(), arity.getMinNumOfArgs(), numOfArgs);
163154
} else if (!arity.takesVarArgs() && numOfArgs > arity.getMaxNumOfArgs()) {
164-
/**
165-
* For ex, complex([real[, imag]]) takes at most 2 arguments.
166-
*/
167-
argMessage = "at most " + arity.getMaxNumOfArgs() + " arguments";
168-
Object[] args = {arity.getFunctionName(), argMessage, numOfArgs};
169-
throw raise(TypeError, "%s() takes %s (%d given)", args);
155+
throw raise(TypeError, "%s() takes at most %d arguments (%d given)", arity.getFunctionName(), arity.getMaxNumOfArgs(), numOfArgs);
170156
}
171157
}
172158
}

0 commit comments

Comments
 (0)