Replace simple lambdas with method references wherever possible
This commit is contained in:
parent
790d37781b
commit
74e0640771
|
@ -34,6 +34,7 @@ import com.ibm.wala.ipa.cha.ClassHierarchyException;
|
|||
import com.ibm.wala.ipa.cha.ClassHierarchyFactory;
|
||||
import com.ibm.wala.ipa.cha.IClassHierarchy;
|
||||
import com.ibm.wala.ssa.SSAOptions;
|
||||
import com.ibm.wala.ssa.SymbolTable;
|
||||
import com.ibm.wala.types.ClassLoaderReference;
|
||||
import com.ibm.wala.util.collections.HashSetFactory;
|
||||
import com.ibm.wala.util.config.FileOfClasses;
|
||||
|
@ -158,7 +159,7 @@ public abstract class JavaSourceAnalysisEngine<I extends InstanceKey> extends Ab
|
|||
AnalysisOptions options = new AnalysisOptions(getScope(), entrypoints);
|
||||
|
||||
SSAOptions ssaOptions = new SSAOptions();
|
||||
ssaOptions.setDefaultValues((symtab, valueNumber) -> symtab.getDefaultValue(valueNumber));
|
||||
ssaOptions.setDefaultValues(SymbolTable::getDefaultValue);
|
||||
|
||||
options.setSSAOptions(ssaOptions);
|
||||
|
||||
|
|
|
@ -76,11 +76,11 @@ public class AstJavaSlicer extends Slicer {
|
|||
}
|
||||
|
||||
public static Set<Statement> gatherAssertions(CallGraph CG, Collection<CGNode> partialRoots) {
|
||||
return gatherStatements(CG, partialRoots, o -> o instanceof AstAssertInstruction);
|
||||
return gatherStatements(CG, partialRoots, AstAssertInstruction.class::isInstance);
|
||||
}
|
||||
|
||||
public static Set<Statement> gatherMonitors(CallGraph CG, Collection<CGNode> partialRoots) {
|
||||
return gatherStatements(CG, partialRoots, o -> o instanceof SSAMonitorInstruction);
|
||||
return gatherStatements(CG, partialRoots, SSAMonitorInstruction.class::isInstance);
|
||||
}
|
||||
|
||||
public static Set<Statement> gatherWrites(CallGraph CG, Collection<CGNode> partialRoots) {
|
||||
|
|
|
@ -57,7 +57,7 @@ public abstract class TestSimplePageCallGraphShapeRhino extends TestSimplePageCa
|
|||
@Before
|
||||
public void setUp() {
|
||||
com.ibm.wala.cast.js.ipa.callgraph.JSCallGraphUtil.setTranslatorFactory(new CAstRhinoTranslatorFactory());
|
||||
WebUtil.setFactory(() -> TestSimplePageCallGraphShapeRhino.this.getParser());
|
||||
WebUtil.setFactory(TestSimplePageCallGraphShapeRhino.this::getParser);
|
||||
JSSourceExtractor.USE_TEMP_NAME = false;
|
||||
// JSSourceExtractor.DELETE_UPON_EXIT = false;
|
||||
}
|
||||
|
|
|
@ -338,7 +338,7 @@ public abstract class TestPointerAnalyses {
|
|||
if (hg.containsNode(proto)) {
|
||||
return
|
||||
new MapIterator<>(hg.getSuccNodes(proto),
|
||||
object -> (ObjectVertex)object);
|
||||
ObjectVertex.class::cast);
|
||||
} else {
|
||||
return EmptyIterator.instance();
|
||||
}
|
||||
|
|
|
@ -121,7 +121,7 @@ public class FlowGraph implements Iterable<Vertex> {
|
|||
GraphReachability<Vertex, T> optimistic_closure =
|
||||
new GraphReachability<>(
|
||||
new InvertedGraph<>(pruned_flowgraph),
|
||||
o -> type.isInstance(o)
|
||||
type::isInstance
|
||||
);
|
||||
|
||||
optimistic_closure.solve(monitor);
|
||||
|
@ -533,7 +533,7 @@ public class FlowGraph implements Iterable<Vertex> {
|
|||
|
||||
@Override
|
||||
public Collection<Object> getReachableInstances(Set<Object> roots) {
|
||||
return DFS.getReachableNodes(this, roots, o -> o instanceof ObjectVertex);
|
||||
return DFS.getReachableNodes(this, roots, ObjectVertex.class::isInstance);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -27,7 +27,7 @@ import com.ibm.wala.util.collections.Pair;
|
|||
|
||||
public class DefaultSourceExtractor extends DomLessSourceExtractor{
|
||||
|
||||
public static Supplier<JSSourceExtractor> factory = () -> new DefaultSourceExtractor();
|
||||
public static Supplier<JSSourceExtractor> factory = DefaultSourceExtractor::new;
|
||||
|
||||
protected static class HtmlCallBack extends DomLessSourceExtractor.HtmlCallback{
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ public class DomLessSourceExtractor extends JSSourceExtractor {
|
|||
private static final Pattern LEGAL_JS_IDENTIFIER_REGEXP = Pattern.compile("^[a-zA-Z$_][a-zA-Z\\d$_]*$");
|
||||
private static final Pattern LEGAL_JS_KEYWORD_REGEXP = Pattern.compile("^((break)|(case)|(catch)|(continue)|(debugger)|(default)|(delete)|(do)|(else)|(finally)|(for)|(function)|(if)|(in)|(instanceof)|(new)|(return)|(switch)|(this)|(throw)|(try)|(typeof)|(var)|(void)|(while)|(with))$");
|
||||
|
||||
public static Supplier<JSSourceExtractor> factory = () -> new DomLessSourceExtractor();
|
||||
public static Supplier<JSSourceExtractor> factory = DomLessSourceExtractor::new;
|
||||
|
||||
protected interface IGeneratorCallback extends IHtmlCallback {
|
||||
void writeToFinalRegion(SourceRegion finalRegion);
|
||||
|
|
|
@ -28,7 +28,7 @@ public class WebUtil {
|
|||
|
||||
public static final String preamble = "preamble.js";
|
||||
|
||||
private static IHtmlParserFactory factory = () -> new JerichoHtmlParser();
|
||||
private static IHtmlParserFactory factory = JerichoHtmlParser::new;
|
||||
|
||||
public static void setFactory(IHtmlParserFactory factory) {
|
||||
WebUtil.factory = factory;
|
||||
|
|
|
@ -74,7 +74,7 @@ public class CallGraph2JSON {
|
|||
|
||||
for(Iterator<CallSiteReference> iter = nd.iterateCallSites(); iter.hasNext();) {
|
||||
CallSiteReference callsite = iter.next();
|
||||
Set<IMethod> targets = Util.mapToSet(cg.getPossibleTargets(nd, callsite), nd1 -> nd1.getMethod());
|
||||
Set<IMethod> targets = Util.mapToSet(cg.getPossibleTargets(nd, callsite), CGNode::getMethod);
|
||||
serializeCallSite(method, callsite, targets, edges);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@ public class LexicalModRef {
|
|||
*/
|
||||
public Map<CGNode, OrdinalSet<Pair<CGNode, String>>> computeLexicalRef() {
|
||||
Map<CGNode, Collection<Pair<CGNode, String>>> scan = CallGraphTransitiveClosure.collectNodeResults(cg,
|
||||
n -> scanNodeForLexReads(n));
|
||||
this::scanNodeForLexReads);
|
||||
return CallGraphTransitiveClosure.transitiveClosure(cg, scan);
|
||||
}
|
||||
|
||||
|
@ -66,7 +66,7 @@ public class LexicalModRef {
|
|||
*/
|
||||
public Map<CGNode, OrdinalSet<Pair<CGNode, String>>> computeLexicalMod() {
|
||||
Map<CGNode, Collection<Pair<CGNode, String>>> scan = CallGraphTransitiveClosure.collectNodeResults(cg,
|
||||
n -> scanNodeForLexWrites(n));
|
||||
this::scanNodeForLexWrites);
|
||||
return CallGraphTransitiveClosure.transitiveClosure(cg, scan);
|
||||
}
|
||||
|
||||
|
|
|
@ -1262,7 +1262,7 @@ public abstract class AstTranslator extends CAstVisitor<AstTranslator.WalkContex
|
|||
}
|
||||
}
|
||||
} else {
|
||||
transferEdges(liveBlocks, icfg, (src, dst) -> addNormalEdge(src, dst), (src, dst) -> addExceptionalEdge(src, dst));
|
||||
transferEdges(liveBlocks, icfg, this::addNormalEdge, this::addExceptionalEdge);
|
||||
}
|
||||
|
||||
int x = 0;
|
||||
|
|
|
@ -86,7 +86,7 @@ public abstract class CAstAbstractLoader implements IClassLoader {
|
|||
}
|
||||
}
|
||||
return false;
|
||||
}), object -> object.getKey());
|
||||
}), Map.Entry::getKey);
|
||||
}
|
||||
|
||||
public Iterator<ModuleEntry> getModulesWithParseErrors() {
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
package com.ibm.wala.core.tests.basic;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
@ -41,7 +40,7 @@ public class PathFinderTest {
|
|||
}
|
||||
|
||||
private static DFSAllPathsFinder<String> makeFinder(Graph<String> g, String start, final String end) {
|
||||
return new DFSAllPathsFinder<>(g, start, (Predicate<String>) o -> end.equals(o));
|
||||
return new DFSAllPathsFinder<>(g, start, end::equals);
|
||||
}
|
||||
|
||||
private static void checkPaths(DFSAllPathsFinder<String> paths, int expectedCount) {
|
||||
|
|
|
@ -242,7 +242,7 @@ public class CallGraphTest extends WalaTestCase {
|
|||
}
|
||||
}
|
||||
}
|
||||
return () -> result.iterator();
|
||||
return result::iterator;
|
||||
}
|
||||
|
||||
@Test public void testPrimordial() throws ClassHierarchyException, IllegalArgumentException, CancelException, IOException {
|
||||
|
@ -294,7 +294,7 @@ public class CallGraphTest extends WalaTestCase {
|
|||
result.add(new DefaultEntrypoint(m, cha));
|
||||
}
|
||||
}
|
||||
return () -> result.iterator();
|
||||
return result::iterator;
|
||||
}
|
||||
|
||||
public static void doCallGraphs(AnalysisOptions options, IAnalysisCacheView cache, IClassHierarchy cha, AnalysisScope scope)
|
||||
|
|
|
@ -147,7 +147,7 @@ public abstract class DynamicCallGraphTestBase extends WalaTestCase {
|
|||
}
|
||||
|
||||
protected void checkEdges(CallGraph staticCG) throws IOException {
|
||||
checkEdges(staticCG, (x) -> true );
|
||||
checkEdges(staticCG, x -> true);
|
||||
}
|
||||
|
||||
protected void checkEdges(CallGraph staticCG, Predicate<MethodReference> filter) throws IOException {
|
||||
|
@ -167,7 +167,7 @@ public abstract class DynamicCallGraphTestBase extends WalaTestCase {
|
|||
}
|
||||
|
||||
protected void checkNodes(CallGraph staticCG) throws IOException {
|
||||
checkNodes(staticCG, (x) -> true);
|
||||
checkNodes(staticCG, x -> true);
|
||||
}
|
||||
|
||||
protected void checkNodes(CallGraph staticCG, Predicate<MethodReference> filter) throws IOException {
|
||||
|
|
|
@ -14,7 +14,6 @@ import java.io.File;
|
|||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import java.util.Properties;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import com.ibm.wala.core.tests.callGraph.CallGraphTestUtil;
|
||||
import com.ibm.wala.core.tests.slicer.SlicerTest;
|
||||
|
@ -249,8 +248,7 @@ public class PDFSlice {
|
|||
* return a view of the sdg restricted to the statements in the slice
|
||||
*/
|
||||
public static Graph<Statement> pruneSDG(SDG<InstanceKey> sdg, final Collection<Statement> slice) {
|
||||
Predicate<Statement> f = o -> slice.contains(o);
|
||||
return GraphSlicer.prune(sdg, f);
|
||||
return GraphSlicer.prune(sdg, slice::contains);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -135,7 +135,7 @@ public class BasicHeapGraph<T extends InstanceKey> extends HeapGraphImpl<T> {
|
|||
};
|
||||
|
||||
final IBinaryNaturalRelation pred = computePredecessors(nodeMgr);
|
||||
final IntFunction<Object> toNode = i -> nodeMgr.getNode(i);
|
||||
final IntFunction<Object> toNode = nodeMgr::getNode;
|
||||
|
||||
this.G = new AbstractNumberedGraph<Object>() {
|
||||
private final NumberedEdgeManager<Object> edgeMgr = new NumberedEdgeManager<Object>() {
|
||||
|
|
|
@ -52,8 +52,7 @@ public abstract class HeapGraphImpl<T extends InstanceKey> implements HeapGraph<
|
|||
|
||||
@Override
|
||||
public Collection<Object> getReachableInstances(Set<Object> roots) {
|
||||
Predicate<Object> f = o -> (o instanceof InstanceKey);
|
||||
return DFS.getReachableNodes(this, roots, f);
|
||||
return DFS.getReachableNodes(this, roots, InstanceKey.class::isInstance);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -216,12 +216,12 @@ public class MethodHandles {
|
|||
|
||||
@Override
|
||||
public Iterator<FieldReference> iterateFieldsRead(CGNode node) {
|
||||
return iterateFields(node, o -> o instanceof SSAGetInstruction);
|
||||
return iterateFields(node, SSAGetInstruction.class::isInstance);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterator<FieldReference> iterateFieldsWritten(CGNode node) {
|
||||
return iterateFields(node, o -> o instanceof SSAPutInstruction);
|
||||
return iterateFields(node, SSAPutInstruction.class::isInstance);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -347,15 +347,15 @@ public final class ShrikeCTMethod extends ShrikeBTMethod implements IBytecodeMet
|
|||
}
|
||||
|
||||
private CodeReader getCodeReader() {
|
||||
return getReader("Code", iter -> new CodeReader(iter));
|
||||
return getReader("Code", CodeReader::new);
|
||||
}
|
||||
|
||||
private ExceptionsReader getExceptionReader() {
|
||||
return getReader("Exceptions", iter -> new ExceptionsReader(iter));
|
||||
return getReader("Exceptions", ExceptionsReader::new);
|
||||
}
|
||||
|
||||
private SignatureReader getSignatureReader() {
|
||||
return getReader("Signature", iter -> new SignatureReader(iter));
|
||||
return getReader("Signature", SignatureReader::new);
|
||||
}
|
||||
|
||||
private AnnotationsReader getAnnotationsReader(AnnotationType type) {
|
||||
|
|
|
@ -343,7 +343,7 @@ public final class ShrikeClass extends JVMClass<IClassLoader> {
|
|||
ClassReader.AttrIterator attrs = new ClassReader.AttrIterator();
|
||||
getReader().initClassAttributeIterator(attrs);
|
||||
|
||||
return getReader(attrs, "SourceFile", iter -> new SourceFileReader(iter));
|
||||
return getReader(attrs, "SourceFile", SourceFileReader::new);
|
||||
}
|
||||
|
||||
private AnnotationsReader getFieldAnnotationsReader(boolean runtimeInvisible, int fieldIndex) throws InvalidClassFileException {
|
||||
|
|
|
@ -125,7 +125,7 @@ public abstract class AbstractAnalysisEngine<I extends InstanceKey> implements A
|
|||
*/
|
||||
private HeapGraph heapGraph;
|
||||
|
||||
private EntrypointBuilder entrypointBuilder = (scope, cha) -> makeDefaultEntrypoints(scope, cha);
|
||||
private EntrypointBuilder entrypointBuilder = this::makeDefaultEntrypoints;
|
||||
|
||||
protected abstract CallGraphBuilder<I> getCallGraphBuilder(IClassHierarchy cha, AnalysisOptions options, IAnalysisCacheView cache2);
|
||||
|
||||
|
|
|
@ -95,7 +95,7 @@ public class ICFGSupergraph implements ISupergraph<BasicBlockInContext<IExploded
|
|||
|
||||
@Override
|
||||
public Iterator<? extends BasicBlockInContext<IExplodedBasicBlock>> getCalledNodes(BasicBlockInContext<IExplodedBasicBlock> call) {
|
||||
final Predicate<BasicBlockInContext<IExplodedBasicBlock>> isEntryFilter = o -> o.isEntryBlock();
|
||||
final Predicate<BasicBlockInContext<IExplodedBasicBlock>> isEntryFilter = BasicBlockInContext::isEntryBlock;
|
||||
return new FilterIterator<BasicBlockInContext<IExplodedBasicBlock>>(getSuccNodes(call), isEntryFilter);
|
||||
}
|
||||
|
||||
|
|
|
@ -285,7 +285,7 @@ public class DemandRefinementPointsTo extends AbstractDemandPointsTo {
|
|||
throw new IllegalArgumentException("p2SetWithStates == null");
|
||||
}
|
||||
Collection<T> finalP2Set = Iterator2Collection.toSet(new MapIterator<WithState<T>, T>(p2SetWithStates.iterator(),
|
||||
object -> object.getWrapped()));
|
||||
WithState::getWrapped));
|
||||
return finalP2Set;
|
||||
}
|
||||
|
||||
|
@ -504,7 +504,7 @@ public class DemandRefinementPointsTo extends AbstractDemandPointsTo {
|
|||
*/
|
||||
@Override
|
||||
public Collection<InstanceKey> getPointsTo(PointerKey pk) {
|
||||
return getPointsTo(pk, (InstanceKey k) -> { return false; }).snd;
|
||||
return getPointsTo(pk, k -> { return false; }).snd;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -512,7 +512,7 @@ public class DemandRefinementPointsTo extends AbstractDemandPointsTo {
|
|||
* <code>null</code> if the points-to set can't be computed in the allocated budget
|
||||
*/
|
||||
public Collection<InstanceKeyAndState> getPointsToWithStates(PointerKey pk) {
|
||||
return getPointsToWithStates(pk, (InstanceKey k) -> { return false; }).snd;
|
||||
return getPointsToWithStates(pk, k -> { return false; }).snd;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -377,7 +377,7 @@ public class AnalysisScope {
|
|||
private JarFile getRtJar() {
|
||||
return RtJar.getRtJar(
|
||||
new MapIterator<Module,JarFile>(
|
||||
new FilterIterator<Module>(getModules(getPrimordialLoader()).iterator(), M -> M instanceof JarFileModule), M -> ((JarFileModule) M).getJarFile()));
|
||||
new FilterIterator<Module>(getModules(getPrimordialLoader()).iterator(), JarFileModule.class::isInstance), M -> ((JarFileModule) M).getJarFile()));
|
||||
}
|
||||
|
||||
public String getJavaLibraryVersion() throws IllegalStateException {
|
||||
|
|
|
@ -162,7 +162,7 @@ public class CHACallGraph extends BasicCallGraph<CHAContextInterpreter> {
|
|||
new MapIterator<IMethod,CGNode>(
|
||||
new FilterIterator<IMethod>(
|
||||
getPossibleTargets(site),
|
||||
o -> isRelevantMethod(o)
|
||||
this::isRelevantMethod
|
||||
),
|
||||
object -> {
|
||||
try {
|
||||
|
|
|
@ -52,7 +52,7 @@ public class PartialCallGraph extends DelegatingGraph<CGNode> implements CallGra
|
|||
* @param nodes set of nodes that will be included in the new, partial call graph
|
||||
*/
|
||||
public static PartialCallGraph make(final CallGraph cg, final Collection<CGNode> partialRoots, final Collection<CGNode> nodes) {
|
||||
Graph<CGNode> partialGraph = GraphSlicer.prune(cg, o -> nodes.contains(o));
|
||||
Graph<CGNode> partialGraph = GraphSlicer.prune(cg, nodes::contains);
|
||||
|
||||
return new PartialCallGraph(cg, partialRoots, partialGraph);
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ public class PartialCallGraph extends DelegatingGraph<CGNode> implements CallGra
|
|||
*/
|
||||
public static PartialCallGraph make(CallGraph cg, Collection<CGNode> partialRoots) {
|
||||
final Set<CGNode> nodes = DFS.getReachableNodes(cg, partialRoots);
|
||||
Graph<CGNode> partialGraph = GraphSlicer.prune(cg, o -> nodes.contains(o));
|
||||
Graph<CGNode> partialGraph = GraphSlicer.prune(cg, nodes::contains);
|
||||
|
||||
return new PartialCallGraph(cg, partialRoots, partialGraph);
|
||||
}
|
||||
|
@ -113,7 +113,7 @@ public class PartialCallGraph extends DelegatingGraph<CGNode> implements CallGra
|
|||
|
||||
@Override
|
||||
public Iterator<CGNode> iterateNodes(IntSet nodes) {
|
||||
return new FilterIterator<CGNode>(cg.iterateNodes(nodes), o -> containsNode(o));
|
||||
return new FilterIterator<CGNode>(cg.iterateNodes(nodes), this::containsNode);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -167,7 +167,7 @@ public class Util {
|
|||
}
|
||||
}
|
||||
}
|
||||
return () -> result.iterator();
|
||||
return result::iterator;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -200,7 +200,7 @@ public class PointsToMap {
|
|||
* @return {@link Iterator}<{@link PointerKey}>
|
||||
*/
|
||||
public Iterator<PointerKey> getTransitiveRoots() {
|
||||
return new FilterIterator<PointerKey>(iterateKeys(), o -> isTransitiveRoot(o));
|
||||
return new FilterIterator<PointerKey>(iterateKeys(), this::isTransitiveRoot);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -270,7 +270,7 @@ public class PropagationGraph implements IFixedPointSystem<PointsToSetVariable>
|
|||
|
||||
@Override
|
||||
public Iterator<AbstractStatement> getStatements() {
|
||||
Iterator<INodeWithNumber> it = new FilterIterator<>(delegateGraph.iterator(), x -> x instanceof AbstractStatement);
|
||||
Iterator<INodeWithNumber> it = new FilterIterator<>(delegateGraph.iterator(), AbstractStatement.class::isInstance);
|
||||
Iterator<AbstractStatement> converted = new MapIterator<>(it, AbstractStatement.class::cast);
|
||||
return new CompoundIterator<AbstractStatement>(converted, new GlobalImplicitIterator());
|
||||
}
|
||||
|
@ -757,7 +757,7 @@ public class PropagationGraph implements IFixedPointSystem<PointsToSetVariable>
|
|||
|
||||
@Override
|
||||
public Iterator<PointsToSetVariable> getVariables() {
|
||||
Iterator<INodeWithNumber> it = new FilterIterator<>(delegateGraph.iterator(), x -> x instanceof IVariable);
|
||||
Iterator<INodeWithNumber> it = new FilterIterator<>(delegateGraph.iterator(), IVariable.class::isInstance);
|
||||
Iterator<PointsToSetVariable> converted = new MapIterator<INodeWithNumber, PointsToSetVariable>(it, PointsToSetVariable.class::cast);
|
||||
return converted;
|
||||
}
|
||||
|
|
|
@ -175,7 +175,7 @@ public class TypeBasedHeapModel implements HeapModel {
|
|||
@Override
|
||||
public Iterator<PointerKey> iteratePointerKeys() {
|
||||
initAllPKeys();
|
||||
Iterator<Object> filtered = new FilterIterator<Object>(pKeys.values().iterator(), o -> o instanceof PointerKey);
|
||||
Iterator<Object> filtered = new FilterIterator<Object>(pKeys.values().iterator(), PointerKey.class::isInstance);
|
||||
return new MapIterator<Object, PointerKey>(filtered, PointerKey.class::cast);
|
||||
}
|
||||
|
||||
|
|
|
@ -879,7 +879,7 @@ public abstract class AbstractInterproceduralCFG<T extends ISSABasicBlock> imple
|
|||
return new FilterIterator<BasicBlockInContext<T>>(m, isCall);
|
||||
}
|
||||
|
||||
private final Predicate<BasicBlockInContext<T>> isCall = o -> hasCall(o);
|
||||
private final Predicate<BasicBlockInContext<T>> isCall = this::hasCall;
|
||||
|
||||
public boolean isReturn(BasicBlockInContext<T> bb) throws IllegalArgumentException {
|
||||
if (bb == null) {
|
||||
|
|
|
@ -201,7 +201,7 @@ public class PrunedCFG<I, T extends IBasicBlock<I>> extends AbstractNumberedGrap
|
|||
}
|
||||
|
||||
private Iterator<T> filterNodes(Iterator<T> nodeIterator) {
|
||||
return new FilterIterator<T>(nodeIterator, o -> subset.contains(o));
|
||||
return new FilterIterator<T>(nodeIterator, subset::contains);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -644,7 +644,7 @@ public class HeapReachingDefs<T extends InstanceKey> {
|
|||
return null;
|
||||
} else {
|
||||
// only static fields are actually killed
|
||||
Predicate<PointerKey> staticFilter = o -> o instanceof StaticFieldKey;
|
||||
Predicate<PointerKey> staticFilter = StaticFieldKey.class::isInstance;
|
||||
final Collection<PointerKey> kill = Iterator2Collection
|
||||
.toSet(new FilterIterator<PointerKey>(mod.iterator(), staticFilter));
|
||||
if (kill.isEmpty()) {
|
||||
|
|
|
@ -97,8 +97,7 @@ class SDGSupergraph implements ISupergraph<Statement, PDG<? extends InstanceKey>
|
|||
public Iterator<? extends Statement> getCalledNodes(Statement call) {
|
||||
switch (call.getKind()) {
|
||||
case NORMAL:
|
||||
Predicate<Statement> f = s -> isEntry(s);
|
||||
return new FilterIterator<Statement>(getSuccNodes(call), f);
|
||||
return new FilterIterator<Statement>(getSuccNodes(call), this::isEntry);
|
||||
case PARAM_CALLER:
|
||||
case HEAP_PARAM_CALLER:
|
||||
return getSuccNodes(call);
|
||||
|
|
|
@ -67,7 +67,7 @@ public class JUnitEntryPoints {
|
|||
}
|
||||
}
|
||||
}
|
||||
return () -> result.iterator();
|
||||
return result::iterator;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -115,7 +115,7 @@ public class JUnitEntryPoints {
|
|||
}
|
||||
}
|
||||
}
|
||||
return () -> entryPts.iterator();
|
||||
return entryPts::iterator;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -79,7 +79,7 @@ public class PDFViewUtil {
|
|||
SSACFG.BasicBlock bb = (SSACFG.BasicBlock) it.next();
|
||||
labelMap.put(bb, getNodeLabel(ir, bb));
|
||||
}
|
||||
NodeDecorator<ISSABasicBlock> labels = bb -> labelMap.get(bb);
|
||||
NodeDecorator<ISSABasicBlock> labels = labelMap::get;
|
||||
return labels;
|
||||
}
|
||||
|
||||
|
|
|
@ -100,7 +100,7 @@ public class DalvikCallGraphTestBase extends DynamicCallGraphTestBase {
|
|||
new MapIterator<SSAInstruction,NewSiteReference>(
|
||||
new FilterIterator<SSAInstruction>(
|
||||
node.getIR().iterateAllInstructions(),
|
||||
t -> t instanceof SSANewInstruction),
|
||||
SSANewInstruction.class::isInstance),
|
||||
object -> ((SSANewInstruction)object).getNewSite()
|
||||
);
|
||||
}
|
||||
|
|
|
@ -188,12 +188,12 @@ public class AndroidManifestXMLReader {
|
|||
Collections.EMPTY_SET,
|
||||
IntentItem.class),
|
||||
ACTION("action",
|
||||
() -> Collections.emptySet(),
|
||||
Collections::emptySet,
|
||||
EnumSet.of(Attr.NAME),
|
||||
FinalItem.class), //(new ITagDweller() {
|
||||
//public Tag getTag() { return Tag.ACTION; }})),
|
||||
DATA("data",
|
||||
() -> Collections.emptySet(),
|
||||
Collections::emptySet,
|
||||
EnumSet.of(Attr.SCHEME, Attr.HOST, Attr.PATH, Attr.MIME),
|
||||
FinalItem.class), //(new ITagDweller() {
|
||||
//public Tag getTag() { return Tag.DATA; }})),
|
||||
|
|
|
@ -19,6 +19,7 @@ import com.ibm.wala.ipa.callgraph.Entrypoint;
|
|||
import com.ibm.wala.ipa.callgraph.IAnalysisCacheView;
|
||||
import com.ibm.wala.ipa.callgraph.propagation.InstanceKey;
|
||||
import com.ibm.wala.ssa.SSAOptions;
|
||||
import com.ibm.wala.ssa.SymbolTable;
|
||||
import com.ibm.wala.types.ClassLoaderReference;
|
||||
import com.ibm.wala.util.debug.Assertions;
|
||||
import com.ibm.wala.util.io.FileProvider;
|
||||
|
@ -69,7 +70,7 @@ abstract public class EclipseProjectSourceAnalysisEngine<P, I extends InstanceKe
|
|||
AnalysisOptions options = new AnalysisOptions(getScope(), entrypoints);
|
||||
|
||||
SSAOptions ssaOptions = new SSAOptions();
|
||||
ssaOptions.setDefaultValues((symtab, valueNumber) -> symtab.getDefaultValue(valueNumber));
|
||||
ssaOptions.setDefaultValues(SymbolTable::getDefaultValue);
|
||||
|
||||
options.setSSAOptions(ssaOptions);
|
||||
|
||||
|
|
|
@ -95,7 +95,7 @@ public class CopyWriter {
|
|||
final ArrayList<ZipEntry> entries = new ArrayList<>();
|
||||
|
||||
instrumenter = new OfflineInstrumenter();
|
||||
instrumenter.setManifestBuilder(ze -> entries.add(ze));
|
||||
instrumenter.setManifestBuilder(entries::add);
|
||||
instrumenter.parseStandardArgs(args);
|
||||
instrumenter.setJARComment(copyright);
|
||||
instrumenter.beginTraversal();
|
||||
|
|
|
@ -58,7 +58,7 @@ public final class BitVectorIntersection extends AbstractMeetOperator<BitVectorV
|
|||
return NOT_CHANGED;
|
||||
} else {
|
||||
final BitVectorVariable bvv = new BitVectorVariable();
|
||||
intersect.foreach(x -> bvv.set(x));
|
||||
intersect.foreach(bvv::set);
|
||||
lhs.copyState(bvv);
|
||||
|
||||
return CHANGED;
|
||||
|
|
|
@ -94,7 +94,7 @@ public class DefaultFixedPointSystem<T extends IVariable<T>> implements IFixedPo
|
|||
@Override
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public Iterator<AbstractStatement> getStatements() {
|
||||
return new FilterIterator(graph.iterator(), x -> x instanceof AbstractStatement);
|
||||
return new FilterIterator(graph.iterator(), AbstractStatement.class::isInstance);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -46,7 +46,7 @@ public class IteratorUtil {
|
|||
|
||||
public static <T, S extends T> Iterator<S> filter(Iterator<T> iterator, final Class<S> cls) {
|
||||
return new MapIterator<>(
|
||||
new FilterIterator<>(iterator, o -> cls.isInstance(o)),
|
||||
new FilterIterator<>(iterator, cls::isInstance),
|
||||
new Function<T,S>() {
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
|
|
|
@ -283,7 +283,7 @@ public class Util {
|
|||
* @return <code>true</code> if the sets intersect; <code>false</code> otherwise
|
||||
*/
|
||||
public static <T> boolean intersecting(final Set<T> s1, final Set<T> s2) {
|
||||
return forSome(s1, obj -> s2.contains(obj));
|
||||
return forSome(s1, s2::contains);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -234,11 +234,11 @@ public class GraphSlicer {
|
|||
}
|
||||
|
||||
private void setPredNodes(E N) {
|
||||
preds.put(N, getConnected(N, object -> G.getPredNodes(object)));
|
||||
preds.put(N, getConnected(N, G::getPredNodes));
|
||||
}
|
||||
|
||||
private void setSuccNodes(E N) {
|
||||
succs.put(N, getConnected(N, object -> G.getSuccNodes(object)));
|
||||
succs.put(N, getConnected(N, G::getSuccNodes));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -83,7 +83,7 @@ public class BFSPathFinder<T> {
|
|||
if (!G.containsNode(src)) {
|
||||
throw new IllegalArgumentException("src is not in graph " + src);
|
||||
}
|
||||
this.filter = o -> target.equals(o);
|
||||
this.filter = target::equals;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -103,7 +103,7 @@ public class BFSPathFinder<T> {
|
|||
this.G = G;
|
||||
this.roots = new NonNullSingletonIterator<>(src);
|
||||
|
||||
this.filter = o -> ts.contains(o);
|
||||
this.filter = ts::contains;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -120,7 +120,7 @@ public class BFSPathFinder<T> {
|
|||
}
|
||||
this.G = G;
|
||||
this.roots = sources;
|
||||
this.filter = o -> target.equals(o);
|
||||
this.filter = target::equals;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue