191 case DOUBLE:
192 return "Double";
193 case VOID:
194 return "Void";
195 case ARRAY:
196 case TYPEVAR:
197 case DECLARED:
198 return "Object";
199 default:
200 throw new IllegalArgumentException(method.getReturnType().toString());
201 }
202 }
203
204 protected static void constantArgument(AbstractProcessor processor, PrintWriter out, InjectedDependencies deps, int argIdx, TypeMirror type, int nodeIdx) {
205 if (hasRawtypeWarning(type)) {
206 out.printf(" @SuppressWarnings({\"rawtypes\"})\n");
207 }
208 out.printf(" %s arg%d;\n", getErasedType(type), argIdx);
209 out.printf(" if (args[%d].isConstant()) {\n", nodeIdx);
210 if (type.equals(processor.getType("jdk.vm.ci.meta.ResolvedJavaType"))) {
211 out.printf(" arg%d = %s.asJavaType(args[%d].asConstant());\n", argIdx, deps.use(WellKnownDependency.CONSTANT_REFLECTION), nodeIdx);
212 } else {
213 switch (type.getKind()) {
214 case BOOLEAN:
215 out.printf(" arg%d = args[%d].asJavaConstant().asInt() != 0;\n", argIdx, nodeIdx);
216 break;
217 case BYTE:
218 out.printf(" arg%d = (byte) args[%d].asJavaConstant().asInt();\n", argIdx, nodeIdx);
219 break;
220 case CHAR:
221 out.printf(" arg%d = (char) args[%d].asJavaConstant().asInt();\n", argIdx, nodeIdx);
222 break;
223 case SHORT:
224 out.printf(" arg%d = (short) args[%d].asJavaConstant().asInt();\n", argIdx, nodeIdx);
225 break;
226 case INT:
227 out.printf(" arg%d = args[%d].asJavaConstant().asInt();\n", argIdx, nodeIdx);
228 break;
229 case LONG:
230 out.printf(" arg%d = args[%d].asJavaConstant().asLong();\n", argIdx, nodeIdx);
231 break;
|
191 case DOUBLE:
192 return "Double";
193 case VOID:
194 return "Void";
195 case ARRAY:
196 case TYPEVAR:
197 case DECLARED:
198 return "Object";
199 default:
200 throw new IllegalArgumentException(method.getReturnType().toString());
201 }
202 }
203
204 protected static void constantArgument(AbstractProcessor processor, PrintWriter out, InjectedDependencies deps, int argIdx, TypeMirror type, int nodeIdx) {
205 if (hasRawtypeWarning(type)) {
206 out.printf(" @SuppressWarnings({\"rawtypes\"})\n");
207 }
208 out.printf(" %s arg%d;\n", getErasedType(type), argIdx);
209 out.printf(" if (args[%d].isConstant()) {\n", nodeIdx);
210 if (type.equals(processor.getType("jdk.vm.ci.meta.ResolvedJavaType"))) {
211 out.printf(" jdk.vm.ci.meta.JavaConstant cst = args[%d].asJavaConstant();\n", nodeIdx);
212 out.printf(" arg%d = %s.asJavaType(cst);\n", argIdx, deps.use(WellKnownDependency.CONSTANT_REFLECTION));
213 out.printf(" if (arg%d == null) {\n", argIdx);
214 out.printf(" arg%d = %s.asObject(jdk.vm.ci.meta.ResolvedJavaType.class, cst);\n", argIdx, deps.use(WellKnownDependency.SNIPPET_REFLECTION));
215 out.printf(" }\n");
216 } else {
217 switch (type.getKind()) {
218 case BOOLEAN:
219 out.printf(" arg%d = args[%d].asJavaConstant().asInt() != 0;\n", argIdx, nodeIdx);
220 break;
221 case BYTE:
222 out.printf(" arg%d = (byte) args[%d].asJavaConstant().asInt();\n", argIdx, nodeIdx);
223 break;
224 case CHAR:
225 out.printf(" arg%d = (char) args[%d].asJavaConstant().asInt();\n", argIdx, nodeIdx);
226 break;
227 case SHORT:
228 out.printf(" arg%d = (short) args[%d].asJavaConstant().asInt();\n", argIdx, nodeIdx);
229 break;
230 case INT:
231 out.printf(" arg%d = args[%d].asJavaConstant().asInt();\n", argIdx, nodeIdx);
232 break;
233 case LONG:
234 out.printf(" arg%d = args[%d].asJavaConstant().asLong();\n", argIdx, nodeIdx);
235 break;
|