< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/classfile/ClassfileBytecodeProvider.java

Print this page




  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;


< prev index next >