91 public boolean supportsInvokedynamic() { 92 return false; 93 } 94 95 @Override 96 public boolean shouldRecordMethodDependencies() { 97 return false; 98 } 99 100 /** 101 * Gets a {@link Classfile} created by parsing the class file bytes for {@code c}. 102 * 103 * @throws NoClassDefFoundError if the class file cannot be found 104 */ 105 private synchronized Classfile getClassfile(Class<?> c) { 106 assert !c.isPrimitive() && !c.isArray() : c; 107 Classfile classfile = classfiles.get(c); 108 if (classfile == null) { 109 try { 110 ResolvedJavaType type = metaAccess.lookupJavaType(c); 111 InputStream in = GraalServices.getClassfileAsStream(c); 112 if (in != null) { 113 DataInputStream stream = new DataInputStream(in); 114 classfile = new Classfile(type, stream, this); 115 classfiles.put(c, classfile); 116 return classfile; 117 } 118 throw new NoClassDefFoundError(c.getName()); 119 } catch (IOException e) { 120 throw (NoClassDefFoundError) new NoClassDefFoundError(c.getName()).initCause(e); 121 } 122 } 123 return classfile; 124 } 125 126 synchronized Class<?> resolveToClass(String descriptor) { 127 Class<?> c = classes.get(descriptor); 128 if (c == null) { 129 if (descriptor.length() == 1) { 130 c = JavaKind.fromPrimitiveOrVoidTypeChar(descriptor.charAt(0)).toJavaClass(); 131 } else { 132 int dimensions = 0; 133 while (descriptor.charAt(dimensions) == '[') { 134 dimensions++; 135 } 136 String name; | 91 public boolean supportsInvokedynamic() { 92 return false; 93 } 94 95 @Override 96 public boolean shouldRecordMethodDependencies() { 97 return false; 98 } 99 100 /** 101 * Gets a {@link Classfile} created by parsing the class file bytes for {@code c}. 102 * 103 * @throws NoClassDefFoundError if the class file cannot be found 104 */ 105 private synchronized Classfile getClassfile(Class<?> c) { 106 assert !c.isPrimitive() && !c.isArray() : c; 107 Classfile classfile = classfiles.get(c); 108 if (classfile == null) { 109 try { 110 ResolvedJavaType type = metaAccess.lookupJavaType(c); 111 try (InputStream in = GraalServices.getClassfileAsStream(c)) { 112 if (in != null) { 113 DataInputStream stream = new DataInputStream(in); 114 classfile = new Classfile(type, stream, this); 115 classfiles.put(c, classfile); 116 return classfile; 117 } 118 } 119 throw new NoClassDefFoundError(c.getName()); 120 } catch (IOException e) { 121 throw (NoClassDefFoundError) new NoClassDefFoundError(c.getName()).initCause(e); 122 } 123 } 124 return classfile; 125 } 126 127 synchronized Class<?> resolveToClass(String descriptor) { 128 Class<?> c = classes.get(descriptor); 129 if (c == null) { 130 if (descriptor.length() == 1) { 131 c = JavaKind.fromPrimitiveOrVoidTypeChar(descriptor.charAt(0)).toJavaClass(); 132 } else { 133 int dimensions = 0; 134 while (descriptor.charAt(dimensions) == '[') { 135 dimensions++; 136 } 137 String name; |