< 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;
+ 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) {
+ FieldModel 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;
+ return f;
+ return null;
}
class MethodWrapper {
final MethodModel m;
}
static class ConstantPoolWrapper {
- private final ConstantPool cp;
+ 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 >