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 2016/06/21 20:50:21 UTC
svn commit: r1749603 [7/9] - in /commons/proper/bcel/trunk/src:
main/java/org/apache/bcel/ main/java/org/apache/bcel/classfile/
main/java/org/apache/bcel/generic/ main/java/org/apache/bcel/util/
main/java/org/apache/bcel/verifier/ main/java/org/apache/...
Modified: commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/statics/StringRepresentation.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/statics/StringRepresentation.java?rev=1749603&r1=1749602&r2=1749603&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/statics/StringRepresentation.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/statics/StringRepresentation.java Tue Jun 21 20:50:19 2016
@@ -123,7 +123,7 @@ public class StringRepresentation extend
ret = obj.toString();
}
- catch (RuntimeException e) {
+ catch (final RuntimeException e) {
// including ClassFormatException, trying to convert the "signature" of a ReturnaddressType LocalVariable
// (shouldn't occur, but people do crazy things)
String s = obj.getClass().getName();
Modified: commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/ControlFlowGraph.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/ControlFlowGraph.java?rev=1749603&r1=1749602&r2=1749603&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/ControlFlowGraph.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/ControlFlowGraph.java Tue Jun 21 20:50:19 2016
@@ -122,7 +122,7 @@ public class ControlFlowGraph{
Frame org;
- InstructionContext jsr = lastExecutionJSR();
+ final InstructionContext jsr = lastExecutionJSR();
org = outFrames.get(jsr);
@@ -137,7 +137,7 @@ public class ControlFlowGraph{
public Frame getInFrame() {
Frame org;
- InstructionContext jsr = lastExecutionJSR();
+ final InstructionContext jsr = lastExecutionJSR();
org = inFrames.get(jsr);
@@ -194,7 +194,7 @@ public class ControlFlowGraph{
// Now we're sure the inFrame has changed!
// new inFrame is already merged in, see above.
- Frame workingFrame = inF.getClone();
+ final Frame workingFrame = inF.getClone();
try{
// This verifies the InstructionConstraint for the current
@@ -203,7 +203,7 @@ public class ControlFlowGraph{
icv.setFrame(workingFrame);
getInstruction().accept(icv);
}
- catch(StructuralCodeConstraintException ce) {
+ catch(final StructuralCodeConstraintException ce) {
ce.extendMessage("","\nInstructionHandle: "+getInstruction()+"\n");
ce.extendMessage("","\nExecution Frame:\n"+workingFrame);
extendMessageWithFlow(ce);
@@ -230,7 +230,7 @@ public class ControlFlowGraph{
//TODO: Put information in the brackets, e.g.
// Is this an ExceptionHandler? Is this a RET? Is this the start of
// a subroutine?
- String ret = getInstruction().toString(false)+"\t[InstructionContext]";
+ final String ret = getInstruction().toString(false)+"\t[InstructionContext]";
return ret;
}
@@ -240,13 +240,13 @@ public class ControlFlowGraph{
*/
private boolean mergeInFrames(final Frame inFrame) {
// TODO: Can be performance-improved.
- Frame inF = inFrames.get(lastExecutionJSR());
- OperandStack oldstack = inF.getStack().getClone();
- LocalVariables oldlocals = inF.getLocals().getClone();
+ final Frame inF = inFrames.get(lastExecutionJSR());
+ final OperandStack oldstack = inF.getStack().getClone();
+ final LocalVariables oldlocals = inF.getLocals().getClone();
try {
inF.getStack().merge(inFrame.getStack());
inF.getLocals().merge(inFrame.getLocals());
- } catch (StructuralCodeConstraintException sce) {
+ } catch (final StructuralCodeConstraintException sce) {
extendMessageWithFlow(sce);
throw sce;
}
@@ -273,7 +273,7 @@ public class ControlFlowGraph{
* violation that triggered the throwing of the "e" object.
*/
private void extendMessageWithFlow(final StructuralCodeConstraintException e) {
- String s = "Execution flow:\n";
+ final String s = "Execution flow:\n";
e.extendMessage("", s+getExecutionChain());
}
@@ -294,12 +294,12 @@ public class ControlFlowGraph{
*/
private InstructionContextImpl lastExecutionJSR() {
- int size = executionPredecessors.size();
+ final int size = executionPredecessors.size();
int retcount = 0;
for (int i=size-1; i>=0; i--) {
- InstructionContextImpl current = (InstructionContextImpl) (executionPredecessors.get(i));
- Instruction currentlast = current.getInstruction().getInstruction();
+ final InstructionContextImpl current = (InstructionContextImpl) (executionPredecessors.get(i));
+ final Instruction currentlast = current.getInstruction().getInstruction();
if (currentlast instanceof RET) {
retcount++;
}
@@ -330,10 +330,10 @@ public class ControlFlowGraph{
final InstructionHandle[] empty = new InstructionHandle[0];
final InstructionHandle[] single = new InstructionHandle[1];
- Instruction inst = getInstruction().getInstruction();
+ final Instruction inst = getInstruction().getInstruction();
if (inst instanceof RET) {
- Subroutine s = subroutines.subroutineOf(getInstruction());
+ final Subroutine s = subroutines.subroutineOf(getInstruction());
if (s==null) { //return empty;
// RET in dead code. "empty" would be the correct answer, but we know something about the surrounding project...
throw new AssertionViolatedException("Asking for successors of a RET in dead code?!");
@@ -343,8 +343,8 @@ public class ControlFlowGraph{
// will want it. Thanks Johannes Wust.
//throw new AssertionViolatedException("DID YOU REALLY WANT TO ASK FOR RET'S SUCCS?");
- InstructionHandle[] jsrs = s.getEnteringJsrInstructions();
- InstructionHandle[] ret = new InstructionHandle[jsrs.length];
+ final InstructionHandle[] jsrs = s.getEnteringJsrInstructions();
+ final InstructionHandle[] ret = new InstructionHandle[jsrs.length];
for (int i=0; i<jsrs.length; i++) {
ret[i] = jsrs[i].getNext();
}
@@ -377,8 +377,8 @@ public class ControlFlowGraph{
if (inst instanceof Select) {
// BCEL's getTargets() returns only the non-default targets,
// thanks to Eli Tilevich for reporting.
- InstructionHandle[] matchTargets = ((Select) inst).getTargets();
- InstructionHandle[] ret = new InstructionHandle[matchTargets.length+1];
+ final InstructionHandle[] matchTargets = ((Select) inst).getTargets();
+ final InstructionHandle[] ret = new InstructionHandle[matchTargets.length+1];
ret[0] = ((Select) inst).getTarget();
System.arraycopy(matchTargets, 0, ret, 1, matchTargets.length);
return ret;
@@ -426,8 +426,8 @@ public class ControlFlowGraph{
subroutines = new Subroutines(method_gen, enableJustIceCheck);
exceptionhandlers = new ExceptionHandlers(method_gen);
- InstructionHandle[] instructionhandles = method_gen.getInstructionList().getInstructionHandles();
- for (InstructionHandle instructionhandle : instructionhandles) {
+ final InstructionHandle[] instructionhandles = method_gen.getInstructionList().getInstructionHandles();
+ for (final InstructionHandle instructionhandle : instructionhandles) {
instructionContexts.put(instructionhandle, new InstructionContextImpl(instructionhandle));
}
@@ -438,7 +438,7 @@ public class ControlFlowGraph{
* Returns the InstructionContext of a given instruction.
*/
public InstructionContext contextOf(final InstructionHandle inst) {
- InstructionContext ic = instructionContexts.get(inst);
+ final InstructionContext ic = instructionContexts.get(inst);
if (ic == null) {
throw new AssertionViolatedException("InstructionContext requested for an InstructionHandle that's not known!");
}
@@ -450,7 +450,7 @@ public class ControlFlowGraph{
* in a naturally ordered manner.
*/
public InstructionContext[] contextsOf(final InstructionHandle[] insts) {
- InstructionContext[] ret = new InstructionContext[insts.length];
+ final InstructionContext[] ret = new InstructionContext[insts.length];
for (int i=0; i<insts.length; i++) {
ret[i] = contextOf(insts[i]);
}
@@ -463,7 +463,7 @@ public class ControlFlowGraph{
* <B>(NOT ORDERED!)</B>.
*/
public InstructionContext[] getInstructionContexts() {
- InstructionContext[] ret = new InstructionContext[instructionContexts.values().size()];
+ final InstructionContext[] ret = new InstructionContext[instructionContexts.values().size()];
return instructionContexts.values().toArray(ret);
}
Modified: commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/ExceptionHandlers.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/ExceptionHandlers.java?rev=1749603&r1=1749602&r2=1749603&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/ExceptionHandlers.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/ExceptionHandlers.java Tue Jun 21 20:50:19 2016
@@ -44,9 +44,9 @@ public class ExceptionHandlers{
*/
public ExceptionHandlers(final MethodGen mg) {
exceptionhandlers = new HashMap<>();
- CodeExceptionGen[] cegs = mg.getExceptionHandlers();
- for (CodeExceptionGen ceg : cegs) {
- ExceptionHandler eh = new ExceptionHandler(ceg.getCatchType(), ceg.getHandlerPC());
+ final CodeExceptionGen[] cegs = mg.getExceptionHandlers();
+ for (final CodeExceptionGen ceg : cegs) {
+ final ExceptionHandler eh = new ExceptionHandler(ceg.getCatchType(), ceg.getHandlerPC());
for (InstructionHandle ih=ceg.getStartPC(); ih != ceg.getEndPC().getNext(); ih=ih.getNext()) {
Set<ExceptionHandler> hs;
hs = exceptionhandlers.get(ih);
@@ -64,7 +64,7 @@ public class ExceptionHandlers{
* handlers that protect the instruction ih.
*/
public ExceptionHandler[] getExceptionHandlers(final InstructionHandle ih) {
- Set<ExceptionHandler> hsSet = exceptionhandlers.get(ih);
+ final Set<ExceptionHandler> hsSet = exceptionhandlers.get(ih);
if (hsSet == null) {
return new ExceptionHandler[0];
}
Modified: commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/ExecutionVisitor.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/ExecutionVisitor.java?rev=1749603&r1=1749602&r2=1749603&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/ExecutionVisitor.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/ExecutionVisitor.java Tue Jun 21 20:50:19 2016
@@ -125,12 +125,12 @@ public class ExecutionVisitor extends Em
public void visitAALOAD(final AALOAD o) {
stack().pop(); // pop the index int
//System.out.print(stack().peek());
- Type t = stack().pop(); // Pop Array type
+ final Type t = stack().pop(); // Pop Array type
if (t == Type.NULL) {
stack().push(Type.NULL);
} // Do nothing stackwise --- a NullPointerException is thrown at Run-Time
else{
- ArrayType at = (ArrayType) t;
+ final ArrayType at = (ArrayType) t;
stack().push(at.getElementType());
}
}
@@ -179,7 +179,7 @@ public class ExecutionVisitor extends Em
/** Symbolically executes the corresponding Java Virtual Machine instruction. */
@Override
public void visitATHROW(final ATHROW o) {
- Type t = stack().pop();
+ final Type t = stack().pop();
stack().clear();
if (t.equals(Type.NULL)) {
stack().push(Type.getType("Ljava/lang/NullPointerException;"));
@@ -347,15 +347,15 @@ public class ExecutionVisitor extends Em
/** Symbolically executes the corresponding Java Virtual Machine instruction. */
@Override
public void visitDUP(final DUP o) {
- Type t = stack().pop();
+ final Type t = stack().pop();
stack().push(t);
stack().push(t);
}
/** Symbolically executes the corresponding Java Virtual Machine instruction. */
@Override
public void visitDUP_X1(final DUP_X1 o) {
- Type w1 = stack().pop();
- Type w2 = stack().pop();
+ final Type w1 = stack().pop();
+ final Type w2 = stack().pop();
stack().push(w1);
stack().push(w2);
stack().push(w1);
@@ -363,15 +363,15 @@ public class ExecutionVisitor extends Em
/** Symbolically executes the corresponding Java Virtual Machine instruction. */
@Override
public void visitDUP_X2(final DUP_X2 o) {
- Type w1 = stack().pop();
- Type w2 = stack().pop();
+ final Type w1 = stack().pop();
+ final Type w2 = stack().pop();
if (w2.getSize() == 2) {
stack().push(w1);
stack().push(w2);
stack().push(w1);
}
else{
- Type w3 = stack().pop();
+ final Type w3 = stack().pop();
stack().push(w1);
stack().push(w3);
stack().push(w2);
@@ -381,13 +381,13 @@ public class ExecutionVisitor extends Em
/** Symbolically executes the corresponding Java Virtual Machine instruction. */
@Override
public void visitDUP2(final DUP2 o) {
- Type t = stack().pop();
+ final Type t = stack().pop();
if (t.getSize() == 2) {
stack().push(t);
stack().push(t);
}
else{ // t.getSize() is 1
- Type u = stack().pop();
+ final Type u = stack().pop();
stack().push(u);
stack().push(t);
stack().push(u);
@@ -397,16 +397,16 @@ public class ExecutionVisitor extends Em
/** Symbolically executes the corresponding Java Virtual Machine instruction. */
@Override
public void visitDUP2_X1(final DUP2_X1 o) {
- Type t = stack().pop();
+ final Type t = stack().pop();
if (t.getSize() == 2) {
- Type u = stack().pop();
+ final Type u = stack().pop();
stack().push(t);
stack().push(u);
stack().push(t);
}
else{ //t.getSize() is1
- Type u = stack().pop();
- Type v = stack().pop();
+ final Type u = stack().pop();
+ final Type v = stack().pop();
stack().push(u);
stack().push(t);
stack().push(v);
@@ -417,15 +417,15 @@ public class ExecutionVisitor extends Em
/** Symbolically executes the corresponding Java Virtual Machine instruction. */
@Override
public void visitDUP2_X2(final DUP2_X2 o) {
- Type t = stack().pop();
+ final Type t = stack().pop();
if (t.getSize() == 2) {
- Type u = stack().pop();
+ final Type u = stack().pop();
if (u.getSize() == 2) {
stack().push(t);
stack().push(u);
stack().push(t);
}else{
- Type v = stack().pop();
+ final Type v = stack().pop();
stack().push(t);
stack().push(v);
stack().push(u);
@@ -433,8 +433,8 @@ public class ExecutionVisitor extends Em
}
}
else{ //t.getSize() is 1
- Type u = stack().pop();
- Type v = stack().pop();
+ final Type u = stack().pop();
+ final Type v = stack().pop();
if (v.getSize() == 2) {
stack().push(u);
stack().push(t);
@@ -442,7 +442,7 @@ public class ExecutionVisitor extends Em
stack().push(u);
stack().push(t);
}else{
- Type w = stack().pop();
+ final Type w = stack().pop();
stack().push(u);
stack().push(t);
stack().push(w);
@@ -837,7 +837,7 @@ public class ExecutionVisitor extends Em
@Override
public void visitINVOKESPECIAL(final INVOKESPECIAL o) {
if (o.getMethodName(cpg).equals(Const.CONSTRUCTOR_NAME)) {
- UninitializedObjectType t = (UninitializedObjectType) stack().peek(o.getArgumentTypes(cpg).length);
+ final UninitializedObjectType t = (UninitializedObjectType) stack().peek(o.getArgumentTypes(cpg).length);
if (t == Frame.getThis()) {
Frame.setThis(null);
}
@@ -1040,7 +1040,7 @@ public class ExecutionVisitor extends Em
/** Symbolically executes the corresponding Java Virtual Machine instruction. */
@Override
public void visitLDC(final LDC o) {
- Constant c = cpg.getConstant(o.getIndex());
+ final Constant c = cpg.getConstant(o.getIndex());
if (c instanceof ConstantInteger) {
stack().push(Type.INT);
}
@@ -1056,7 +1056,7 @@ public class ExecutionVisitor extends Em
}
/** Symbolically executes the corresponding Java Virtual Machine instruction. */
public void visitLDC_W(final LDC_W o) {
- Constant c = cpg.getConstant(o.getIndex());
+ final Constant c = cpg.getConstant(o.getIndex());
if (c instanceof ConstantInteger) {
stack().push(Type.INT);
}
@@ -1073,7 +1073,7 @@ public class ExecutionVisitor extends Em
/** Symbolically executes the corresponding Java Virtual Machine instruction. */
@Override
public void visitLDC2_W(final LDC2_W o) {
- Constant c = cpg.getConstant(o.getIndex());
+ final Constant c = cpg.getConstant(o.getIndex());
if (c instanceof ConstantLong) {
stack().push(Type.LONG);
}
@@ -1212,7 +1212,7 @@ public class ExecutionVisitor extends Em
/** Symbolically executes the corresponding Java Virtual Machine instruction. */
@Override
public void visitPOP2(final POP2 o) {
- Type t = stack().pop();
+ final Type t = stack().pop();
if (t.getSize() == 1) {
stack().pop();
}
@@ -1261,8 +1261,8 @@ public class ExecutionVisitor extends Em
/** Symbolically executes the corresponding Java Virtual Machine instruction. */
@Override
public void visitSWAP(final SWAP o) {
- Type t = stack().pop();
- Type u = stack().pop();
+ final Type t = stack().pop();
+ final Type u = stack().pop();
stack().push(t);
stack().push(u);
}
Modified: commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/Frame.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/Frame.java?rev=1749603&r1=1749602&r2=1749603&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/Frame.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/Frame.java Tue Jun 21 20:50:19 2016
@@ -70,7 +70,7 @@ public class Frame{
*/
@Override
protected Object clone() {
- Frame f = new Frame(locals.getClone(), stack.getClone());
+ final Frame f = new Frame(locals.getClone(), stack.getClone());
return f;
}
@@ -108,7 +108,7 @@ public class Frame{
if (!(o instanceof Frame)) {
return false; // implies "null" is non-equal.
}
- Frame f = (Frame) o;
+ final Frame f = (Frame) o;
return this.stack.equals(f.stack) && this.locals.equals(f.locals);
}
Modified: commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/InstConstraintVisitor.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/InstConstraintVisitor.java?rev=1749603&r1=1749602&r2=1749603&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/InstConstraintVisitor.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/InstConstraintVisitor.java Tue Jun 21 20:50:19 2016
@@ -108,7 +108,7 @@ public class InstConstraintVisitor exten
* @throws StructuralCodeConstraintException always.
*/
private void constraintViolated(final Instruction violator, final String description) {
- String fq_classname = violator.getClass().getName();
+ final String fq_classname = violator.getClass().getName();
throw new StructuralCodeConstraintException(
"Instruction "+ fq_classname.substring(fq_classname.lastIndexOf('.')+1) +" constraint violated: " + description);
}
@@ -204,13 +204,13 @@ public class InstConstraintVisitor exten
* @see #visitStackInstruction(StackInstruction o)
*/
private void _visitStackAccessor(final Instruction o) {
- int consume = o.consumeStack(cpg); // Stack values are always consumed first; then produced.
+ final int consume = o.consumeStack(cpg); // Stack values are always consumed first; then produced.
if (consume > stack().slotsUsed()) {
constraintViolated(o,
"Cannot consume "+consume+" stack slots: only "+stack().slotsUsed()+" slot(s) left on stack!\nStack:\n"+stack());
}
- int produce = o.produceStack(cpg) - o.consumeStack(cpg); // Stack values are always consumed first; then produced.
+ final int produce = o.produceStack(cpg) - o.consumeStack(cpg); // Stack values are always consumed first; then produced.
if ( produce + stack().slotsUsed() > stack().maxStack() ) {
constraintViolated(o, "Cannot produce "+produce+" stack slots: only "+(stack().maxStack()-stack().slotsUsed())+
" free stack slot(s) left.\nStack:\n"+stack());
@@ -229,10 +229,10 @@ public class InstConstraintVisitor exten
*/
@Override
public void visitLoadClass(final LoadClass o) {
- ObjectType t = o.getLoadClassType(cpg);
+ final ObjectType t = o.getLoadClassType(cpg);
if (t != null) {// null means "no class is loaded"
- Verifier v = VerifierFactory.getVerifier(t.getClassName());
- VerificationResult vr = v.doPass2();
+ final Verifier v = VerifierFactory.getVerifier(t.getClassName());
+ final VerificationResult vr = v.doPass2();
if (vr.getStatus() != VerificationResult.VERIFIED_OK) {
constraintViolated((Instruction) o, "Class '"+o.getLoadClassType(cpg).getClassName()+
"' is referenced, but cannot be loaded and resolved: '"+vr+"'.");
@@ -267,7 +267,7 @@ public class InstConstraintVisitor exten
*/
@Override
public void visitCPInstruction(final CPInstruction o) {
- int idx = o.getIndex();
+ final int idx = o.getIndex();
if ((idx < 0) || (idx >= cpg.getSize())) {
throw new AssertionViolatedException(
"Huh?! Constant pool index of instruction '"+o+"' illegal? Pass 3a should have checked this!");
@@ -283,17 +283,17 @@ public class InstConstraintVisitor exten
// implements LoadClass.
// visitCPInstruction(o) has been called before.
// A FieldInstruction may be: GETFIELD, GETSTATIC, PUTFIELD, PUTSTATIC
- Constant c = cpg.getConstant(o.getIndex());
+ final Constant c = cpg.getConstant(o.getIndex());
if (!(c instanceof ConstantFieldref)) {
constraintViolated(o,
"Index '"+o.getIndex()+"' should refer to a CONSTANT_Fieldref_info structure, but refers to '"+c+"'.");
}
// the o.getClassType(cpg) type has passed pass 2; see visitLoadClass(o).
- Type t = o.getType(cpg);
+ final Type t = o.getType(cpg);
if (t instanceof ObjectType) {
- String name = ((ObjectType)t).getClassName();
- Verifier v = VerifierFactory.getVerifier( name );
- VerificationResult vr = v.doPass2();
+ final String name = ((ObjectType)t).getClassName();
+ final Verifier v = VerifierFactory.getVerifier( name );
+ final VerificationResult vr = v.doPass2();
if (vr.getStatus() != VerificationResult.VERIFIED_OK) {
constraintViolated(o, "Class '"+name+"' is referenced, but cannot be loaded and resolved: '"+vr+"'.");
}
@@ -393,7 +393,7 @@ public class InstConstraintVisitor exten
}
}
else{ // we deal with ASTORE
- Type stacktop = stack().peek();
+ final Type stacktop = stack().peek();
if ( (!(stacktop instanceof ReferenceType)) && (!(stacktop instanceof ReturnaddressType)) ) {
constraintViolated(o, "Stack top type and STOREing Instruction type mismatch: Stack top: '"+stack().peek()+
"'; Instruction expects a ReferenceType or a ReturnadressType.");
@@ -461,8 +461,8 @@ public class InstConstraintVisitor exten
*/
@Override
public void visitAALOAD(final AALOAD o) {
- Type arrayref = stack().peek(1);
- Type index = stack().peek(0);
+ final Type arrayref = stack().peek(1);
+ final Type index = stack().peek(0);
indexOfInt(o, index);
if (arrayrefOfArrayType(o, arrayref)) {
@@ -480,9 +480,9 @@ public class InstConstraintVisitor exten
*/
@Override
public void visitAASTORE(final AASTORE o) {
- Type arrayref = stack().peek(2);
- Type index = stack().peek(1);
- Type value = stack().peek(0);
+ final Type arrayref = stack().peek(2);
+ final Type index = stack().peek(1);
+ final Type value = stack().peek(0);
indexOfInt(o, index);
if (!(value instanceof ReferenceType)) {
@@ -539,7 +539,7 @@ public class InstConstraintVisitor exten
if (! (stack().peek() instanceof ReferenceType) ) {
constraintViolated(o, "The 'objectref' at the stack top is not of a ReferenceType but of type '"+stack().peek()+"'.");
}
- ReferenceType objectref = (ReferenceType) (stack().peek());
+ final ReferenceType objectref = (ReferenceType) (stack().peek());
referenceTypeIsInitialized(o, objectref);
// The check below should already done via visitReturnInstruction(ReturnInstruction), see there.
@@ -556,7 +556,7 @@ public class InstConstraintVisitor exten
*/
@Override
public void visitARRAYLENGTH(final ARRAYLENGTH o) {
- Type arrayref = stack().peek(0);
+ final Type arrayref = stack().peek(0);
arrayrefOfArrayType(o, arrayref);
}
@@ -590,13 +590,13 @@ public class InstConstraintVisitor exten
return;
}
- ObjectType exc = (ObjectType) (stack().peek());
- ObjectType throwable = (ObjectType) (Type.getType("Ljava/lang/Throwable;"));
+ final ObjectType exc = (ObjectType) (stack().peek());
+ final ObjectType throwable = (ObjectType) (Type.getType("Ljava/lang/Throwable;"));
if ( (! (exc.subclassOf(throwable)) ) && (! (exc.equals(throwable))) ) {
constraintViolated(o,
"The 'objectref' is not of class Throwable or of a subclass of Throwable, but of '"+stack().peek()+"'.");
}
- } catch (ClassNotFoundException e) {
+ } catch (final ClassNotFoundException e) {
// FIXME: maybe not the best way to handle this
throw new AssertionViolatedException("Missing class: " + e, e);
}
@@ -607,8 +607,8 @@ public class InstConstraintVisitor exten
*/
@Override
public void visitBALOAD(final BALOAD o) {
- Type arrayref = stack().peek(1);
- Type index = stack().peek(0);
+ final Type arrayref = stack().peek(1);
+ final Type index = stack().peek(0);
indexOfInt(o, index);
if (arrayrefOfArrayType(o, arrayref)) {
if (! ( (((ArrayType) arrayref).getElementType().equals(Type.BOOLEAN)) ||
@@ -625,9 +625,9 @@ public class InstConstraintVisitor exten
*/
@Override
public void visitBASTORE(final BASTORE o) {
- Type arrayref = stack().peek(2);
- Type index = stack().peek(1);
- Type value = stack().peek(0);
+ final Type arrayref = stack().peek(2);
+ final Type index = stack().peek(1);
+ final Type value = stack().peek(0);
indexOfInt(o, index);
valueOfInt(o, value);
@@ -663,8 +663,8 @@ public class InstConstraintVisitor exten
*/
@Override
public void visitCALOAD(final CALOAD o) {
- Type arrayref = stack().peek(1);
- Type index = stack().peek(0);
+ final Type arrayref = stack().peek(1);
+ final Type index = stack().peek(0);
indexOfInt(o, index);
arrayrefOfArrayType(o, arrayref);
@@ -675,9 +675,9 @@ public class InstConstraintVisitor exten
*/
@Override
public void visitCASTORE(final CASTORE o) {
- Type arrayref = stack().peek(2);
- Type index = stack().peek(1);
- Type value = stack().peek(0);
+ final Type arrayref = stack().peek(2);
+ final Type index = stack().peek(1);
+ final Type value = stack().peek(0);
indexOfInt(o, index);
valueOfInt(o, value);
@@ -695,7 +695,7 @@ public class InstConstraintVisitor exten
@Override
public void visitCHECKCAST(final CHECKCAST o) {
// The objectref must be of type reference.
- Type objectref = stack().peek(0);
+ final Type objectref = stack().peek(0);
if (!(objectref instanceof ReferenceType)) {
constraintViolated(o, "The 'objectref' is not of a ReferenceType but of type "+objectref+".");
}
@@ -705,7 +705,7 @@ public class InstConstraintVisitor exten
// The unsigned indexbyte1 and indexbyte2 are used to construct an index into the runtime constant pool of the
// current class (�3.6), where the value of the index is (indexbyte1 << 8) | indexbyte2. The runtime constant
// pool item at the index must be a symbolic reference to a class, array, or interface type.
- Constant c = cpg.getConstant(o.getIndex());
+ final Constant c = cpg.getConstant(o.getIndex());
if (! (c instanceof ConstantClass)) {
constraintViolated(o, "The Constant at 'index' is not a ConstantClass, but '"+c+"'.");
}
@@ -766,7 +766,7 @@ public class InstConstraintVisitor exten
if (! (stack().peek(1) instanceof ArrayType)) {
constraintViolated(o, "Stack next-to-top must be of type double[] but is '"+stack().peek(1)+"'.");
}
- Type t = ((ArrayType) (stack().peek(1))).getBasicType();
+ final Type t = ((ArrayType) (stack().peek(1))).getBasicType();
if (t != Type.DOUBLE) {
constraintViolated(o, "Stack next-to-top must be of type double[] but is '"+stack().peek(1)+"'.");
}
@@ -787,7 +787,7 @@ public class InstConstraintVisitor exten
if (! (stack().peek(2) instanceof ArrayType)) {
constraintViolated(o, "Stack next-to-next-to-top must be of type double[] but is '"+stack().peek(2)+"'.");
}
- Type t = ((ArrayType) (stack().peek(2))).getBasicType();
+ final Type t = ((ArrayType) (stack().peek(2))).getBasicType();
if (t != Type.DOUBLE) {
constraintViolated(o, "Stack next-to-next-to-top must be of type double[] but is '"+stack().peek(2)+"'.");
}
@@ -1097,7 +1097,7 @@ public class InstConstraintVisitor exten
if (! (stack().peek(1) instanceof ArrayType)) {
constraintViolated(o, "Stack next-to-top must be of type float[] but is '"+stack().peek(1)+"'.");
}
- Type t = ((ArrayType) (stack().peek(1))).getBasicType();
+ final Type t = ((ArrayType) (stack().peek(1))).getBasicType();
if (t != Type.FLOAT) {
constraintViolated(o, "Stack next-to-top must be of type float[] but is '"+stack().peek(1)+"'.");
}
@@ -1118,7 +1118,7 @@ public class InstConstraintVisitor exten
if (! (stack().peek(2) instanceof ArrayType)) {
constraintViolated(o, "Stack next-to-next-to-top must be of type float[] but is '"+stack().peek(2)+"'.");
}
- Type t = ((ArrayType) (stack().peek(2))).getBasicType();
+ final Type t = ((ArrayType) (stack().peek(2))).getBasicType();
if (t != Type.FLOAT) {
constraintViolated(o, "Stack next-to-next-to-top must be of type float[] but is '"+stack().peek(2)+"'.");
}
@@ -1251,7 +1251,7 @@ public class InstConstraintVisitor exten
}
private ObjectType getObjectType(final FieldInstruction o) {
- ReferenceType rt = o.getReferenceType(cpg);
+ final ReferenceType rt = o.getReferenceType(cpg);
if(rt instanceof ObjectType) {
return (ObjectType)rt;
}
@@ -1265,20 +1265,20 @@ public class InstConstraintVisitor exten
@Override
public void visitGETFIELD(final GETFIELD o) {
try {
- Type objectref = stack().peek();
+ final Type objectref = stack().peek();
if (! ( (objectref instanceof ObjectType) || (objectref == Type.NULL) ) ) {
constraintViolated(o, "Stack top should be an object reference that's not an array reference, but is '"+objectref+"'.");
}
- String field_name = o.getFieldName(cpg);
+ final String field_name = o.getFieldName(cpg);
- JavaClass jc = Repository.lookupClass(getObjectType(o).getClassName());
+ final JavaClass jc = Repository.lookupClass(getObjectType(o).getClassName());
Field[] fields = jc.getFields();
Field f = null;
- for (Field field : fields) {
+ for (final Field field : fields) {
if (field.getName().equals(field_name)) {
- Type f_type = Type.getType(field.getSignature());
- Type o_type = o.getType(cpg);
+ final Type f_type = Type.getType(field.getSignature());
+ final Type o_type = o.getType(cpg);
/* TODO: Check if assignment compatibility is sufficient.
* What does Sun do?
*/
@@ -1290,14 +1290,14 @@ public class InstConstraintVisitor exten
}
if (f == null) {
- JavaClass[] superclasses = jc.getSuperClasses();
+ final JavaClass[] superclasses = jc.getSuperClasses();
outer:
- for (JavaClass superclass : superclasses) {
+ for (final JavaClass superclass : superclasses) {
fields = superclass.getFields();
- for (Field field : fields) {
+ for (final Field field : fields) {
if (field.getName().equals(field_name)) {
- Type f_type = Type.getType(field.getSignature());
- Type o_type = o.getType(cpg);
+ final Type f_type = Type.getType(field.getSignature());
+ final Type o_type = o.getType(cpg);
if (f_type.equals(o_type)) {
f = field;
if ((f.getAccessFlags() & (Const.ACC_PUBLIC | Const.ACC_PROTECTED)) == 0) {
@@ -1314,19 +1314,19 @@ public class InstConstraintVisitor exten
}
if (f.isProtected()) {
- ObjectType classtype = getObjectType(o);
- ObjectType curr = ObjectType.getInstance(mg.getClassName());
+ final ObjectType classtype = getObjectType(o);
+ final ObjectType curr = ObjectType.getInstance(mg.getClassName());
if ( classtype.equals(curr) ||
curr.subclassOf(classtype) ) {
- Type t = stack().peek();
+ final Type t = stack().peek();
if (t == Type.NULL) {
return;
}
if (! (t instanceof ObjectType) ) {
constraintViolated(o, "The 'objectref' must refer to an object that's not an array. Found instead: '"+t+"'.");
}
- ObjectType objreftype = (ObjectType) t;
+ final ObjectType objreftype = (ObjectType) t;
if (! ( objreftype.equals(curr) ||
objreftype.subclassOf(curr) ) ) {
//TODO: One day move to Staerk-et-al's "Set of object types" instead of "wider" object types
@@ -1345,7 +1345,7 @@ public class InstConstraintVisitor exten
constraintViolated(o, "Referenced field '"+f+"' is static which it shouldn't be.");
}
- } catch (ClassNotFoundException e) {
+ } catch (final ClassNotFoundException e) {
// FIXME: maybe not the best way to handle this
throw new AssertionViolatedException("Missing class: " + e, e);
}
@@ -1460,7 +1460,7 @@ public class InstConstraintVisitor exten
if (! (stack().peek(1) instanceof ArrayType)) {
constraintViolated(o, "Stack next-to-top must be of type int[] but is '"+stack().peek(1)+"'.");
}
- Type t = ((ArrayType) (stack().peek(1))).getBasicType();
+ final Type t = ((ArrayType) (stack().peek(1))).getBasicType();
if (t != Type.INT) {
constraintViolated(o, "Stack next-to-top must be of type int[] but is '"+stack().peek(1)+"'.");
}
@@ -1494,7 +1494,7 @@ public class InstConstraintVisitor exten
if (! (stack().peek(2) instanceof ArrayType)) {
constraintViolated(o, "Stack next-to-next-to-top must be of type int[] but is '"+stack().peek(2)+"'.");
}
- Type t = ((ArrayType) (stack().peek(2))).getBasicType();
+ final Type t = ((ArrayType) (stack().peek(2))).getBasicType();
if (t != Type.INT) {
constraintViolated(o, "Stack next-to-next-to-top must be of type int[] but is '"+stack().peek(2)+"'.");
}
@@ -1781,7 +1781,7 @@ public class InstConstraintVisitor exten
@Override
public void visitINSTANCEOF(final INSTANCEOF o) {
// The objectref must be of type reference.
- Type objectref = stack().peek(0);
+ final Type objectref = stack().peek(0);
if (!(objectref instanceof ReferenceType)) {
constraintViolated(o, "The 'objectref' is not of a ReferenceType but of type "+objectref+".");
}
@@ -1791,7 +1791,7 @@ public class InstConstraintVisitor exten
// The unsigned indexbyte1 and indexbyte2 are used to construct an index into the runtime constant pool of the
// current class (�3.6), where the value of the index is (indexbyte1 << 8) | indexbyte2. The runtime constant
// pool item at the index must be a symbolic reference to a class, array, or interface type.
- Constant c = cpg.getConstant(o.getIndex());
+ final Constant c = cpg.getConstant(o.getIndex());
if (! (c instanceof ConstantClass)) {
constraintViolated(o, "The Constant at 'index' is not a ConstantClass, but '"+c+"'.");
}
@@ -1813,7 +1813,7 @@ public class InstConstraintVisitor exten
public void visitINVOKEINTERFACE(final INVOKEINTERFACE o) {
// Method is not native, otherwise pass 3 would not happen.
- int count = o.getCount();
+ final int count = o.getCount();
if (count == 0) {
constraintViolated(o, "The 'count' argument must not be 0.");
}
@@ -1823,22 +1823,22 @@ public class InstConstraintVisitor exten
// the o.getClassType(cpg) type has passed pass 2; see visitLoadClass(o).
- Type t = o.getType(cpg);
+ final Type t = o.getType(cpg);
if (t instanceof ObjectType) {
- String name = ((ObjectType)t).getClassName();
- Verifier v = VerifierFactory.getVerifier( name );
- VerificationResult vr = v.doPass2();
+ final String name = ((ObjectType)t).getClassName();
+ final Verifier v = VerifierFactory.getVerifier( name );
+ final VerificationResult vr = v.doPass2();
if (vr.getStatus() != VerificationResult.VERIFIED_OK) {
constraintViolated(o, "Class '"+name+"' is referenced, but cannot be loaded and resolved: '"+vr+"'.");
}
}
- Type[] argtypes = o.getArgumentTypes(cpg);
- int nargs = argtypes.length;
+ final Type[] argtypes = o.getArgumentTypes(cpg);
+ final int nargs = argtypes.length;
for (int i=nargs-1; i>=0; i--) {
- Type fromStack = stack().peek( (nargs-1) - i ); // 0 to nargs-1
+ final Type fromStack = stack().peek( (nargs-1) - i ); // 0 to nargs-1
Type fromDesc = argtypes[i];
if (fromDesc == Type.BOOLEAN ||
fromDesc == Type.BYTE ||
@@ -1848,7 +1848,7 @@ public class InstConstraintVisitor exten
}
if (! fromStack.equals(fromDesc)) {
if (fromStack instanceof ReferenceType && fromDesc instanceof ReferenceType) {
- ReferenceType rFromStack = (ReferenceType) fromStack;
+ final ReferenceType rFromStack = (ReferenceType) fromStack;
//ReferenceType rFromDesc = (ReferenceType) fromDesc;
// TODO: This can only be checked when using Staerk-et-al's "set of object types"
// instead of a "wider cast object type" created during verification.
@@ -1915,22 +1915,22 @@ public class InstConstraintVisitor exten
// the o.getClassType(cpg) type has passed pass 2; see visitLoadClass(o).
- Type t = o.getType(cpg);
+ final Type t = o.getType(cpg);
if (t instanceof ObjectType) {
- String name = ((ObjectType)t).getClassName();
- Verifier v = VerifierFactory.getVerifier( name );
- VerificationResult vr = v.doPass2();
+ final String name = ((ObjectType)t).getClassName();
+ final Verifier v = VerifierFactory.getVerifier( name );
+ final VerificationResult vr = v.doPass2();
if (vr.getStatus() != VerificationResult.VERIFIED_OK) {
constraintViolated(o, "Class '"+name+"' is referenced, but cannot be loaded and resolved: '"+vr+"'.");
}
}
- Type[] argtypes = o.getArgumentTypes(cpg);
- int nargs = argtypes.length;
+ final Type[] argtypes = o.getArgumentTypes(cpg);
+ final int nargs = argtypes.length;
for (int i=nargs-1; i>=0; i--) {
- Type fromStack = stack().peek( (nargs-1) - i ); // 0 to nargs-1
+ final Type fromStack = stack().peek( (nargs-1) - i ); // 0 to nargs-1
Type fromDesc = argtypes[i];
if (fromDesc == Type.BOOLEAN ||
fromDesc == Type.BYTE ||
@@ -1940,8 +1940,8 @@ public class InstConstraintVisitor exten
}
if (! fromStack.equals(fromDesc)) {
if (fromStack instanceof ReferenceType && fromDesc instanceof ReferenceType) {
- ReferenceType rFromStack = (ReferenceType) fromStack;
- ReferenceType rFromDesc = (ReferenceType) fromDesc;
+ final ReferenceType rFromStack = (ReferenceType) fromStack;
+ final ReferenceType rFromDesc = (ReferenceType) fromDesc;
// TODO: This can only be checked using Staerk-et-al's "set of object types", not
// using a "wider cast object type".
if ( ! rFromStack.isAssignmentCompatibleWith(rFromDesc) ) {
@@ -1986,12 +1986,12 @@ public class InstConstraintVisitor exten
}
- String theClass = o.getClassName(cpg);
+ final String theClass = o.getClassName(cpg);
if ( ! Repository.instanceOf(objref_classname, theClass) ) {
constraintViolated(o, "The 'objref' item '"+objref+"' does not implement '"+theClass+"' as expected.");
}
- } catch (ClassNotFoundException e) {
+ } catch (final ClassNotFoundException e) {
// FIXME: maybe not the best way to handle this
throw new AssertionViolatedException("Missing class: " + e, e);
}
@@ -2005,21 +2005,21 @@ public class InstConstraintVisitor exten
try {
// Method is not native, otherwise pass 3 would not happen.
- Type t = o.getType(cpg);
+ final Type t = o.getType(cpg);
if (t instanceof ObjectType) {
- String name = ((ObjectType)t).getClassName();
- Verifier v = VerifierFactory.getVerifier( name );
- VerificationResult vr = v.doPass2();
+ final String name = ((ObjectType)t).getClassName();
+ final Verifier v = VerifierFactory.getVerifier( name );
+ final VerificationResult vr = v.doPass2();
if (vr.getStatus() != VerificationResult.VERIFIED_OK) {
constraintViolated(o, "Class '"+name+"' is referenced, but cannot be loaded and resolved: '"+vr+"'.");
}
}
- Type[] argtypes = o.getArgumentTypes(cpg);
- int nargs = argtypes.length;
+ final Type[] argtypes = o.getArgumentTypes(cpg);
+ final int nargs = argtypes.length;
for (int i=nargs-1; i>=0; i--) {
- Type fromStack = stack().peek( (nargs-1) - i ); // 0 to nargs-1
+ final Type fromStack = stack().peek( (nargs-1) - i ); // 0 to nargs-1
Type fromDesc = argtypes[i];
if (fromDesc == Type.BOOLEAN ||
fromDesc == Type.BYTE ||
@@ -2029,8 +2029,8 @@ public class InstConstraintVisitor exten
}
if (! fromStack.equals(fromDesc)) {
if (fromStack instanceof ReferenceType && fromDesc instanceof ReferenceType) {
- ReferenceType rFromStack = (ReferenceType) fromStack;
- ReferenceType rFromDesc = (ReferenceType) fromDesc;
+ final ReferenceType rFromStack = (ReferenceType) fromStack;
+ final ReferenceType rFromDesc = (ReferenceType) fromDesc;
// TODO: This check can possibly only be done using Staerk-et-al's "set of object types"
// instead of a "wider cast object type" created during verification.
if ( ! rFromStack.isAssignmentCompatibleWith(rFromDesc) ) {
@@ -2044,7 +2044,7 @@ public class InstConstraintVisitor exten
}
}
}
- } catch (ClassNotFoundException e) {
+ } catch (final ClassNotFoundException e) {
// FIXME: maybe not the best way to handle this
throw new AssertionViolatedException("Missing class: " + e, e);
}
@@ -2058,22 +2058,22 @@ public class InstConstraintVisitor exten
try {
// the o.getClassType(cpg) type has passed pass 2; see visitLoadClass(o).
- Type t = o.getType(cpg);
+ final Type t = o.getType(cpg);
if (t instanceof ObjectType) {
- String name = ((ObjectType)t).getClassName();
- Verifier v = VerifierFactory.getVerifier( name );
- VerificationResult vr = v.doPass2();
+ final String name = ((ObjectType)t).getClassName();
+ final Verifier v = VerifierFactory.getVerifier( name );
+ final VerificationResult vr = v.doPass2();
if (vr.getStatus() != VerificationResult.VERIFIED_OK) {
constraintViolated(o, "Class '"+name+"' is referenced, but cannot be loaded and resolved: '"+vr+"'.");
}
}
- Type[] argtypes = o.getArgumentTypes(cpg);
- int nargs = argtypes.length;
+ final Type[] argtypes = o.getArgumentTypes(cpg);
+ final int nargs = argtypes.length;
for (int i=nargs-1; i>=0; i--) {
- Type fromStack = stack().peek( (nargs-1) - i ); // 0 to nargs-1
+ final Type fromStack = stack().peek( (nargs-1) - i ); // 0 to nargs-1
Type fromDesc = argtypes[i];
if (fromDesc == Type.BOOLEAN ||
fromDesc == Type.BYTE ||
@@ -2083,8 +2083,8 @@ public class InstConstraintVisitor exten
}
if (! fromStack.equals(fromDesc)) {
if (fromStack instanceof ReferenceType && fromDesc instanceof ReferenceType) {
- ReferenceType rFromStack = (ReferenceType) fromStack;
- ReferenceType rFromDesc = (ReferenceType) fromDesc;
+ final ReferenceType rFromStack = (ReferenceType) fromStack;
+ final ReferenceType rFromDesc = (ReferenceType) fromDesc;
// TODO: This can possibly only be checked when using Staerk-et-al's "set of object types" instead
// of a single "wider cast object type" created during verification.
if ( ! rFromStack.isAssignmentCompatibleWith(rFromDesc) ) {
@@ -2116,14 +2116,14 @@ public class InstConstraintVisitor exten
}
}
- String objref_classname = ((ObjectType) objref).getClassName();
+ final String objref_classname = ((ObjectType) objref).getClassName();
- String theClass = o.getClassName(cpg);
+ final String theClass = o.getClassName(cpg);
if ( ! Repository.instanceOf(objref_classname, theClass) ) {
constraintViolated(o, "The 'objref' item '"+objref+"' does not implement '"+theClass+"' as expected.");
}
- } catch (ClassNotFoundException e) {
+ } catch (final ClassNotFoundException e) {
// FIXME: maybe not the best way to handle this
throw new AssertionViolatedException("Missing class: " + e, e);
}
@@ -2311,7 +2311,7 @@ public class InstConstraintVisitor exten
if (! (stack().peek(1) instanceof ArrayType)) {
constraintViolated(o, "Stack next-to-top must be of type long[] but is '"+stack().peek(1)+"'.");
}
- Type t = ((ArrayType) (stack().peek(1))).getBasicType();
+ final Type t = ((ArrayType) (stack().peek(1))).getBasicType();
if (t != Type.LONG) {
constraintViolated(o, "Stack next-to-top must be of type long[] but is '"+stack().peek(1)+"'.");
}
@@ -2345,7 +2345,7 @@ public class InstConstraintVisitor exten
if (! (stack().peek(2) instanceof ArrayType)) {
constraintViolated(o, "Stack next-to-next-to-top must be of type long[] but is '"+stack().peek(2)+"'.");
}
- Type t = ((ArrayType) (stack().peek(2))).getBasicType();
+ final Type t = ((ArrayType) (stack().peek(2))).getBasicType();
if (t != Type.LONG) {
constraintViolated(o, "Stack next-to-next-to-top must be of type long[] but is '"+stack().peek(2)+"'.");
}
@@ -2379,7 +2379,7 @@ public class InstConstraintVisitor exten
public void visitLDC(final LDC o) {
// visitCPInstruction is called first.
- Constant c = cpg.getConstant(o.getIndex());
+ final Constant c = cpg.getConstant(o.getIndex());
if (! ( ( c instanceof ConstantInteger) ||
( c instanceof ConstantFloat ) ||
( c instanceof ConstantString ) ||
@@ -2396,7 +2396,7 @@ public class InstConstraintVisitor exten
public void visitLDC_W(final LDC_W o) {
// visitCPInstruction is called first.
- Constant c = cpg.getConstant(o.getIndex());
+ final Constant c = cpg.getConstant(o.getIndex());
if (! ( ( c instanceof ConstantInteger) ||
( c instanceof ConstantFloat ) ||
( c instanceof ConstantString ) ||
@@ -2414,7 +2414,7 @@ public class InstConstraintVisitor exten
public void visitLDC2_W(final LDC2_W o) {
// visitCPInstruction is called first.
- Constant c = cpg.getConstant(o.getIndex());
+ final Constant c = cpg.getConstant(o.getIndex());
if (! ( ( c instanceof ConstantLong) ||
( c instanceof ConstantDouble ) ) ) {
constraintViolated(o,
@@ -2617,7 +2617,7 @@ public class InstConstraintVisitor exten
*/
@Override
public void visitMULTIANEWARRAY(final MULTIANEWARRAY o) {
- int dimensions = o.getDimensions();
+ final int dimensions = o.getDimensions();
// Dimensions argument is okay: see Pass 3a.
for (int i=0; i<dimensions; i++) {
if (stack().peek(i) != Type.INT) {
@@ -2636,21 +2636,21 @@ public class InstConstraintVisitor exten
//visitCPInstruction(CPInstruction) has been called before.
//visitLoadClass(LoadClass) has been called before.
- Type t = o.getType(cpg);
+ final Type t = o.getType(cpg);
if (! (t instanceof ReferenceType)) {
throw new AssertionViolatedException("NEW.getType() returning a non-reference type?!");
}
if (! (t instanceof ObjectType)) {
constraintViolated(o, "Expecting a class type (ObjectType) to work on. Found: '"+t+"'.");
}
- ObjectType obj = (ObjectType) t;
+ final ObjectType obj = (ObjectType) t;
//e.g.: Don't instantiate interfaces
try {
if (! obj.referencesClassExact()) {
constraintViolated(o, "Expecting a class type (ObjectType) to work on. Found: '"+obj+"'.");
}
- } catch (ClassNotFoundException e) {
+ } catch (final ClassNotFoundException e) {
constraintViolated(o, "Expecting a class type (ObjectType) to work on. Found: '"+obj+"'." + " which threw " + e);
}
}
@@ -2702,21 +2702,21 @@ public class InstConstraintVisitor exten
public void visitPUTFIELD(final PUTFIELD o) {
try {
- Type objectref = stack().peek(1);
+ final Type objectref = stack().peek(1);
if (! ( (objectref instanceof ObjectType) || (objectref == Type.NULL) ) ) {
constraintViolated(o,
"Stack next-to-top should be an object reference that's not an array reference, but is '"+objectref+"'.");
}
- String field_name = o.getFieldName(cpg);
+ final String field_name = o.getFieldName(cpg);
- JavaClass jc = Repository.lookupClass(getObjectType(o).getClassName());
- Field[] fields = jc.getFields();
+ final JavaClass jc = Repository.lookupClass(getObjectType(o).getClassName());
+ final Field[] fields = jc.getFields();
Field f = null;
- for (Field field : fields) {
+ for (final Field field : fields) {
if (field.getName().equals(field_name)) {
- Type f_type = Type.getType(field.getSignature());
- Type o_type = o.getType(cpg);
+ final Type f_type = Type.getType(field.getSignature());
+ final Type o_type = o.getType(cpg);
/* TODO: Check if assignment compatibility is sufficient.
* What does Sun do?
*/
@@ -2730,8 +2730,8 @@ public class InstConstraintVisitor exten
throw new AssertionViolatedException("Field '" + field_name + "' not found in " + jc.getClassName());
}
- Type value = stack().peek();
- Type t = Type.getType(f.getSignature());
+ final Type value = stack().peek();
+ final Type t = Type.getType(f.getSignature());
Type shouldbe = t;
if (shouldbe == Type.BOOLEAN ||
shouldbe == Type.BYTE ||
@@ -2762,19 +2762,19 @@ public class InstConstraintVisitor exten
}
if (f.isProtected()) {
- ObjectType classtype = getObjectType(o);
- ObjectType curr = ObjectType.getInstance(mg.getClassName());
+ final ObjectType classtype = getObjectType(o);
+ final ObjectType curr = ObjectType.getInstance(mg.getClassName());
if ( classtype.equals(curr) ||
curr.subclassOf(classtype) ) {
- Type tp = stack().peek(1);
+ final Type tp = stack().peek(1);
if (tp == Type.NULL) {
return;
}
if (! (tp instanceof ObjectType) ) {
constraintViolated(o, "The 'objectref' must refer to an object that's not an array. Found instead: '"+tp+"'.");
}
- ObjectType objreftype = (ObjectType) tp;
+ final ObjectType objreftype = (ObjectType) tp;
if (! ( objreftype.equals(curr) ||
objreftype.subclassOf(curr) ) ) {
constraintViolated(o,
@@ -2790,7 +2790,7 @@ public class InstConstraintVisitor exten
constraintViolated(o, "Referenced field '"+f+"' is static which it shouldn't be.");
}
- } catch (ClassNotFoundException e) {
+ } catch (final ClassNotFoundException e) {
// FIXME: maybe not the best way to handle this
throw new AssertionViolatedException("Missing class: " + e, e);
}
@@ -2802,14 +2802,14 @@ public class InstConstraintVisitor exten
@Override
public void visitPUTSTATIC(final PUTSTATIC o) {
try {
- String field_name = o.getFieldName(cpg);
- JavaClass jc = Repository.lookupClass(getObjectType(o).getClassName());
- Field[] fields = jc.getFields();
+ final String field_name = o.getFieldName(cpg);
+ final JavaClass jc = Repository.lookupClass(getObjectType(o).getClassName());
+ final Field[] fields = jc.getFields();
Field f = null;
- for (Field field : fields) {
+ for (final Field field : fields) {
if (field.getName().equals(field_name)) {
- Type f_type = Type.getType(field.getSignature());
- Type o_type = o.getType(cpg);
+ final Type f_type = Type.getType(field.getSignature());
+ final Type o_type = o.getType(cpg);
/* TODO: Check if assignment compatibility is sufficient.
* What does Sun do?
*/
@@ -2822,8 +2822,8 @@ public class InstConstraintVisitor exten
if (f == null) {
throw new AssertionViolatedException("Field '" + field_name + "' not found in " + jc.getClassName());
}
- Type value = stack().peek();
- Type t = Type.getType(f.getSignature());
+ final Type value = stack().peek();
+ final Type t = Type.getType(f.getSignature());
Type shouldbe = t;
if (shouldbe == Type.BOOLEAN ||
shouldbe == Type.BYTE ||
@@ -2855,7 +2855,7 @@ public class InstConstraintVisitor exten
// TODO: Interface fields may be assigned to only once. (Hard to implement in
// JustIce's execution model). This may only happen in <clinit>, see Pass 3a.
- } catch (ClassNotFoundException e) {
+ } catch (final ClassNotFoundException e) {
// FIXME: maybe not the best way to handle this
throw new AssertionViolatedException("Missing class: " + e, e);
}
@@ -2900,7 +2900,7 @@ public class InstConstraintVisitor exten
if (! (stack().peek(1) instanceof ArrayType)) {
constraintViolated(o, "Stack next-to-top must be of type short[] but is '"+stack().peek(1)+"'.");
}
- Type t = ((ArrayType) (stack().peek(1))).getBasicType();
+ final Type t = ((ArrayType) (stack().peek(1))).getBasicType();
if (t != Type.SHORT) {
constraintViolated(o, "Stack next-to-top must be of type short[] but is '"+stack().peek(1)+"'.");
}
@@ -2921,7 +2921,7 @@ public class InstConstraintVisitor exten
if (! (stack().peek(2) instanceof ArrayType)) {
constraintViolated(o, "Stack next-to-next-to-top must be of type short[] but is '"+stack().peek(2)+"'.");
}
- Type t = ((ArrayType) (stack().peek(2))).getBasicType();
+ final Type t = ((ArrayType) (stack().peek(2))).getBasicType();
if (t != Type.SHORT) {
constraintViolated(o, "Stack next-to-next-to-top must be of type short[] but is '"+stack().peek(2)+"'.");
}
Modified: commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/LocalVariables.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/LocalVariables.java?rev=1749603&r1=1749602&r2=1749603&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/LocalVariables.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/LocalVariables.java Tue Jun 21 20:50:19 2016
@@ -50,7 +50,7 @@ public class LocalVariables implements C
*/
@Override
public Object clone() {
- LocalVariables lvs = new LocalVariables(locals.length);
+ final LocalVariables lvs = new LocalVariables(locals.length);
for (int i=0; i<locals.length; i++) {
lvs.locals[i] = this.locals[i];
}
@@ -103,7 +103,7 @@ public class LocalVariables implements C
if (!(o instanceof LocalVariables)) {
return false;
}
- LocalVariables lv = (LocalVariables) o;
+ final LocalVariables lv = (LocalVariables) o;
if (this.locals.length != lv.locals.length) {
return false;
}
@@ -159,7 +159,7 @@ public class LocalVariables implements C
}
if ((locals[i] instanceof ReferenceType) && (lv.locals[i] instanceof ReferenceType)) {
if (! locals[i].equals(lv.locals[i])) { // needed in case of two UninitializedObjectType instances
- Type sup = ((ReferenceType) locals[i]).getFirstCommonSuperclass((ReferenceType) (lv.locals[i]));
+ final Type sup = ((ReferenceType) locals[i]).getFirstCommonSuperclass((ReferenceType) (lv.locals[i]));
if (sup != null) {
locals[i] = sup;
@@ -183,7 +183,7 @@ public class LocalVariables implements C
locals[i] = Type.UNKNOWN;
}
}
- } catch (ClassNotFoundException e) {
+ } catch (final ClassNotFoundException e) {
// FIXME: maybe not the best way to handle this
throw new AssertionViolatedException("Missing class: " + e, e);
}
@@ -194,7 +194,7 @@ public class LocalVariables implements C
*/
@Override
public String toString() {
- StringBuilder sb = new StringBuilder();
+ final StringBuilder sb = new StringBuilder();
for (int i=0; i<locals.length; i++) {
sb.append(Integer.toString(i));
sb.append(": ");
Modified: commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/OperandStack.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/OperandStack.java?rev=1749603&r1=1749602&r2=1749603&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/OperandStack.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/OperandStack.java Tue Jun 21 20:50:19 2016
@@ -63,7 +63,7 @@ public class OperandStack implements Clo
*/
@Override
public Object clone() {
- OperandStack newstack = new OperandStack(this.maxStack);
+ final OperandStack newstack = new OperandStack(this.maxStack);
@SuppressWarnings("unchecked") // OK because this.stack is the same type
final ArrayList<Type> clone = (ArrayList<Type>) this.stack.clone();
newstack.stack = clone;
@@ -92,7 +92,7 @@ public class OperandStack implements Clo
if (!(o instanceof OperandStack)) {
return false;
}
- OperandStack s = (OperandStack) o;
+ final OperandStack s = (OperandStack) o;
return this.stack.equals(s.stack);
}
@@ -138,7 +138,7 @@ public class OperandStack implements Clo
* Returns the element on top of the stack. The element is popped off the stack.
*/
public Type pop() {
- Type e = stack.remove(size()-1);
+ final Type e = stack.remove(size()-1);
return e;
}
@@ -197,7 +197,7 @@ public class OperandStack implements Clo
*/
@Override
public String toString() {
- StringBuilder sb = new StringBuilder();
+ final StringBuilder sb = new StringBuilder();
sb.append("Slots used: ");
sb.append(slotsUsed());
sb.append(" MaxStack: ");
@@ -253,7 +253,7 @@ public class OperandStack implements Clo
}
}
}
- } catch (ClassNotFoundException e) {
+ } catch (final ClassNotFoundException e) {
// FIXME: maybe not the best way to handle this
throw new AssertionViolatedException("Missing class: " + e, e);
}
Modified: commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/Pass3bVerifier.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/Pass3bVerifier.java?rev=1749603&r1=1749602&r2=1749603&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/Pass3bVerifier.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/bcel/verifier/structurals/Pass3bVerifier.java Tue Jun 21 20:50:19 2016
@@ -129,7 +129,7 @@ public final class Pass3bVerifier extend
private void circulationPump(final MethodGen m,final ControlFlowGraph cfg, final InstructionContext start,
final Frame vanillaFrame, final InstConstraintVisitor icv, final ExecutionVisitor ev) {
final Random random = new Random();
- InstructionContextQueue icq = new InstructionContextQueue();
+ final InstructionContextQueue icq = new InstructionContextQueue();
start.execute(vanillaFrame, new ArrayList<InstructionContext>(), icv, ev);
// new ArrayList() <=> no Instruction was executed before
@@ -141,7 +141,7 @@ public final class Pass3bVerifier extend
InstructionContext u;
ArrayList<InstructionContext> ec;
if (!DEBUG) {
- int r = random.nextInt(icq.size());
+ final int r = random.nextInt(icq.size());
u = icq.getIC(r);
ec = icq.getEC(r);
icq.remove(r);
@@ -153,8 +153,10 @@ public final class Pass3bVerifier extend
}
@SuppressWarnings("unchecked") // ec is of type ArrayList<InstructionContext>
+ final
ArrayList<InstructionContext> oldchain = (ArrayList<InstructionContext>) (ec.clone());
@SuppressWarnings("unchecked") // ec is of type ArrayList<InstructionContext>
+ final
ArrayList<InstructionContext> newchain = (ArrayList<InstructionContext>) (ec.clone());
newchain.add(u);
@@ -162,9 +164,9 @@ public final class Pass3bVerifier extend
//System.err.println(u);
// We can only follow _one_ successor, the one after the
// JSR that was recently executed.
- RET ret = (RET) (u.getInstruction().getInstruction());
- ReturnaddressType t = (ReturnaddressType) u.getOutFrame(oldchain).getLocals().get(ret.getIndex());
- InstructionContext theSuccessor = cfg.contextOf(t.getTarget());
+ final RET ret = (RET) (u.getInstruction().getInstruction());
+ final ReturnaddressType t = (ReturnaddressType) u.getOutFrame(oldchain).getLocals().get(ret.getIndex());
+ final InstructionContext theSuccessor = cfg.contextOf(t.getTarget());
// Sanity check
InstructionContext lastJSR = null;
@@ -188,7 +190,7 @@ public final class Pass3bVerifier extend
if (lastJSR == null) {
throw new AssertionViolatedException("RET without a JSR before in ExecutionChain?! EC: '"+oldchain+"'.");
}
- JsrInstruction jsr = (JsrInstruction) (lastJSR.getInstruction().getInstruction());
+ final JsrInstruction jsr = (JsrInstruction) (lastJSR.getInstruction().getInstruction());
if ( theSuccessor != (cfg.contextOf(jsr.physicalSuccessor())) ) {
throw new AssertionViolatedException("RET '"+u.getInstruction()+"' info inconsistent: jump back to '"+
theSuccessor+"' or '"+cfg.contextOf(jsr.physicalSuccessor())+"'?");
@@ -196,6 +198,7 @@ public final class Pass3bVerifier extend
if (theSuccessor.execute(u.getOutFrame(oldchain), newchain, icv, ev)) {
@SuppressWarnings("unchecked") // newchain is already of type ArrayList<InstructionContext>
+ final
ArrayList<InstructionContext> newchainClone = (ArrayList<InstructionContext>) newchain.clone();
icq.add(theSuccessor, newchainClone);
}
@@ -203,10 +206,11 @@ public final class Pass3bVerifier extend
else{// "not a ret"
// Normal successors. Add them to the queue of successors.
- InstructionContext[] succs = u.getSuccessors();
- for (InstructionContext v : succs) {
+ final InstructionContext[] succs = u.getSuccessors();
+ for (final InstructionContext v : succs) {
if (v.execute(u.getOutFrame(oldchain), newchain, icv, ev)) {
@SuppressWarnings("unchecked") // newchain is already of type ArrayList<InstructionContext>
+ final
ArrayList<InstructionContext> newchainClone = (ArrayList<InstructionContext>) newchain.clone();
icq.add(v, newchainClone);
}
@@ -215,9 +219,9 @@ public final class Pass3bVerifier extend
// Exception Handlers. Add them to the queue of successors.
// [subroutines are never protected; mandated by JustIce]
- ExceptionHandler[] exc_hds = u.getExceptionHandlers();
- for (ExceptionHandler exc_hd : exc_hds) {
- InstructionContext v = cfg.contextOf(exc_hd.getHandlerStart());
+ final ExceptionHandler[] exc_hds = u.getExceptionHandlers();
+ for (final ExceptionHandler exc_hd : exc_hds) {
+ final InstructionContext v = cfg.contextOf(exc_hd.getHandlerStart());
// TODO: the "oldchain" and "newchain" is used to determine the subroutine
// we're in (by searching for the last JSR) by the InstructionContext
// implementation. Therefore, we should not use this chain mechanism
@@ -243,18 +247,18 @@ public final class Pass3bVerifier extend
InstructionHandle ih = start.getInstruction();
do{
if ((ih.getInstruction() instanceof ReturnInstruction) && (!(cfg.isDead(ih)))) {
- InstructionContext ic = cfg.contextOf(ih);
+ final InstructionContext ic = cfg.contextOf(ih);
// TODO: This is buggy, we check only the top-level return instructions this way.
// Maybe some maniac returns from a method when in a subroutine?
- Frame f = ic.getOutFrame(new ArrayList<InstructionContext>());
- LocalVariables lvs = f.getLocals();
+ final Frame f = ic.getOutFrame(new ArrayList<InstructionContext>());
+ final LocalVariables lvs = f.getLocals();
for (int i=0; i<lvs.maxLocals(); i++) {
if (lvs.get(i) instanceof UninitializedObjectType) {
this.addMessage("Warning: ReturnInstruction '"+ic+
"' may leave method with an uninitialized object in the local variables array '"+lvs+"'.");
}
}
- OperandStack os = f.getStack();
+ final OperandStack os = f.getStack();
for (int i=0; i<os.size(); i++) {
if (os.peek(i) instanceof UninitializedObjectType) {
this.addMessage("Warning: ReturnInstruction '"+ic+
@@ -263,7 +267,7 @@ public final class Pass3bVerifier extend
}
//see JVM $4.8.2
Type returnedType = null;
- OperandStack inStack = ic.getInFrame().getStack();
+ final OperandStack inStack = ic.getInFrame().getStack();
if (inStack.size() >= 1) {
returnedType = inStack.peek();
} else {
@@ -276,7 +280,7 @@ public final class Pass3bVerifier extend
if (!((ReferenceType) returnedType).isCastableTo(m.getReturnType())) {
invalidReturnTypeError(returnedType, m);
}
- } catch (ClassNotFoundException e) {
+ } catch (final ClassNotFoundException e) {
// Don't know what do do now, so raise RuntimeException
throw new RuntimeException(e);
}
@@ -320,34 +324,34 @@ public final class Pass3bVerifier extend
JavaClass jc;
try {
jc = Repository.lookupClass(myOwner.getClassName());
- } catch (ClassNotFoundException e) {
+ } catch (final ClassNotFoundException e) {
// FIXME: maybe not the best way to handle this
throw new AssertionViolatedException("Missing class: " + e, e);
}
- ConstantPoolGen constantPoolGen = new ConstantPoolGen(jc.getConstantPool());
+ final ConstantPoolGen constantPoolGen = new ConstantPoolGen(jc.getConstantPool());
// Init Visitors
- InstConstraintVisitor icv = new InstConstraintVisitor();
+ final InstConstraintVisitor icv = new InstConstraintVisitor();
icv.setConstantPoolGen(constantPoolGen);
- ExecutionVisitor ev = new ExecutionVisitor();
+ final ExecutionVisitor ev = new ExecutionVisitor();
ev.setConstantPoolGen(constantPoolGen);
- Method[] methods = jc.getMethods(); // Method no "method_no" exists, we ran Pass3a before on it!
+ final Method[] methods = jc.getMethods(); // Method no "method_no" exists, we ran Pass3a before on it!
try{
- MethodGen mg = new MethodGen(methods[method_no], myOwner.getClassName(), constantPoolGen);
+ final MethodGen mg = new MethodGen(methods[method_no], myOwner.getClassName(), constantPoolGen);
icv.setMethodGen(mg);
////////////// DFA BEGINS HERE ////////////////
if (! (mg.isAbstract() || mg.isNative()) ) { // IF mg HAS CODE (See pass 2)
- ControlFlowGraph cfg = new ControlFlowGraph(mg);
+ final ControlFlowGraph cfg = new ControlFlowGraph(mg);
// Build the initial frame situation for this method.
- Frame f = new Frame(mg.getMaxLocals(),mg.getMaxStack());
+ final Frame f = new Frame(mg.getMaxLocals(),mg.getMaxStack());
if ( !mg.isStatic() ) {
if (mg.getName().equals(Const.CONSTRUCTOR_NAME)) {
Frame.setThis(new UninitializedObjectType(ObjectType.getInstance(jc.getClassName())));
@@ -358,7 +362,7 @@ public final class Pass3bVerifier extend
f.getLocals().set(0, ObjectType.getInstance(jc.getClassName()));
}
}
- Type[] argtypes = mg.getArgumentTypes();
+ final Type[] argtypes = mg.getArgumentTypes();
int twoslotoffset = 0;
for (int j=0; j<argtypes.length; j++) {
if (argtypes[j] == Type.SHORT || argtypes[j] == Type.BYTE ||
@@ -374,15 +378,15 @@ public final class Pass3bVerifier extend
circulationPump(mg,cfg, cfg.contextOf(mg.getInstructionList().getStart()), f, icv, ev);
}
}
- catch (VerifierConstraintViolatedException ce) {
+ catch (final VerifierConstraintViolatedException ce) {
ce.extendMessage("Constraint violated in method '"+methods[method_no]+"':\n","");
return new VerificationResult(VerificationResult.VERIFIED_REJECTED, ce.getMessage());
}
- catch (RuntimeException re) {
+ catch (final RuntimeException re) {
// These are internal errors
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
+ final StringWriter sw = new StringWriter();
+ final PrintWriter pw = new PrintWriter(sw);
re.printStackTrace(pw);
throw new AssertionViolatedException("Some RuntimeException occured while verify()ing class '"+jc.getClassName()+