01: /* Soot - a J*va Optimization Framework
02: * Copyright (C) 2002 Ondrej Lhotak
03: *
04: * This library is free software; you can redistribute it and/or
05: * modify it under the terms of the GNU Lesser General Public
06: * License as published by the Free Software Foundation; either
07: * version 2.1 of the License, or (at your option) any later version.
08: *
09: * This library is distributed in the hope that it will be useful,
10: * but WITHOUT ANY WARRANTY; without even the implied warranty of
11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12: * Lesser General Public License for more details.
13: *
14: * You should have received a copy of the GNU Lesser General Public
15: * License along with this library; if not, write to the
16: * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17: * Boston, MA 02111-1307, USA.
18: */
19:
20: package soot;
21:
22: /** A generic interface to any type of pointer analysis.
23: * @author Ondrej Lhotak
24: */
25:
26: public interface PointsToAnalysis {
27: /** Returns the set of objects pointed to by variable l. */
28: public PointsToSet reachingObjects(Local l);
29:
30: /** Returns the set of objects pointed to by variable l in context c. */
31: public PointsToSet reachingObjects(Context c, Local l);
32:
33: /** Returns the set of objects pointed to by static field f. */
34: public PointsToSet reachingObjects(SootField f);
35:
36: /** Returns the set of objects pointed to by instance field f
37: * of the objects in the PointsToSet s. */
38: public PointsToSet reachingObjects(PointsToSet s, SootField f);
39:
40: /** Returns the set of objects pointed to by instance field f
41: * of the objects pointed to by l. */
42: public PointsToSet reachingObjects(Local l, SootField f);
43:
44: /** Returns the set of objects pointed to by instance field f
45: * of the objects pointed to by l in context c. */
46: public PointsToSet reachingObjects(Context c, Local l, SootField f);
47:
48: /** Returns the set of objects pointed to by elements of the arrays
49: * in the PointsToSet s. */
50: public PointsToSet reachingObjectsOfArrayElement(PointsToSet s);
51:
52: public static final String THIS_NODE = "THIS_NODE";
53: public static final int RETURN_NODE = -2;
54: public static final String THROW_NODE = "THROW_NODE";
55: public static final String ARRAY_ELEMENTS_NODE = "ARRAY_ELEMENTS_NODE";
56: public static final String CAST_NODE = "CAST_NODE";
57: public static final String STRING_ARRAY_NODE = "STRING_ARRAY_NODE";
58: public static final String STRING_NODE = "STRING_NODE";
59: public static final String STRING_NODE_LOCAL = "STRING_NODE_LOCAL";
60: public static final String EXCEPTION_NODE = "EXCEPTION_NODE";
61: public static final String RETURN_STRING_CONSTANT_NODE = "RETURN_STRING_CONSTANT_NODE";
62: public static final String STRING_ARRAY_NODE_LOCAL = "STRING_ARRAY_NODE_LOCAL";
63: public static final String MAIN_THREAD_NODE = "MAIN_THREAD_NODE";
64: public static final String MAIN_THREAD_NODE_LOCAL = "MAIN_THREAD_NODE_LOCAL";
65: public static final String MAIN_THREAD_GROUP_NODE = "MAIN_THREAD_GROUP_NODE";
66: public static final String MAIN_THREAD_GROUP_NODE_LOCAL = "MAIN_THREAD_GROUP_NODE_LOCAL";
67: public static final String MAIN_CLASS_NAME_STRING = "MAIN_CLASS_NAME_STRING";
68: public static final String MAIN_CLASS_NAME_STRING_LOCAL = "MAIN_CLASS_NAME_STRING_LOCAL";
69: public static final String DEFAULT_CLASS_LOADER = "DEFAULT_CLASS_LOADER";
70: public static final String DEFAULT_CLASS_LOADER_LOCAL = "DEFAULT_CLASS_LOADER_LOCAL";
71: public static final String FINALIZE_QUEUE = "FINALIZE_QUEUE";
72: public static final String CANONICAL_PATH = "CANONICAL_PATH";
73: public static final String CANONICAL_PATH_LOCAL = "CANONICAL_PATH_LOCAL";
74: public static final String PRIVILEGED_ACTION_EXCEPTION = "PRIVILEGED_ACTION_EXCEPTION";
75: public static final String PRIVILEGED_ACTION_EXCEPTION_LOCAL = "PRIVILEGED_ACTION_EXCEPTION_LOCAL";
76: public static final String PHI_NODE = "PHI_NODE";
77: }
|