You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2019/07/06 19:00:01 UTC
[commons-bcel] branch master updated: Some better names.
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-bcel.git
The following commit(s) were added to refs/heads/master by this push:
new 24458da Some better names.
24458da is described below
commit 24458da3ff5a89caa790acafc9c21ce33a9c0f27
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sat Jul 6 14:59:58 2019 -0400
Some better names.
---
.../bcel/verifier/statics/Pass3aVerifier.java | 116 ++++++++++-----------
1 file changed, 58 insertions(+), 58 deletions(-)
diff --git a/src/main/java/org/apache/bcel/verifier/statics/Pass3aVerifier.java b/src/main/java/org/apache/bcel/verifier/statics/Pass3aVerifier.java
index 6f1cd81..70ec589 100644
--- a/src/main/java/org/apache/bcel/verifier/statics/Pass3aVerifier.java
+++ b/src/main/java/org/apache/bcel/verifier/statics/Pass3aVerifier.java
@@ -469,13 +469,13 @@ public final class Pass3aVerifier extends PassVerifier{
* This visitor class does the actual checking for the instruction
* operand's constraints.
*/
- private class InstOperandConstraintVisitor extends org.apache.bcel.generic.EmptyVisitor{
+ private class InstOperandConstraintVisitor extends org.apache.bcel.generic.EmptyVisitor {
/** The ConstantPoolGen instance this Visitor operates on. */
- private final ConstantPoolGen cpg;
+ private final ConstantPoolGen constantPoolGen;
/** The only Constructor. */
- InstOperandConstraintVisitor(final ConstantPoolGen cpg) {
- this.cpg = cpg;
+ InstOperandConstraintVisitor(final ConstantPoolGen constantPoolGen) {
+ this.constantPoolGen = constantPoolGen;
}
/**
@@ -503,7 +503,7 @@ public final class Pass3aVerifier extends PassVerifier{
* a valid constant pool index.
*/
private void indexValid(final Instruction i, final int idx) {
- if (idx < 0 || idx >= cpg.getSize()) {
+ if (idx < 0 || idx >= constantPoolGen.getSize()) {
constraintViolated(i, "Illegal constant pool index '"+idx+"'.");
}
}
@@ -516,14 +516,14 @@ public final class Pass3aVerifier extends PassVerifier{
* The referenced class is loaded and pass2-verified.
*/
@Override
- public void visitLoadClass(final LoadClass o) {
- final ObjectType t = o.getLoadClassType(cpg);
+ public void visitLoadClass(final LoadClass loadClass) {
+ final ObjectType t = loadClass.getLoadClassType(constantPoolGen);
if (t != null) {// null means "no class is loaded"
final Verifier v = VerifierFactory.getVerifier(t.getClassName());
final VerificationResult vr = v.doPass1();
if (vr.getStatus() != VerificationResult.VERIFIED_OK) {
- constraintViolated((Instruction) o,
- "Class '"+o.getLoadClassType(cpg).getClassName()+"' is referenced, but cannot be loaded: '"+vr+"'.");
+ constraintViolated((Instruction) loadClass,
+ "Class '"+loadClass.getLoadClassType(constantPoolGen).getClassName()+"' is referenced, but cannot be loaded: '"+vr+"'.");
}
}
}
@@ -538,9 +538,9 @@ public final class Pass3aVerifier extends PassVerifier{
/** Checks if the constraints of operands of the said instruction(s) are satisfied. */
// LDC and LDC_W (LDC_W is a subclass of LDC in BCEL's model)
@Override
- public void visitLDC(final LDC o) {
- indexValid(o, o.getIndex());
- final Constant c = cpg.getConstant(o.getIndex());
+ public void visitLDC(final LDC ldc) {
+ indexValid(ldc, ldc.getIndex());
+ final Constant c = constantPoolGen.getConstant(ldc.getIndex());
if (c instanceof ConstantClass) {
addMessage("Operand of LDC or LDC_W is CONSTANT_Class '"+c+"' - this is only supported in JDK 1.5 and higher.");
}
@@ -548,7 +548,7 @@ public final class Pass3aVerifier extends PassVerifier{
if (! ( (c instanceof ConstantInteger) ||
(c instanceof ConstantFloat) ||
(c instanceof ConstantString) ) ) {
- constraintViolated(o,
+ constraintViolated(ldc,
"Operand of LDC or LDC_W must be one of CONSTANT_Integer, CONSTANT_Float or CONSTANT_String, but is '"+c+"'.");
}
}
@@ -559,7 +559,7 @@ public final class Pass3aVerifier extends PassVerifier{
@Override
public void visitLDC2_W(final LDC2_W o) {
indexValid(o, o.getIndex());
- final Constant c = cpg.getConstant(o.getIndex());
+ final Constant c = constantPoolGen.getConstant(o.getIndex());
if (! ( (c instanceof ConstantLong) ||
(c instanceof ConstantDouble) ) ) {
constraintViolated(o, "Operand of LDC2_W must be CONSTANT_Long or CONSTANT_Double, but is '"+c+"'.");
@@ -573,7 +573,7 @@ public final class Pass3aVerifier extends PassVerifier{
}
private ObjectType getObjectType(final FieldInstruction o) {
- final ReferenceType rt = o.getReferenceType(cpg);
+ final ReferenceType rt = o.getReferenceType(constantPoolGen);
if(rt instanceof ObjectType) {
return (ObjectType)rt;
}
@@ -587,12 +587,12 @@ public final class Pass3aVerifier extends PassVerifier{
public void visitFieldInstruction(final FieldInstruction o) {
try {
indexValid(o, o.getIndex());
- final Constant c = cpg.getConstant(o.getIndex());
+ final Constant c = constantPoolGen.getConstant(o.getIndex());
if (! (c instanceof ConstantFieldref)) {
constraintViolated(o, "Indexing a constant that's not a CONSTANT_Fieldref but a '"+c+"'.");
}
- final String field_name = o.getFieldName(cpg);
+ final String field_name = o.getFieldName(constantPoolGen);
final JavaClass jc = Repository.lookupClass(getObjectType(o).getClassName());
Field[] fields = jc.getFields();
@@ -600,7 +600,7 @@ public final class Pass3aVerifier extends PassVerifier{
for (final Field field : fields) {
if (field.getName().equals(field_name)) {
final Type f_type = Type.getType(field.getSignature());
- final Type o_type = o.getType(cpg);
+ final Type o_type = o.getType(constantPoolGen);
/* TODO: Check if assignment compatibility is sufficient.
* What does Sun do?
*/
@@ -618,7 +618,7 @@ public final class Pass3aVerifier extends PassVerifier{
for (final Field field : fields) {
if (field.getName().equals(field_name)) {
final Type f_type = Type.getType(field.getSignature());
- final Type o_type = o.getType(cpg);
+ final Type o_type = o.getType(constantPoolGen);
if (f_type.equals(o_type)) {
f = field;
if ((f.getAccessFlags() & (Const.ACC_PUBLIC | Const.ACC_PROTECTED)) == 0) {
@@ -637,7 +637,7 @@ public final class Pass3aVerifier extends PassVerifier{
/* TODO: Check if assignment compatibility is sufficient.
What does Sun do? */
Type.getType(f.getSignature());
- o.getType(cpg);
+ o.getType(constantPoolGen);
// Type f_type = Type.getType(f.getSignature());
// Type o_type = o.getType(cpg);
@@ -663,14 +663,14 @@ public final class Pass3aVerifier extends PassVerifier{
if ( (o instanceof INVOKEVIRTUAL) ||
(o instanceof INVOKESPECIAL) ||
(o instanceof INVOKESTATIC) ) {
- final Constant c = cpg.getConstant(o.getIndex());
+ final Constant c = constantPoolGen.getConstant(o.getIndex());
if (! (c instanceof ConstantMethodref)) {
constraintViolated(o, "Indexing a constant that's not a CONSTANT_Methodref but a '"+c+"'.");
}
else{
// Constants are okay due to pass2.
- final ConstantNameAndType cnat = (ConstantNameAndType) (cpg.getConstant(((ConstantMethodref) c).getNameAndTypeIndex()));
- final ConstantUtf8 cutf8 = (ConstantUtf8) (cpg.getConstant(cnat.getNameIndex()));
+ final ConstantNameAndType cnat = (ConstantNameAndType) (constantPoolGen.getConstant(((ConstantMethodref) c).getNameAndTypeIndex()));
+ final ConstantUtf8 cutf8 = (ConstantUtf8) (constantPoolGen.getConstant(cnat.getNameIndex()));
if (cutf8.getBytes().equals(Const.CONSTRUCTOR_NAME) && (!(o instanceof INVOKESPECIAL)) ) {
constraintViolated(o, "Only INVOKESPECIAL is allowed to invoke instance initialization methods.");
}
@@ -682,7 +682,7 @@ public final class Pass3aVerifier extends PassVerifier{
}
}
else{ //if (o instanceof INVOKEINTERFACE) {
- final Constant c = cpg.getConstant(o.getIndex());
+ final Constant c = constantPoolGen.getConstant(o.getIndex());
if (! (c instanceof ConstantInterfaceMethodref)) {
constraintViolated(o, "Indexing a constant that's not a CONSTANT_InterfaceMethodref but a '"+c+"'.");
}
@@ -693,8 +693,8 @@ public final class Pass3aVerifier extends PassVerifier{
// Invoked method must not be <init> or <clinit>
final ConstantNameAndType cnat =
- (ConstantNameAndType) (cpg.getConstant(((ConstantInterfaceMethodref)c).getNameAndTypeIndex()));
- final String name = ((ConstantUtf8) (cpg.getConstant(cnat.getNameIndex()))).getBytes();
+ (ConstantNameAndType) (constantPoolGen.getConstant(((ConstantInterfaceMethodref)c).getNameAndTypeIndex()));
+ final String name = ((ConstantUtf8) (constantPoolGen.getConstant(cnat.getNameIndex()))).getBytes();
if (name.equals(Const.CONSTRUCTOR_NAME)) {
constraintViolated(o, "Method to invoke must not be '"+Const.CONSTRUCTOR_NAME+"'.");
}
@@ -705,7 +705,7 @@ public final class Pass3aVerifier extends PassVerifier{
// The LoadClassType is the method-declaring class, so we have to check the other types.
- Type t = o.getReturnType(cpg);
+ Type t = o.getReturnType(constantPoolGen);
if (t instanceof ArrayType) {
t = ((ArrayType) t).getBasicType();
}
@@ -717,7 +717,7 @@ public final class Pass3aVerifier extends PassVerifier{
}
}
- final Type[] ts = o.getArgumentTypes(cpg);
+ final Type[] ts = o.getArgumentTypes(constantPoolGen);
for (final Type element : ts) {
t = element;
if (t instanceof ArrayType) {
@@ -739,7 +739,7 @@ public final class Pass3aVerifier extends PassVerifier{
@Override
public void visitINSTANCEOF(final INSTANCEOF o) {
indexValid(o, o.getIndex());
- final Constant c = cpg.getConstant(o.getIndex());
+ final Constant c = constantPoolGen.getConstant(o.getIndex());
if (! (c instanceof ConstantClass)) {
constraintViolated(o, "Expecting a CONSTANT_Class operand, but found a '"+c+"'.");
}
@@ -749,7 +749,7 @@ public final class Pass3aVerifier extends PassVerifier{
@Override
public void visitCHECKCAST(final CHECKCAST o) {
indexValid(o, o.getIndex());
- final Constant c = cpg.getConstant(o.getIndex());
+ final Constant c = constantPoolGen.getConstant(o.getIndex());
if (! (c instanceof ConstantClass)) {
constraintViolated(o, "Expecting a CONSTANT_Class operand, but found a '"+c+"'.");
}
@@ -759,12 +759,12 @@ public final class Pass3aVerifier extends PassVerifier{
@Override
public void visitNEW(final NEW o) {
indexValid(o, o.getIndex());
- final Constant c = cpg.getConstant(o.getIndex());
+ final Constant c = constantPoolGen.getConstant(o.getIndex());
if (! (c instanceof ConstantClass)) {
constraintViolated(o, "Expecting a CONSTANT_Class operand, but found a '"+c+"'.");
}
else{
- final ConstantUtf8 cutf8 = (ConstantUtf8) (cpg.getConstant( ((ConstantClass) c).getNameIndex() ));
+ final ConstantUtf8 cutf8 = (ConstantUtf8) (constantPoolGen.getConstant( ((ConstantClass) c).getNameIndex() ));
final Type t = Type.getType("L"+cutf8.getBytes()+";");
if (t instanceof ArrayType) {
constraintViolated(o, "NEW must not be used to create an array.");
@@ -777,7 +777,7 @@ public final class Pass3aVerifier extends PassVerifier{
@Override
public void visitMULTIANEWARRAY(final MULTIANEWARRAY o) {
indexValid(o, o.getIndex());
- final Constant c = cpg.getConstant(o.getIndex());
+ final Constant c = constantPoolGen.getConstant(o.getIndex());
if (! (c instanceof ConstantClass)) {
constraintViolated(o, "Expecting a CONSTANT_Class operand, but found a '"+c+"'.");
}
@@ -785,7 +785,7 @@ public final class Pass3aVerifier extends PassVerifier{
if (dimensions2create < 1) {
constraintViolated(o, "Number of dimensions to create must be greater than zero.");
}
- final Type t = o.getType(cpg);
+ final Type t = o.getType(constantPoolGen);
if (t instanceof ArrayType) {
final int dimensions = ((ArrayType) t).getDimensions();
if (dimensions < dimensions2create) {
@@ -804,11 +804,11 @@ public final class Pass3aVerifier extends PassVerifier{
@Override
public void visitANEWARRAY(final ANEWARRAY o) {
indexValid(o, o.getIndex());
- final Constant c = cpg.getConstant(o.getIndex());
+ final Constant c = constantPoolGen.getConstant(o.getIndex());
if (! (c instanceof ConstantClass)) {
constraintViolated(o, "Expecting a CONSTANT_Class operand, but found a '"+c+"'.");
}
- final Type t = o.getType(cpg);
+ final Type t = o.getType(constantPoolGen);
if (t instanceof ArrayType) {
final int dimensions = ((ArrayType) t).getDimensions();
if (dimensions > Const.MAX_ARRAY_DIMENSIONS) {
@@ -1048,7 +1048,7 @@ public final class Pass3aVerifier extends PassVerifier{
@Override
public void visitPUTSTATIC(final PUTSTATIC o) {
try {
- final String field_name = o.getFieldName(cpg);
+ final String field_name = o.getFieldName(constantPoolGen);
final JavaClass jc = Repository.lookupClass(getObjectType(o).getClassName());
final Field[] fields = jc.getFields();
Field f = null;
@@ -1066,7 +1066,7 @@ public final class Pass3aVerifier extends PassVerifier{
if (!(myOwner.getClassName().equals(getObjectType(o).getClassName()))) {
constraintViolated(o,
"Referenced field '"+f+"' is final and must therefore be declared in the current class '"+
- myOwner.getClassName()+"' which is not the case: it is declared in '"+o.getReferenceType(cpg)+"'.");
+ myOwner.getClassName()+"' which is not the case: it is declared in '"+o.getReferenceType(constantPoolGen)+"'.");
}
}
@@ -1090,7 +1090,7 @@ public final class Pass3aVerifier extends PassVerifier{
@Override
public void visitGETSTATIC(final GETSTATIC o) {
try {
- final String field_name = o.getFieldName(cpg);
+ final String field_name = o.getFieldName(constantPoolGen);
final JavaClass jc = Repository.lookupClass(getObjectType(o).getClassName());
final Field[] fields = jc.getFields();
Field f = null;
@@ -1137,11 +1137,11 @@ public final class Pass3aVerifier extends PassVerifier{
// is therefore resolved/verified.
// INVOKEINTERFACE is an InvokeInstruction, the argument and return types are resolved/verified,
// too. So are the allowed method names.
- final String classname = o.getClassName(cpg);
+ final String classname = o.getClassName(constantPoolGen);
final JavaClass jc = Repository.lookupClass(classname);
final Method m = getMethodRecursive(jc, o);
if (m == null) {
- constraintViolated(o, "Referenced method '"+o.getMethodName(cpg)+"' with expected signature '"+o.getSignature(cpg)+
+ constraintViolated(o, "Referenced method '"+o.getMethodName(constantPoolGen)+"' with expected signature '"+o.getSignature(constantPoolGen)+
"' not found in class '"+jc.getClassName()+"'.");
}
if (jc.isClass()) {
@@ -1196,9 +1196,9 @@ public final class Pass3aVerifier extends PassVerifier{
private Method getMethod(final JavaClass jc, final InvokeInstruction invoke) {
final Method[] ms = jc.getMethods();
for (final Method element : ms) {
- if ( (element.getName().equals(invoke.getMethodName(cpg))) &&
- (Type.getReturnType(element.getSignature()).equals(invoke.getReturnType(cpg))) &&
- (objarrayequals(Type.getArgumentTypes(element.getSignature()), invoke.getArgumentTypes(cpg))) ) {
+ if ( (element.getName().equals(invoke.getMethodName(constantPoolGen))) &&
+ (Type.getReturnType(element.getSignature()).equals(invoke.getReturnType(constantPoolGen))) &&
+ (objarrayequals(Type.getArgumentTypes(element.getSignature()), invoke.getArgumentTypes(constantPoolGen))) ) {
return element;
}
}
@@ -1214,11 +1214,11 @@ public final class Pass3aVerifier extends PassVerifier{
// is therefore resolved/verified.
// INVOKESPECIAL is an InvokeInstruction, the argument and return types are resolved/verified,
// too. So are the allowed method names.
- final String classname = o.getClassName(cpg);
+ final String classname = o.getClassName(constantPoolGen);
final JavaClass jc = Repository.lookupClass(classname);
final Method m = getMethodRecursive(jc, o);
if (m == null) {
- constraintViolated(o, "Referenced method '"+o.getMethodName(cpg)+"' with expected signature '"+o.getSignature(cpg)
+ constraintViolated(o, "Referenced method '"+o.getMethodName(constantPoolGen)+"' with expected signature '"+o.getSignature(constantPoolGen)
+"' not found in class '"+jc.getClassName()+"'.");
}
@@ -1227,7 +1227,7 @@ public final class Pass3aVerifier extends PassVerifier{
if ((Repository.instanceOf( current, jc )) && (!current.equals(jc))) {
- if (! (o.getMethodName(cpg).equals(Const.CONSTRUCTOR_NAME) )) {
+ if (! (o.getMethodName(constantPoolGen).equals(Const.CONSTRUCTOR_NAME) )) {
// Special lookup procedure for ACC_SUPER classes.
int supidx = -1;
@@ -1239,9 +1239,9 @@ public final class Pass3aVerifier extends PassVerifier{
final Method[] meths = current.getMethods();
for (final Method meth2 : meths) {
- if ( (meth2.getName().equals(o.getMethodName(cpg))) &&
- (Type.getReturnType(meth2.getSignature()).equals(o.getReturnType(cpg))) &&
- (objarrayequals(Type.getArgumentTypes(meth2.getSignature()), o.getArgumentTypes(cpg))) ) {
+ if ( (meth2.getName().equals(o.getMethodName(constantPoolGen))) &&
+ (Type.getReturnType(meth2.getSignature()).equals(o.getReturnType(constantPoolGen))) &&
+ (objarrayequals(Type.getArgumentTypes(meth2.getSignature()), o.getArgumentTypes(constantPoolGen))) ) {
meth = meth2;
break;
}
@@ -1252,7 +1252,7 @@ public final class Pass3aVerifier extends PassVerifier{
}
if (meth == null) {
constraintViolated(o, "ACC_SUPER special lookup procedure not successful: method '"+
- o.getMethodName(cpg)+"' with proper signature not declared in superclass hierarchy.");
+ o.getMethodName(constantPoolGen)+"' with proper signature not declared in superclass hierarchy.");
}
}
}
@@ -1273,14 +1273,14 @@ public final class Pass3aVerifier extends PassVerifier{
// is therefore resolved/verified.
// INVOKESTATIC is an InvokeInstruction, the argument and return types are resolved/verified,
// too. So are the allowed method names.
- final String classname = o.getClassName(cpg);
+ final String classname = o.getClassName(constantPoolGen);
final JavaClass jc = Repository.lookupClass(classname);
final Method m = getMethodRecursive(jc, o);
if (m == null) {
- constraintViolated(o, "Referenced method '"+o.getMethodName(cpg)+"' with expected signature '"+
- o.getSignature(cpg) +"' not found in class '"+jc.getClassName()+"'.");
+ constraintViolated(o, "Referenced method '"+o.getMethodName(constantPoolGen)+"' with expected signature '"+
+ o.getSignature(constantPoolGen) +"' not found in class '"+jc.getClassName()+"'.");
} else if (! (m.isStatic())) { // implies it's not abstract, verified in pass 2.
- constraintViolated(o, "Referenced method '"+o.getMethodName(cpg)+"' has ACC_STATIC unset.");
+ constraintViolated(o, "Referenced method '"+o.getMethodName(constantPoolGen)+"' has ACC_STATIC unset.");
}
} catch (final ClassNotFoundException e) {
@@ -1298,12 +1298,12 @@ public final class Pass3aVerifier extends PassVerifier{
// is therefore resolved/verified.
// INVOKEVIRTUAL is an InvokeInstruction, the argument and return types are resolved/verified,
// too. So are the allowed method names.
- final String classname = o.getClassName(cpg);
+ final String classname = o.getClassName(constantPoolGen);
final JavaClass jc = Repository.lookupClass(classname);
final Method m = getMethodRecursive(jc, o);
if (m == null) {
- constraintViolated(o, "Referenced method '"+o.getMethodName(cpg)+"' with expected signature '"+
- o.getSignature(cpg)+"' not found in class '"+jc.getClassName()+"'.");
+ constraintViolated(o, "Referenced method '"+o.getMethodName(constantPoolGen)+"' with expected signature '"+
+ o.getSignature(constantPoolGen)+"' not found in class '"+jc.getClassName()+"'.");
}
if (! (jc.isClass())) {
constraintViolated(o, "Referenced class '"+jc.getClassName()+"' is an interface, but not a class as expected.");