[Soot-list] Singleton ArrayLists
Patrick Lam
plam at sable.mcgill.ca
Wed Mar 4 09:13:50 EST 2009
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi Ohad,
Thanks for the note and the profiling results. There is no particular
reason that some places in the code use singleton lists and others
don't. I think it just depended on when each piece of code was written.
Someone should go through and change the code to make it more
space-efficient.
pat
Ohad Shacham wrote:
> Hi,
>
> We recently built a tool called Chameleon (
> http://www.research.ibm.com/qvm/chameleon.html) for automatically managing
> collections in Java. Running Chameleon on Soot, it reported, among other
> things, that in the following places a Singleton (non-modifiable) list
> should be used:
>
> soot.jimple.internal.JIfStmt - targetBoxes
> soot.baf.internal.BLoadInst - useBoxes
> soot.jimple.internal.JIdentityStmt - defBoxes
> soot.baf.internal.BStoreInst - defBoxes
> soot.baf.internal.BIdentityInst - defBoxes
>
> Checking the code, it seems that indeed there's no reason to use a
> full-fledged ArrayList in these places, as the collections are singletons
> and are immutable.
>
> For example: in soot.jimple.internal.JIfStmt
>
> protected JIfStmt(ValueBox conditionBox, UnitBox targetBox)
> {
> this.conditionBox = conditionBox;
> this.targetBox = targetBox;
>
> targetBoxes = new ArrayList();
> targetBoxes.add(this. targetBox);
> targetBoxes = Collections.unmodifiableList(targetBoxes);
> }
>
> This ArrayList allocates a default size of 10, and will always use only 1
> element in the underlying array. This might lead to significant waste of
> space.
>
> We noticed that in some other places in Soot, the constructors are already
> using a SingletonList (e.g., JAssignStmt), and wondered what is the reason
> that the aforementioned locations remained as using ArrayLists?
> Thanks,
> Ohad
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkmujJ4ACgkQNTVxnNGEyOj7cACcDlf8AJ2pXJRPBIpKtYx/l2MR
dAUAniHuUHRnIM5VVq97pJBUapzSaAk5
=Kohr
-----END PGP SIGNATURE-----
More information about the Soot-list
mailing list