< prev index next > src/java.base/share/classes/jdk/internal/classfile/impl/verifier/VerificationWrapper.java
Print this page
*/
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;
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());
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());
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;
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;
}
static class ConstantPoolWrapper {
! private final ConstantPool cp;
ConstantPoolWrapper(ConstantPool cp) {
this.cp = cp;
}
}
static class ConstantPoolWrapper {
! final ConstantPool cp;
ConstantPoolWrapper(ConstantPool cp) {
this.cp = cp;
}
}
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 >