fixes for slicing of graphs built with the field-based builder
This commit is contained in:
parent
46a483f320
commit
eb7748a745
|
@ -933,7 +933,19 @@ public class PDG implements NumberedGraph<Statement> {
|
|||
private void createCalleeParams() {
|
||||
if (paramCalleeStatements == null) {
|
||||
ArrayList<Statement> list = new ArrayList<Statement>();
|
||||
for (int i = 1; i <= node.getMethod().getNumberOfParameters(); i++) {
|
||||
int paramCount = node.getMethod().getNumberOfParameters();
|
||||
|
||||
for (Iterator<CGNode> callers = cg.getPredNodes(node); callers.hasNext(); ) {
|
||||
CGNode caller = callers.next();
|
||||
IR callerIR = caller.getIR();
|
||||
for (Iterator<CallSiteReference> sites = cg.getPossibleSites(caller, node); sites.hasNext(); ) {
|
||||
for (SSAAbstractInvokeInstruction inst : callerIR.getCalls(sites.next())) {
|
||||
paramCount = Math.max(paramCount, inst.getNumberOfParameters()-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 1; i <= paramCount; i++) {
|
||||
ParamCallee s = new ParamCallee(node, i);
|
||||
delegate.addNode(s);
|
||||
list.add(s);
|
||||
|
|
|
@ -700,7 +700,7 @@ public class SDG extends AbstractNumberedGraph<Statement> implements ISDG {
|
|||
// don't track reflection into reflective invokes
|
||||
return false;
|
||||
}
|
||||
for (int i = 0; i < calleeNode.getMethod().getNumberOfParameters(); i++) {
|
||||
for (int i = 0; i < call.getNumberOfParameters(); i++) {
|
||||
if (call.getUse(i) == caller.getValueNumber()) {
|
||||
if (callee.getValueNumber() == i + 1) {
|
||||
return true;
|
||||
|
|
Loading…
Reference in New Issue