public ConstantFlowFunction(IFDSTaintDomain<E> domain, Set<DomainElement> elts) { result = MutableSparseIntSet.make(TaintTransferFunctions.ZERO_SET); for (DomainElement de : elts) { result.add(domain.getMappedIndex(de)); } }
/** * @return a new sparse int set which adds j to s * @throws IllegalArgumentException if s == null */ public static IntSet add(IntSet s, int j) throws IllegalArgumentException { if (s == null) { throw new IllegalArgumentException("s == null"); } if (s instanceof SparseIntSet) { SparseIntSet sis = (SparseIntSet) s; return SparseIntSet.add(sis, j); } else { // really slow. optimize as needed. MutableSparseIntSet result = MutableSparseIntSet.make(s); result.add(j); return result; } }
/** * @return a new sparse int set which adds j to s * @throws IllegalArgumentException if s == null */ public static IntSet add(IntSet s, int j) throws IllegalArgumentException { if (s == null) { throw new IllegalArgumentException("s == null"); } if (s instanceof SparseIntSet) { SparseIntSet sis = (SparseIntSet) s; return SparseIntSet.add(sis, j); } else { // really slow. optimize as needed. MutableSparseIntSet result = MutableSparseIntSet.make(s); result.add(j); return result; } }
private OrdinalSet<InstanceKey> toOrdinalSet(InstanceKey[] ik) { MutableSparseIntSet s = MutableSparseIntSet.makeEmpty(); for (InstanceKey element : ik) { int index = instanceKeys.getMappedIndex(element); if (index != -1) { s.add(index); } else { assert index != -1 : "instance " + element + " not mapped!"; } } return new OrdinalSet<>(s, instanceKeys); }
private OrdinalSet<InstanceKey> toOrdinalSet(InstanceKey[] ik) { MutableSparseIntSet s = MutableSparseIntSet.makeEmpty(); for (InstanceKey element : ik) { int index = instanceKeys.getMappedIndex(element); if (index != -1) { s.add(index); } else { assert index != -1 : "instance " + element + " not mapped!"; } } return new OrdinalSet<>(s, instanceKeys); }
@Override public void set(int x, int value) { maxIndex = Math.max(maxIndex,x); int index = indices.getIndex(x); if (index == -1) { indices.add(x); index = indices.getIndex(x); ensureCapacity(indices.size() + 1); if (index < (data.length - 1)) { System.arraycopy(data, index, data, index + 1, indices.size() - index); } } data[index] = value; }
@Override public void set(int x, int value) { maxIndex = Math.max(maxIndex,x); int index = indices.getIndex(x); if (index == -1) { indices.add(x); index = indices.getIndex(x); ensureCapacity(indices.size() + 1); if (index < (data.length - 1)) { System.arraycopy(data, index, data, index + 1, indices.size() - index); } } data[index] = value; }
@Override public void set(int x, int value) { maxIndex = Math.max(maxIndex,x); int index = indices.getIndex(x); if (index == -1) { indices.add(x); index = indices.getIndex(x); ensureCapacity(indices.size() + 1); if (index < (data.length - 1)) { System.arraycopy(data, index, data, index + 1, indices.size() - index); } } data[index] = value; }
/** * TODO: optimize * */ public SparseIntSet toSparseIntSet() { MutableSparseIntSet result = MutableSparseIntSet.makeEmpty(); for (IntIterator it = intIterator(); it.hasNext();) { result.add(it.next()); } return result; }
/** * TODO: optimize * */ public SparseIntSet toSparseIntSet() { MutableSparseIntSet result = MutableSparseIntSet.makeEmpty(); for (IntIterator it = intIterator(); it.hasNext();) { result.add(it.next()); } return result; }
/** * TODO: optimize * */ public SparseIntSet toSparseIntSet() { MutableSparseIntSet result = MutableSparseIntSet.makeEmpty(); for (IntIterator it = intIterator(); it.hasNext();) { result.add(it.next()); } return result; }
@Override public IntSet getPredNodeNumbers(IExplodedBasicBlock node) { MutableSparseIntSet result = MutableSparseIntSet.makeEmpty(); for (IExplodedBasicBlock ebb : Iterator2Iterable.make(getPredNodes(node))) { result.add(getNumber(ebb)); } return result; }
@Override public IntSet getPredNodeNumbers(IExplodedBasicBlock node) { MutableSparseIntSet result = MutableSparseIntSet.makeEmpty(); for (IExplodedBasicBlock ebb : Iterator2Iterable.make(getPredNodes(node))) { result.add(getNumber(ebb)); } return result; }
@Override public IntSet getTargets(int d1) { // first, gen this statement int factNum = domain.getMappedIndex(cha.lookupClass(newInstr.getConcreteType())); assert factNum != -1; MutableSparseIntSet result = MutableSparseIntSet.makeEmpty(); result.add(factNum); // if incoming statement is some different statement that defs the same static field, kill it; otherwise, keep it if (d1 != factNum) { result.add(d1); } return result; }
@Override public IntSet getTargets(int d1) { System.out.println(ebb.toString()); System.out.println(d1); // first, gen this statement int factNum = domain.getMappedIndex(cha.lookupClass(putInstr.getDeclaredField().getDeclaringClass())); System.out.println(factNum); assert factNum != -1; MutableSparseIntSet result = MutableSparseIntSet.makeEmpty(); result.add(factNum); // if incoming statement is some different statement that defs the same static field, kill it; otherwise, keep it if (d1 != factNum) { result.add(d1); } return result; }
@Override public IntSet getTargets(int d1) { System.out.println("Invoke!"); // first, gen this statement int factNum = domain.getMappedIndex(cha.lookupClass(invInstr.getDeclaredTarget().getDeclaringClass())); assert factNum != -1; MutableSparseIntSet result = MutableSparseIntSet.makeEmpty(); result.add(factNum); // if incoming statement is some different statement that defs the same static field, kill it; otherwise, keep it if (d1 != factNum) { result.add(d1); } return result; }
@Override public IntSet getTargets(int d1) { // first, gen this statement int factNum = domain.getMappedIndex(cha.lookupClass(getInstr.getDeclaredField().getDeclaringClass())); assert factNum != -1; MutableSparseIntSet result = MutableSparseIntSet.makeEmpty(); result.add(factNum); // if incoming statement is some different statement that defs the same static field, kill it; otherwise, keep it if (d1 != factNum) { result.add(d1); } return result; }
@Override public IntIterator intIterator() { MutableSparseIntSet bits = MutableSparseIntSet.makeEmpty(); for (IntIterator pi = primaryImpl.intIterator(); pi.hasNext();) { int x = pi.next(); assert !bits.contains(x); bits.add(x); } for (IntIterator si = secondaryImpl.intIterator(); si.hasNext();) { int x = si.next(); assert bits.contains(x); bits.remove(x); } assert bits.isEmpty(); return primaryImpl.intIterator(); }
@Override public IntIterator intIterator() { MutableSparseIntSet bits = MutableSparseIntSet.makeEmpty(); for (IntIterator pi = primaryImpl.intIterator(); pi.hasNext();) { int x = pi.next(); assert !bits.contains(x); bits.add(x); } for (IntIterator si = secondaryImpl.intIterator(); si.hasNext();) { int x = si.next(); assert bits.contains(x); bits.remove(x); } assert bits.isEmpty(); return primaryImpl.intIterator(); }
@Override public IntIterator intIterator() { MutableSparseIntSet bits = MutableSparseIntSet.makeEmpty(); for (IntIterator pi = primaryImpl.intIterator(); pi.hasNext();) { int x = pi.next(); assert !bits.contains(x); bits.add(x); } for (IntIterator si = secondaryImpl.intIterator(); si.hasNext();) { int x = si.next(); assert bits.contains(x); bits.remove(x); } assert bits.isEmpty(); return primaryImpl.intIterator(); }