< prev index next >

src/java.base/share/classes/jdk/internal/classfile/impl/verifier/VerificationWrapper.java

Print this page
*** 25,10 ***
--- 25,11 ---
   */
  package jdk.internal.classfile.impl.verifier;
  
  import java.lang.classfile.Attributes;
  import java.lang.classfile.ClassModel;
+ import java.lang.classfile.FieldModel;
  import java.lang.classfile.MethodModel;
  import java.lang.classfile.attribute.LocalVariableInfo;
  import java.lang.classfile.constantpool.ClassEntry;
  import java.lang.classfile.constantpool.ConstantPool;
  import java.lang.classfile.constantpool.DynamicConstantPoolEntry;

*** 43,11 ***
  import jdk.internal.classfile.impl.BoundAttribute;
  import jdk.internal.classfile.impl.CodeImpl;
  import jdk.internal.classfile.impl.Util;
  
  public final class VerificationWrapper {
!     private final ClassModel clm;
      private final ConstantPoolWrapper cp;
  
      public VerificationWrapper(ClassModel clm) {
          this.clm = clm;
          this.cp = new ConstantPoolWrapper(clm.constantPool());
--- 44,11 ---
  import jdk.internal.classfile.impl.BoundAttribute;
  import jdk.internal.classfile.impl.CodeImpl;
  import jdk.internal.classfile.impl.Util;
  
  public final class VerificationWrapper {
!     final ClassModel clm;
      private final ConstantPoolWrapper cp;
  
      public VerificationWrapper(ClassModel clm) {
          this.clm = clm;
          this.cp = new ConstantPoolWrapper(clm.constantPool());

*** 71,15 ***
  
      Iterable<MethodWrapper> methods() {
          return clm.methods().stream().map(m -> new MethodWrapper(m)).toList();
      }
  
!     boolean findField(String name, String sig) {
          for (var f : clm.fields())
              if (f.fieldName().stringValue().equals(name) && f.fieldType().stringValue().equals(sig))
!                 return true;
!         return false;
      }
  
      class MethodWrapper {
  
          final MethodModel m;
--- 72,15 ---
  
      Iterable<MethodWrapper> methods() {
          return clm.methods().stream().map(m -> new MethodWrapper(m)).toList();
      }
  
!     FieldModel findField(String name, String sig) {
          for (var f : clm.fields())
              if (f.fieldName().stringValue().equals(name) && f.fieldType().stringValue().equals(sig))
!                 return f;
!         return null;
      }
  
      class MethodWrapper {
  
          final MethodModel m;

*** 159,11 ***
  
      }
  
      static class ConstantPoolWrapper {
  
!         private final ConstantPool cp;
  
          ConstantPoolWrapper(ConstantPool cp) {
              this.cp = cp;
          }
  
--- 160,11 ---
  
      }
  
      static class ConstantPoolWrapper {
  
!         final ConstantPool cp;
  
          ConstantPoolWrapper(ConstantPool cp) {
              this.cp = cp;
          }
  

*** 198,7 ***
--- 199,11 ---
          }
  
          int refClassIndexAt(int index) {
              return cp.entryByIndex(index, MemberRefEntry.class).owner().index();
          }
+ 
+         boolean is_within_bounds(int i) {
+             return i >= 1 && i <= cp.size();
+         }
      }
  }
< prev index next >