private void dfsVisit(SootMethod m) { if (visited.contains(m)) { return; } visited.add(m); Iterator<MethodOrMethodContext> targets = new Targets(cg.edgesOutOf(m)); while (targets.hasNext()) { SootMethod target = (SootMethod) targets.next(); dfsVisit(target); } order.add(m); }
/** * Causes the QueueReader objects to be filled up with any methods that have become reachable since the last call. */ public void update() { while (edgeSource.hasNext()) { Edge e = edgeSource.next(); if (set.contains(e.getSrc())) { addMethod(e.getTgt()); } } while (unprocessedMethods.hasNext()) { MethodOrMethodContext m = unprocessedMethods.next(); Iterator<Edge> targets = cg.edgesOutOf(m); if (filter != null) { targets = filter.wrap(targets); } addMethods(new Targets(targets)); } }
Iterator targets = new Targets(explicitInvokesFilter.wrap(cg.edgesOutOf(s))); if (!targets.hasNext()) { continue;
Iterator targets = new Targets(instanceInvokesFilter.wrap(cg.edgesOutOf(s))); if (!targets.hasNext()) { continue;
private void dfsVisit( SootMethod m ) { if( visited.contains( m ) ) return; visited.add( m ); Iterator targets = new Targets( cg.edgesOutOf(m) ); while( targets.hasNext() ) { SootMethod target = (SootMethod) targets.next(); dfsVisit( target ); } order.add( m ); }
private void dfsVisit( SootMethod m ) { if( visited.contains( m ) ) return; visited.add( m ); Iterator targets = new Targets( cg.edgesOutOf(m) ); while( targets.hasNext() ) { SootMethod target = (SootMethod) targets.next(); dfsVisit( target ); } order.add( m ); }
/** Causes the QueueReader objects to be filled up with any methods * that have become reachable since the last call. */ public void update() { while(edgeSource.hasNext()) { Edge e = (Edge) edgeSource.next(); if( set.contains( e.getSrc() ) ) addMethod( e.getTgt() ); } while(unprocessedMethods.hasNext()) { MethodOrMethodContext m = (MethodOrMethodContext) unprocessedMethods.next(); Iterator<Edge> targets = cg.edgesOutOf( m ); if( filter != null ) targets = filter.wrap( targets ); addMethods( new Targets( targets ) ); } } /** Returns a QueueReader object containing all methods found reachable
/** Causes the QueueReader objects to be filled up with any methods * that have become reachable since the last call. */ public void update() { while(edgeSource.hasNext()) { Edge e = (Edge) edgeSource.next(); if( set.contains( e.getSrc() ) ) addMethod( e.getTgt() ); } while(unprocessedMethods.hasNext()) { MethodOrMethodContext m = (MethodOrMethodContext) unprocessedMethods.next(); Iterator<Edge> targets = cg.edgesOutOf( m ); if( filter != null ) targets = filter.wrap( targets ); addMethods( new Targets( targets ) ); } } /** Returns a QueueReader object containing all methods found reachable
addMethods(new Targets(targets));