[Soot-list] question to PointsToSet

Jochen Huck jochen.huck at student.kit.edu
Fri Feb 18 09:01:56 EST 2011


Hi,

I'm running SPARK with default options (-p cg.spark enable). For a 
simple array element assignment (temp$1[temp$2] = temp$3) I get a bunch 
of reaching objects. I would like to reduce these but I don't know where 
to start. The assigned array <p> is not local but a field that belongs 
to a class <B> that extends another class <A>. <A> and <B> both declare 
a field named <p>. The situation is even more complex...but I don't know 
if that affects my problem

class A {
     int[] p;
}

class B {
     int[] p;

     foo() {
         p[i] = ...
     }
}

The reaching objects for <p> look like:

[Field: ARRAY_ELEMENTS_NODEAllocNode 27 Pair 
AbstractObject,Any_subtype_of_java.security.PrivilegedActionException in 
method null,AllocNode 175 newarray (byte)[16] in method 
<sun.net.util.IPAddressUtil: byte[] 
textToNumericFormatV6(java.lang.String)>,AllocNode 176 newarray 
(byte)[4] in method <sun.net.util.IPAddressUtil: byte[] 
textToNumericFormatV4(java.lang.String)>,AllocNode 191 newarray 
(byte)[4] in method <sun.net.util.IPAddressUtil: byte[] 
convertFromIPv4MappedAddress(byte[])>,AllocNode 558 Pair 
AbstractObject,Any_subtype_of_java.lang.Thread in method null,AllocNode 
986 Pair AbstractObject,Any_subtype_of_java.lang.Object in method 
null,AllocNode 1709 newarray (byte)[$i1] in method 
<java.util.jar.JarFile: byte[] 
getBytes(java.util.zip.ZipEntry)>,AllocNode 1872 newarray (byte)[$i0] in 
method <java.io.ByteArrayOutputStream: byte[] toByteArray()>,AllocNode 
1984 newarray (byte)[1] in method 
<sun.security.util.DerIndefLenConverter: byte[] 
getLengthBytes(int)>,AllocNode 1985 newarray (byte)[2] in method 
<sun.security.util.DerIndefLenConverter: byte[] 
getLengthBytes(int)>,AllocNode 1986 newarray (byte)[3] in method 
<sun.security.util.DerIndefLenConverter: byte[] 
getLengthBytes(int)>,AllocNode 1987 newarray (byte)[4] in method 
<sun.security.util.DerIndefLenConverter: byte[] 
getLengthBytes(int)>,AllocNode 1988 newarray (byte)[5] in method 
<sun.security.util.DerIndefLenConverter: byte[] 
getLengthBytes(int)>,AllocNode 2234 newarray (byte)[l3] in method 
<sun.security.util.BitArray: void <init>(int,byte[])>,AllocNode 2481 
newarray (byte)[4] in method <java.net.Inet4Address: byte[] 
getAddress()>,AllocNode 2486 newarray (byte)[$i0] in method 
<sun.security.util.BitArray: void <init>(int)>,AllocNode 2878 newarray 
(byte)[l4] in method <sun.util.calendar.ZoneInfoFile$1: java.lang.Object 
run()>,AllocNode 3154 Pair 
AbstractObject,Any_subtype_of_java.lang.ClassLoader in method 
null,AllocNode 3734 newarray (byte)[temp$2] in method 
<ij.process.ColorProcessor: ij.process.ImageProcessor 
filterRGB(int,double,double)>,AllocNode 3735 newarray (byte)[temp$5] in 
method <ij.process.ColorProcessor: ij.process.ImageProcessor 
filterRGB(int,double,double)>,AllocNode 3736 newarray (byte)[temp$8] in 
method <ij.process.ColorProcessor: ij.process.ImageProcessor 
filterRGB(int,double,double)>,AllocNode 3749 newarray (byte)[temp$1] in 
method <ij.process.ByteProcessor3: ij.process.ImageProcessor 
createProcessor(int,int)>,AllocNode 3835 newarray (byte)[temp$6] in 
method <ij.process.ByteProcessor3: java.lang.Object 
getPixelsCopy()>,AllocNode 3851 newarray (byte)[temp$1] in method 
<ij.process.ByteProcessor2: ij.process.ImageProcessor 
createProcessor(int,int)>,AllocNode 3859 newarray (byte)[temp$6] in 
method <ij.process.ByteProcessor2: java.lang.Object 
getPixelsCopy()>,AllocNode 3869 newarray (byte)[temp$1] in method 
<ij.process.ByteProcessor1: ij.process.ImageProcessor 
createProcessor(int,int)>,AllocNode 3878 newarray (byte)[temp$6] in 
method <ij.process.ByteProcessor1: java.lang.Object 
getPixelsCopy()>,AllocNode 3944 newarray (byte)[l1] in method 
<sun.security.util.DerInputBuffer: byte[] toByteArray()>,AllocNode 3956 
newarray (byte)[$i2] in method <sun.security.util.DerValue: byte[] 
getOctetString()>,AllocNode 3960 newarray (byte)[l1] in method 
<sun.security.util.DerInputStream: byte[] getOctetString()>,AllocNode 
3962 newarray (byte)[$i0] in method <sun.security.util.DerValue: byte[] 
append(byte[],byte[])>,AllocNode 4286 newarray (byte)[$i0] in method 
<sun.security.util.BitArray: void <init>(boolean[])>,AllocNode 4912 
newarray (byte)[4] in method <sun.security.x509.IPAddressName: 
java.lang.String getName()>,AllocNode 4913 newarray (byte)[4] in method 
<sun.security.x509.IPAddressName: java.lang.String getName()>,AllocNode 
4914 newarray (byte)[16] in method <sun.security.x509.IPAddressName: 
java.lang.String getName()>,AllocNode 4915 newarray (byte)[16] in method 
<sun.security.x509.IPAddressName: java.lang.String getName()>,AllocNode 
8267 newarray (byte)[$i0] in method <java.awt.geom.GeneralPath: void 
needRoom(int,int,boolean)>,AllocNode 8268 newarray (byte)[l2] in method 
<java.awt.geom.GeneralPath: void <init>(int,int,int)>,AllocNode 8542 
newarray (byte)[temp$0] in method <ij.process.ByteProcessor: void 
<init>(int,int)>,AllocNode 8672 newarray (byte)[l1] in method 
<java.awt.image.DataBufferByte: void <init>(int)>,AllocNode 8706 
newarray (byte)[65536] in method <java.awt.image.ColorModel: byte[] 
getGray16TosRGB8LUT(java.awt.color.ICC_ColorSpace)>,AllocNode 8713 
newarray (byte)[65536] in method <java.awt.image.ColorModel: byte[] 
getLinearGray16ToOtherGray8LUT(java.awt.color.ICC_ColorSpace)>,AllocNode 
8715 newarray (byte)[256] in method <java.awt.image.ColorModel: byte[] 
getGray8TosRGB8LUT(java.awt.color.ICC_ColorSpace)>,AllocNode 8724 
newarray (byte)[256] in method <java.awt.image.ColorModel: byte[] 
getLinearRGB8TosRGB8LUT()>,AllocNode 8780 newarray (byte)[l1] in method 
<java.awt.image.DataBufferByte: void <init>(int,int)>,AllocNode 8971 
newarray (byte)[temp$9] in method <ij.io.RandomAccessStream: long 
readUntil(long)>,AllocNode 10806 newarray (byte)[temp$12] in method 
<ij.process.TypeConverter: ij.process.ByteProcessor 
convertRGBToByte()>,AllocNode 10813 newarray (byte)[size] in method 
<ij.process.TypeConverter: ij.process.ByteProcessor 
convertShortToByte()>,AllocNode 10826 newarray (byte)[temp$7] in method 
<ij.process.ByteProcessor: void <init>(java.awt.Image)>,AllocNode 10956 
newarray (byte)[size] in method <ij.CompositeImage: ij.ImageStack 
getRGBStack(ij.ImagePlus)>,AllocNode 10957 newarray (byte)[size] in 
method <ij.CompositeImage: ij.ImageStack 
getRGBStack(ij.ImagePlus)>,AllocNode 10958 newarray (byte)[size] in 
method <ij.CompositeImage: ij.ImageStack 
getRGBStack(ij.ImagePlus)>,AllocNode 11468 newarray (byte)[temp$5] in 
method <ij.gui.Plot: void createImage()>,AllocNode 11475 newarray 
(byte)[temp$1] in method <ij.process.ByteProcessor: 
ij.process.ImageProcessor createProcessor(int,int)>,AllocNode 11783 
newarray (byte)[temp$1] in method <ij.gui.NewImage: ij.ImagePlus 
createByteImage(java.lang.String,int,int,int,int)>,AllocNode 11786 
newarray (byte)[temp$35] in method <ij.gui.NewImage: boolean 
createStack(ij.ImagePlus,ij.process.ImageProcessor,int,int,int)>,AllocNode 
11825 newarray (byte)[temp$3] in method <ij.io.ImageReader: byte[] 
read8bitImage(java.io.InputStream)>,AllocNode 11839 newarray 
(byte)[temp$9] in method <ij.io.ImageReader: byte[] 
read1bitImage(java.io.InputStream)>,AllocNode 11874 newarray 
(byte)[temp$0] in method <ij.io.ImageReader: byte[] 
readCompressed8bitImage(java.io.InputStream)>,AllocNode 12166 newarray 
(byte)[size] in method <ij.process.ShortProcessor: byte[] 
create8BitImage()>,AllocNode 12228 newarray (byte)[$i0] in method 
<java.awt.image.PixelGrabber: void 
setPixels(int,int,int,int,java.awt.image.ColorModel,byte[],int,int)>,AllocNode 
13166 newarray (byte)[temp$7] in method 
<ij.plugin.frame.ContrastAdjuster: void 
plotHistogram(ij.ImagePlus)>,AllocNode 13167 newarray (byte)[temp$8] in 
method <ij.plugin.frame.ContrastAdjuster: void 
plotHistogram(ij.ImagePlus)>,AllocNode 13168 newarray (byte)[temp$9] in 
method <ij.plugin.frame.ContrastAdjuster: void 
plotHistogram(ij.ImagePlus)>,AllocNode 13466 newarray (byte)[l1] in 
method <com.sun.imageio.plugins.png.PNGImageReader: void 
readMetadata()>,AllocNode 13471 newarray (byte)[l9] in method 
<com.sun.imageio.plugins.png.PNGImageReader: java.util.Iterator 
getImageTypes(int)>,AllocNode 13472 newarray (byte)[l9] in method 
<com.sun.imageio.plugins.png.PNGImageReader: java.util.Iterator 
getImageTypes(int)>,AllocNode 13473 newarray (byte)[l9] in method 
<com.sun.imageio.plugins.png.PNGImageReader: java.util.Iterator 
getImageTypes(int)>,AllocNode 13474 newarray (byte)[$i0] in method 
<com.sun.imageio.plugins.png.PNGImageReader: java.util.Iterator 
getImageTypes(int)>,AllocNode 13484 newarray (byte)[l5] in method 
<javax.imageio.ImageTypeSpecifier: void <clinit>()>,AllocNode 13485 
newarray (byte)[l5] in method <javax.imageio.ImageTypeSpecifier: void 
<clinit>()>,AllocNode 13486 newarray (byte)[l5] in method 
<javax.imageio.ImageTypeSpecifier: void <clinit>()>,AllocNode 13487 
newarray (byte)[l5] in method <javax.imageio.ImageTypeSpecifier: void 
<clinit>()>,AllocNode 13618 newarray (byte)[l4] in method 
<com.sun.imageio.plugins.png.PNGImageReader: void 
parse_PLTE_chunk(int)>,AllocNode 13619 newarray (byte)[l4] in method 
<com.sun.imageio.plugins.png.PNGImageReader: void 
parse_PLTE_chunk(int)>,AllocNode 13620 newarray (byte)[l4] in method 
<com.sun.imageio.plugins.png.PNGImageReader: void 
parse_PLTE_chunk(int)>,AllocNode 13635 newarray (byte)[l4] in method 
<com.sun.imageio.plugins.png.PNGImageReader: void 
parse_tRNS_chunk(int)>,AllocNode 13763 newarray (byte)[8] in method 
<com.sun.imageio.plugins.gif.GIFImageReader: void 
readMetadata()>,AllocNode 13764 newarray (byte)[3] in method 
<com.sun.imageio.plugins.gif.GIFImageReader: void 
readMetadata()>,AllocNode 13774 newarray (byte)[l7] in method 
<com.sun.imageio.plugins.gif.GIFImageReader: java.util.Iterator 
getImageTypes(int)>,AllocNode 13775 newarray (byte)[l7] in method 
<com.sun.imageio.plugins.gif.GIFImageReader: java.util.Iterator 
getImageTypes(int)>,AllocNode 13776 newarray (byte)[l7] in method 
<com.sun.imageio.plugins.gif.GIFImageReader: java.util.Iterator 
getImageTypes(int)>,AllocNode 13777 newarray (byte)[l7] in method 
<com.sun.imageio.plugins.gif.GIFImageReader: java.util.Iterator 
getImageTypes(int)>,AllocNode 13782 newarray (byte)[0] in method 
<com.sun.imageio.plugins.gif.GIFImageReader: byte[] 
concatenateBlocks()>,AllocNode 13783 newarray (byte)[$i0] in method 
<com.sun.imageio.plugins.gif.GIFImageReader: byte[] 
concatenateBlocks()>,AllocNode 13858 newarray (byte)[$i0] in method 
<com.sun.imageio.plugins.jpeg.MarkerSegment: void 
loadData(com.sun.imageio.plugins.jpeg.JPEGBuffer)>,AllocNode 13864 
newarray (byte)[$i0] in method 
<com.sun.imageio.plugins.jpeg.JFIFMarkerSegment$ICCMarkerSegment: void 
<init>(com.sun.imageio.plugins.jpeg.JFIFMarkerSegment,com.s...

Is anyone familiar with this stuff?

Thanks, Jochen


More information about the Soot-list mailing list