Package org.apache.bcel.verifier.statics
Class Pass3aVerifier.InstOperandConstraintVisitor
- java.lang.Object
-
- org.apache.bcel.generic.EmptyVisitor
-
- org.apache.bcel.verifier.statics.Pass3aVerifier.InstOperandConstraintVisitor
-
- All Implemented Interfaces:
Visitor
- Enclosing class:
- Pass3aVerifier
private class Pass3aVerifier.InstOperandConstraintVisitor extends EmptyVisitor
This visitor class does the actual checking for the instruction operand's constraints.
-
-
Field Summary
Fields Modifier and Type Field Description private ConstantPoolGenconstantPoolGenThe ConstantPoolGen instance this Visitor operates on.
-
Constructor Summary
Constructors Constructor Description InstOperandConstraintVisitor(ConstantPoolGen constantPoolGen)The only Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidconstraintViolated(Instruction i, java.lang.String message)A utility method to always raise an exeption.private MethodgetMethod(JavaClass jc, InvokeInstruction invoke)Looks for the method referenced by the given invoke instruction in the given class.private MethodgetMethodRecursive(JavaClass jc, InvokeInstruction invoke)Looks for the method referenced by the given invoke instruction in the given class or its super classes and super interfaces.private ObjectTypegetObjectType(FieldInstruction o)private voidindexValid(Instruction i, int idx)A utility method to raise an exception if the index is not a valid constant pool index.private intmax_locals()Utility method to return the max_locals value of the method verified by the surrounding Pass3aVerifier instance.private booleanobjarrayequals(java.lang.Object[] o, java.lang.Object[] p)A utility method like equals(Object) for arrays.voidvisitALOAD(ALOAD o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitANEWARRAY(ANEWARRAY o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitASTORE(ASTORE o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitCHECKCAST(CHECKCAST o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitDLOAD(DLOAD o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitDSTORE(DSTORE o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitFieldInstruction(FieldInstruction o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitFLOAD(FLOAD o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitFSTORE(FSTORE o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitGETSTATIC(GETSTATIC o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitIINC(IINC o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitILOAD(ILOAD o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitINSTANCEOF(INSTANCEOF o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitINVOKEDYNAMIC(INVOKEDYNAMIC o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitInvokeInstruction(InvokeInstruction o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitINVOKEINTERFACE(INVOKEINTERFACE o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitINVOKESPECIAL(INVOKESPECIAL o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitINVOKESTATIC(INVOKESTATIC o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitINVOKEVIRTUAL(INVOKEVIRTUAL o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitISTORE(ISTORE o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitLDC(LDC ldc)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitLDC2_W(LDC2_W o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitLLOAD(LLOAD o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitLoadClass(LoadClass loadClass)Assures the generic preconditions of a LoadClass instance.voidvisitLOOKUPSWITCH(LOOKUPSWITCH o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitLSTORE(LSTORE o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitMULTIANEWARRAY(MULTIANEWARRAY o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitNEW(NEW o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitNEWARRAY(NEWARRAY o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitPUTSTATIC(PUTSTATIC o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitRET(RET o)Checks if the constraints of operands of the said instruction(s) are satisfied.voidvisitTABLESWITCH(TABLESWITCH o)Checks if the constraints of operands of the said instruction(s) are satisfied.-
Methods inherited from class org.apache.bcel.generic.EmptyVisitor
visitAALOAD, visitAASTORE, visitACONST_NULL, visitAllocationInstruction, visitARETURN, visitArithmeticInstruction, visitArrayInstruction, visitARRAYLENGTH, visitATHROW, visitBALOAD, visitBASTORE, visitBIPUSH, visitBranchInstruction, visitBREAKPOINT, visitCALOAD, visitCASTORE, visitConstantPushInstruction, visitConversionInstruction, visitCPInstruction, visitD2F, visitD2I, visitD2L, visitDADD, visitDALOAD, visitDASTORE, visitDCMPG, visitDCMPL, visitDCONST, visitDDIV, visitDMUL, visitDNEG, visitDREM, visitDRETURN, visitDSUB, visitDUP, visitDUP_X1, visitDUP_X2, visitDUP2, visitDUP2_X1, visitDUP2_X2, visitExceptionThrower, visitF2D, visitF2I, visitF2L, visitFADD, visitFALOAD, visitFASTORE, visitFCMPG, visitFCMPL, visitFCONST, visitFDIV, visitFieldOrMethod, visitFMUL, visitFNEG, visitFREM, visitFRETURN, visitFSUB, visitGETFIELD, visitGOTO, visitGOTO_W, visitGotoInstruction, visitI2B, visitI2C, visitI2D, visitI2F, visitI2L, visitI2S, visitIADD, visitIALOAD, visitIAND, visitIASTORE, visitICONST, visitIDIV, visitIF_ACMPEQ, visitIF_ACMPNE, visitIF_ICMPEQ, visitIF_ICMPGE, visitIF_ICMPGT, visitIF_ICMPLE, visitIF_ICMPLT, visitIF_ICMPNE, visitIFEQ, visitIFGE, visitIFGT, visitIfInstruction, visitIFLE, visitIFLT, visitIFNE, visitIFNONNULL, visitIFNULL, visitIMPDEP1, visitIMPDEP2, visitIMUL, visitINEG, visitIOR, visitIREM, visitIRETURN, visitISHL, visitISHR, visitISUB, visitIUSHR, visitIXOR, visitJSR, visitJSR_W, visitJsrInstruction, visitL2D, visitL2F, visitL2I, visitLADD, visitLALOAD, visitLAND, visitLASTORE, visitLCMP, visitLCONST, visitLDIV, visitLMUL, visitLNEG, visitLoadInstruction, visitLocalVariableInstruction, visitLOR, visitLREM, visitLRETURN, visitLSHL, visitLSHR, visitLSUB, visitLUSHR, visitLXOR, visitMONITORENTER, visitMONITOREXIT, visitNOP, visitPOP, visitPOP2, visitPopInstruction, visitPushInstruction, visitPUTFIELD, visitRETURN, visitReturnInstruction, visitSALOAD, visitSASTORE, visitSelect, visitSIPUSH, visitStackConsumer, visitStackInstruction, visitStackProducer, visitStoreInstruction, visitSWAP, visitTypedInstruction, visitUnconditionalBranch, visitVariableLengthInstruction
-
-
-
-
Field Detail
-
constantPoolGen
private final ConstantPoolGen constantPoolGen
The ConstantPoolGen instance this Visitor operates on.
-
-
Constructor Detail
-
InstOperandConstraintVisitor
InstOperandConstraintVisitor(ConstantPoolGen constantPoolGen)
The only Constructor.
-
-
Method Detail
-
max_locals
private int max_locals()
Utility method to return the max_locals value of the method verified by the surrounding Pass3aVerifier instance.
-
constraintViolated
private void constraintViolated(Instruction i, java.lang.String message)
A utility method to always raise an exeption.
-
indexValid
private void indexValid(Instruction i, int idx)
A utility method to raise an exception if the index is not a valid constant pool index.
-
visitLoadClass
public void visitLoadClass(LoadClass loadClass)
Assures the generic preconditions of a LoadClass instance. The referenced class is loaded and pass2-verified.- Specified by:
visitLoadClassin interfaceVisitor- Overrides:
visitLoadClassin classEmptyVisitor
-
visitLDC
public void visitLDC(LDC ldc)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitLDCin interfaceVisitor- Overrides:
visitLDCin classEmptyVisitor
-
visitLDC2_W
public void visitLDC2_W(LDC2_W o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitLDC2_Win interfaceVisitor- Overrides:
visitLDC2_Win classEmptyVisitor
-
getObjectType
private ObjectType getObjectType(FieldInstruction o)
-
visitFieldInstruction
public void visitFieldInstruction(FieldInstruction o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitFieldInstructionin interfaceVisitor- Overrides:
visitFieldInstructionin classEmptyVisitor
-
visitInvokeInstruction
public void visitInvokeInstruction(InvokeInstruction o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitInvokeInstructionin interfaceVisitor- Overrides:
visitInvokeInstructionin classEmptyVisitor
-
visitINSTANCEOF
public void visitINSTANCEOF(INSTANCEOF o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitINSTANCEOFin interfaceVisitor- Overrides:
visitINSTANCEOFin classEmptyVisitor
-
visitCHECKCAST
public void visitCHECKCAST(CHECKCAST o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitCHECKCASTin interfaceVisitor- Overrides:
visitCHECKCASTin classEmptyVisitor
-
visitNEW
public void visitNEW(NEW o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitNEWin interfaceVisitor- Overrides:
visitNEWin classEmptyVisitor
-
visitMULTIANEWARRAY
public void visitMULTIANEWARRAY(MULTIANEWARRAY o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitMULTIANEWARRAYin interfaceVisitor- Overrides:
visitMULTIANEWARRAYin classEmptyVisitor
-
visitANEWARRAY
public void visitANEWARRAY(ANEWARRAY o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitANEWARRAYin interfaceVisitor- Overrides:
visitANEWARRAYin classEmptyVisitor
-
visitNEWARRAY
public void visitNEWARRAY(NEWARRAY o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitNEWARRAYin interfaceVisitor- Overrides:
visitNEWARRAYin classEmptyVisitor
-
visitILOAD
public void visitILOAD(ILOAD o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitILOADin interfaceVisitor- Overrides:
visitILOADin classEmptyVisitor
-
visitFLOAD
public void visitFLOAD(FLOAD o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitFLOADin interfaceVisitor- Overrides:
visitFLOADin classEmptyVisitor
-
visitALOAD
public void visitALOAD(ALOAD o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitALOADin interfaceVisitor- Overrides:
visitALOADin classEmptyVisitor
-
visitISTORE
public void visitISTORE(ISTORE o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitISTOREin interfaceVisitor- Overrides:
visitISTOREin classEmptyVisitor
-
visitFSTORE
public void visitFSTORE(FSTORE o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitFSTOREin interfaceVisitor- Overrides:
visitFSTOREin classEmptyVisitor
-
visitASTORE
public void visitASTORE(ASTORE o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitASTOREin interfaceVisitor- Overrides:
visitASTOREin classEmptyVisitor
-
visitIINC
public void visitIINC(IINC o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitIINCin interfaceVisitor- Overrides:
visitIINCin classEmptyVisitor
-
visitRET
public void visitRET(RET o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitRETin interfaceVisitor- Overrides:
visitRETin classEmptyVisitor
-
visitLLOAD
public void visitLLOAD(LLOAD o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitLLOADin interfaceVisitor- Overrides:
visitLLOADin classEmptyVisitor
-
visitDLOAD
public void visitDLOAD(DLOAD o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitDLOADin interfaceVisitor- Overrides:
visitDLOADin classEmptyVisitor
-
visitLSTORE
public void visitLSTORE(LSTORE o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitLSTOREin interfaceVisitor- Overrides:
visitLSTOREin classEmptyVisitor
-
visitDSTORE
public void visitDSTORE(DSTORE o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitDSTOREin interfaceVisitor- Overrides:
visitDSTOREin classEmptyVisitor
-
visitLOOKUPSWITCH
public void visitLOOKUPSWITCH(LOOKUPSWITCH o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitLOOKUPSWITCHin interfaceVisitor- Overrides:
visitLOOKUPSWITCHin classEmptyVisitor
-
visitTABLESWITCH
public void visitTABLESWITCH(TABLESWITCH o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitTABLESWITCHin interfaceVisitor- Overrides:
visitTABLESWITCHin classEmptyVisitor
-
visitPUTSTATIC
public void visitPUTSTATIC(PUTSTATIC o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitPUTSTATICin interfaceVisitor- Overrides:
visitPUTSTATICin classEmptyVisitor
-
visitGETSTATIC
public void visitGETSTATIC(GETSTATIC o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitGETSTATICin interfaceVisitor- Overrides:
visitGETSTATICin classEmptyVisitor
-
visitINVOKEDYNAMIC
public void visitINVOKEDYNAMIC(INVOKEDYNAMIC o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitINVOKEDYNAMICin interfaceVisitor- Overrides:
visitINVOKEDYNAMICin classEmptyVisitor
-
visitINVOKEINTERFACE
public void visitINVOKEINTERFACE(INVOKEINTERFACE o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitINVOKEINTERFACEin interfaceVisitor- Overrides:
visitINVOKEINTERFACEin classEmptyVisitor
-
getMethodRecursive
private Method getMethodRecursive(JavaClass jc, InvokeInstruction invoke) throws java.lang.ClassNotFoundException
Looks for the method referenced by the given invoke instruction in the given class or its super classes and super interfaces.- Parameters:
jc- the class that defines the referenced methodinvoke- the instruction that references the method- Returns:
- the referenced method or null if not found.
- Throws:
java.lang.ClassNotFoundException
-
getMethod
private Method getMethod(JavaClass jc, InvokeInstruction invoke)
Looks for the method referenced by the given invoke instruction in the given class.- Parameters:
jc- the class that defines the referenced methodinvoke- the instruction that references the method- Returns:
- the referenced method or null if not found.
-
visitINVOKESPECIAL
public void visitINVOKESPECIAL(INVOKESPECIAL o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitINVOKESPECIALin interfaceVisitor- Overrides:
visitINVOKESPECIALin classEmptyVisitor
-
visitINVOKESTATIC
public void visitINVOKESTATIC(INVOKESTATIC o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitINVOKESTATICin interfaceVisitor- Overrides:
visitINVOKESTATICin classEmptyVisitor
-
visitINVOKEVIRTUAL
public void visitINVOKEVIRTUAL(INVOKEVIRTUAL o)
Checks if the constraints of operands of the said instruction(s) are satisfied.- Specified by:
visitINVOKEVIRTUALin interfaceVisitor- Overrides:
visitINVOKEVIRTUALin classEmptyVisitor
-
objarrayequals
private boolean objarrayequals(java.lang.Object[] o, java.lang.Object[] p)A utility method like equals(Object) for arrays. The equality of the elements is based on their equals(Object) method instead of their object identity.
-
-