Extracted private class and made it public.
This commit is contained in:
parent
52ea4af62c
commit
2dc6322356
|
@ -138,7 +138,7 @@ public class IntraprocNullPointerAnalysis<T extends ISSABasicBlock> {
|
|||
final NullPointerFrameWork<T> problem = new NullPointerFrameWork<T>(cfg, ir);
|
||||
final int[] paramValNum = ir.getParameterValueNumbers();
|
||||
|
||||
solver = new NullPointerSolver<T>(problem, maxVarNum, paramValNum, initialState);
|
||||
solver = new NullPointerSolver<T>(problem, maxVarNum, paramValNum, initialState, ir);
|
||||
|
||||
solver.solve(progress);
|
||||
|
||||
|
@ -199,44 +199,6 @@ public class IntraprocNullPointerAnalysis<T extends ISSABasicBlock> {
|
|||
}
|
||||
}
|
||||
|
||||
private class NullPointerSolver<B extends ISSABasicBlock> extends DataflowSolver<B, NullPointerState> {
|
||||
|
||||
private final int maxVarNum;
|
||||
private final ParameterState parameterState;
|
||||
|
||||
private NullPointerSolver(NullPointerFrameWork<B> problem, int maxVarNum, int[] paramVarNum) {
|
||||
this(problem, maxVarNum, paramVarNum, null);
|
||||
}
|
||||
|
||||
private NullPointerSolver(NullPointerFrameWork<B> problem, int maxVarNum, int[] paramVarNum, ParameterState initialState) {
|
||||
super(problem);
|
||||
this.maxVarNum = maxVarNum;
|
||||
this.parameterState = initialState;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.ibm.wala.dataflow.graph.DataflowSolver#makeEdgeVariable(java.lang.Object, java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
protected NullPointerState makeEdgeVariable(B src, B dst) {
|
||||
return new NullPointerState(maxVarNum, ir.getSymbolTable(), parameterState);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.ibm.wala.dataflow.graph.DataflowSolver#makeNodeVariable(java.lang.Object, boolean)
|
||||
*/
|
||||
@Override
|
||||
protected NullPointerState makeNodeVariable(B n, boolean IN) {
|
||||
return new NullPointerState(maxVarNum, ir.getSymbolTable(), parameterState);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected NullPointerState[] makeStmtRHS(int size) {
|
||||
return new NullPointerState[size];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private class NegativeCFGBuilderVisitor implements IVisitor {
|
||||
|
||||
private final Graph<T> deleted;
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2007 IBM Corporation.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM Corporation - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package com.ibm.wala.cfg.exc.intra;
|
||||
|
||||
import com.ibm.wala.dataflow.graph.DataflowSolver;
|
||||
import com.ibm.wala.ssa.IR;
|
||||
import com.ibm.wala.ssa.ISSABasicBlock;
|
||||
|
||||
/**
|
||||
* Intraprocedural dataflow analysis to detect impossible NullPointerExceptions.
|
||||
*
|
||||
* @author Juergen Graf <graf@kit.edu>
|
||||
*
|
||||
*/
|
||||
class NullPointerSolver<B extends ISSABasicBlock> extends DataflowSolver<B, NullPointerState> {
|
||||
|
||||
private final int maxVarNum;
|
||||
private final ParameterState parameterState;
|
||||
private final IR ir;
|
||||
|
||||
public NullPointerSolver(NullPointerFrameWork<B> problem, int maxVarNum, int[] paramVarNum, IR ir) {
|
||||
this(problem, maxVarNum, paramVarNum, null, ir);
|
||||
}
|
||||
|
||||
public NullPointerSolver(NullPointerFrameWork<B> problem, int maxVarNum, int[] paramVarNum, ParameterState initialState, IR ir) {
|
||||
super(problem);
|
||||
this.maxVarNum = maxVarNum;
|
||||
this.parameterState = initialState;
|
||||
this.ir = ir;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.ibm.wala.dataflow.graph.DataflowSolver#makeEdgeVariable(java.lang.Object, java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
protected NullPointerState makeEdgeVariable(B src, B dst) {
|
||||
return new NullPointerState(maxVarNum, ir.getSymbolTable(), parameterState);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.ibm.wala.dataflow.graph.DataflowSolver#makeNodeVariable(java.lang.Object, boolean)
|
||||
*/
|
||||
@Override
|
||||
protected NullPointerState makeNodeVariable(B n, boolean IN) {
|
||||
return new NullPointerState(maxVarNum, ir.getSymbolTable(), parameterState);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected NullPointerState[] makeStmtRHS(int size) {
|
||||
return new NullPointerState[size];
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue