Skip to content

Commit

Permalink
Allow seed with weight
Browse files Browse the repository at this point in the history
  • Loading branch information
johspaeth committed Nov 25, 2017
1 parent 4f31f22 commit 49c8ce1
Show file tree
Hide file tree
Showing 8 changed files with 57 additions and 13 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
.DS_Store
*.project
*.classpath
*.iml
7 changes: 6 additions & 1 deletion Boomerang-PDS/src/main/java/boomerang/WeightedBoomerang.java
Original file line number Diff line number Diff line change
Expand Up @@ -641,7 +641,12 @@ private void forwardSolve(ForwardQuery query) {
new SingleNode<Node<Statement, Val>>(source), Field.array(),
new SingleNode<Node<Statement, Val>>(source)));
}
solver.solve(source);
if(query instanceof WeightedForwardQuery){
WeightedForwardQuery<W> q = (WeightedForwardQuery<W>) query;
solver.solve(source,q.weight());
} else{
solver.solve(source);
}
}
}
}
Expand Down
20 changes: 20 additions & 0 deletions Boomerang-PDS/src/main/java/boomerang/WeightedForwardQuery.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package boomerang;

import boomerang.jimple.Statement;
import boomerang.jimple.Val;
import wpds.impl.Weight;

public class WeightedForwardQuery<W extends Weight> extends ForwardQuery{

private final W weight;

public WeightedForwardQuery(Statement stmt, Val variable, W weight) {
super(stmt, variable);
this.weight = weight;
}

public W weight(){
return weight;
};

}
14 changes: 6 additions & 8 deletions Boomerang-PDS/src/test/java/test/core/AbstractBoomerangTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,19 @@
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.Set;

import org.junit.Rule;
import org.junit.rules.Timeout;

import com.google.common.base.Joiner;
import com.google.common.base.Optional;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;

import boomerang.BackwardQuery;
import boomerang.Boomerang;
import boomerang.DefaultBoomerangOptions;
import boomerang.WeightedBoomerang;
import boomerang.ForwardQuery;
import boomerang.IntAndStringBoomerangOptions;
import boomerang.Query;
Expand Down Expand Up @@ -50,7 +49,6 @@
import sync.pds.solver.EmptyStackWitnessListener;
import sync.pds.solver.OneWeightFunctions;
import sync.pds.solver.WeightFunctions;
import sync.pds.solver.nodes.AllocNode;
import sync.pds.solver.nodes.INode;
import sync.pds.solver.nodes.Node;
import sync.pds.solver.nodes.SingleNode;
Expand Down Expand Up @@ -147,7 +145,7 @@ public Optional<? extends Query> test(Stmt unit, Stmt callSite) {
}
}
}
return Optional.empty();
return Optional.absent();
}
}
private class IntegerAllocationSiteOf implements ValueOfInterestInUnit {
Expand Down Expand Up @@ -175,7 +173,7 @@ public Optional<? extends Query> test(Stmt unit, Stmt callSite) {
}
}

return Optional.empty();
return Optional.absent();
}
}
private class FirstArgumentOf implements ValueOfInterestInUnit {
Expand All @@ -190,13 +188,13 @@ public FirstArgumentOf(String methodNameMatcher) {
public Optional<? extends Query> test(Stmt unit, Stmt callSite) {
Stmt stmt = (Stmt) unit;
if (!(stmt.containsInvokeExpr()))
return Optional.empty();
return Optional.absent();
InvokeExpr invokeExpr = stmt.getInvokeExpr();
if (!invokeExpr.getMethod().getName().matches(methodNameMatcher))
return Optional.empty();
return Optional.absent();
Value param = invokeExpr.getArg(0);
if (!(param instanceof Local))
return Optional.empty();
return Optional.absent();
return Optional.<Query>of(new BackwardQuery(new Statement(unit, icfg.getMethodOf(unit)),
new Val(param, icfg.getMethodOf(unit))));
}
Expand Down
6 changes: 6 additions & 0 deletions PathExpression/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,11 @@
<artifactId>guava</artifactId>
<version>23.5-jre</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
10 changes: 6 additions & 4 deletions SynchronizedPDS/src/main/java/sync/pds/solver/SyncPDSSolver.java
Original file line number Diff line number Diff line change
Expand Up @@ -398,17 +398,19 @@ public void onWeightAdded(Transition<Stmt, INode<Fact>> t, W w, WeightedPAutomat
}
}

public void solve(Node<Stmt, Fact> curr) {
public void solve(Node<Stmt, Fact> curr, W weight) {
Transition<Field, INode<Node<Stmt,Fact>>> fieldTrans = new Transition<Field, INode<Node<Stmt,Fact>>>(asFieldFact(curr), emptyField(), fieldAutomaton.getInitialState());
fieldAutomaton.addTransition(fieldTrans);
Transition<Stmt, INode<Fact>> callTrans = createInitialCallTransition(curr);
callAutomaton
.addTransition(callTrans);
.addWeightForTransition(callTrans,weight);
WitnessNode<Stmt, Fact, Field> startNode = new WitnessNode<>(curr.stmt(),curr.fact());
computeValues(callTrans, getCallWeights().getOne());
computeValues(callTrans, weight);
processNode(startNode);
}

public void solve(Node<Stmt, Fact> curr) {
solve(curr,getCallWeights().getOne());
}
private void computeValues(Transition<Stmt, INode<Fact>> callTrans, W weight) {
callAutomaton.computeValues(callTrans,weight);
}
Expand Down
6 changes: 6 additions & 0 deletions WPDS/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,11 @@
<artifactId>PathExpression</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
6 changes: 6 additions & 0 deletions idealPDS/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,11 @@
<artifactId>IDEViz</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

0 comments on commit 49c8ce1

Please sign in to comment.