@Override public void visitCheckCast(SSACheckCastInstruction instruction) { Set<IClass> types = HashSetFactory.make(); for(TypeReference t : instruction.getDeclaredResultTypes()) { IClass cls = cha.lookupClass(t); if (cls == null) { return; } else { types.add(cls); } } FilteredPointerKey.MultipleClassesFilter filter = new FilteredPointerKey.MultipleClassesFilter(types.toArray(new IClass[0])); PointerKey result = heapModel.getPointerKeyForLocal(node, instruction.getResult()); PointerKey value = heapModel.getPointerKeyForLocal(node, instruction.getVal()); g.addNode(result); g.addNode(value); g.addEdge(result, value, AssignLabel.make(filter)); }
@Override public void visitCheckCast(SSACheckCastInstruction instruction) { Set<IClass> types = HashSetFactory.make(); for(TypeReference t : instruction.getDeclaredResultTypes()) { IClass cls = cha.lookupClass(t); if (cls == null) { return; } else { types.add(cls); } } FilteredPointerKey.MultipleClassesFilter filter = new FilteredPointerKey.MultipleClassesFilter(types.toArray(new IClass[0])); PointerKey result = heapModel.getPointerKeyForLocal(node, instruction.getResult()); PointerKey value = heapModel.getPointerKeyForLocal(node, instruction.getVal()); g.addNode(result); g.addNode(value); g.addEdge(result, value, AssignLabel.make(filter)); }
@Override public void visitCheckCast(SSACheckCastInstruction instruction) { Set<IClass> types = HashSetFactory.make(); for(TypeReference t : instruction.getDeclaredResultTypes()) { IClass cls = cha.lookupClass(t); if (cls == null) { return; } else { types.add(cls); } } PointerKey result = heapModel.getFilteredPointerKeyForLocal(node, instruction.getResult(), new FilteredPointerKey.MultipleClassesFilter(types.toArray(new IClass[0])) ); PointerKey value = heapModel.getPointerKeyForLocal(node, instruction.getVal()); addNode(result); addNode(value); addEdge(result, value, AssignLabel.noFilter()); }
new FilteredPointerKey.MultipleClassesFilter(types.toArray(new IClass[0])) );
new FilteredPointerKey.MultipleClassesFilter(types.toArray(new IClass[0])) );
PointerKey result = getFilteredPointerKeyForLocal(instruction.getResult(), new FilteredPointerKey.MultipleClassesFilter(types.toArray(new IClass[0]))); PointerKey value = getPointerKeyForLocal(instruction.getVal());
PointerKey result = getFilteredPointerKeyForLocal(instruction.getResult(), new FilteredPointerKey.MultipleClassesFilter(types.toArray(new IClass[0]))); PointerKey value = getPointerKeyForLocal(instruction.getVal());
@Override public void visitCheckCast(SSACheckCastInstruction instruction) { Set<IClass> types = HashSetFactory.make(); for(TypeReference t : instruction.getDeclaredResultTypes()) { IClass cls = cha.lookupClass(t); if (cls == null) { return; } else { types.add(cls); } } PointerKey result = heapModel.getFilteredPointerKeyForLocal(node, instruction.getResult(), new FilteredPointerKey.MultipleClassesFilter(types.toArray(new IClass[0])) ); PointerKey value = heapModel.getPointerKeyForLocal(node, instruction.getVal()); addNode(result); addNode(value); addEdge(result, value, AssignLabel.noFilter()); }