annotate agent/src/share/classes/sun/jvm/hotspot/jdi/MethodImpl.java @ 0:a61af66fc99e jdk7-b24

Initial load
author duke
date Sat, 01 Dec 2007 00:00:00 +0000
parents
children c18cbe5936b8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
2 * Copyright 2002-2005 Sun Microsystems, Inc. All Rights Reserved.
a61af66fc99e Initial load
duke
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 *
a61af66fc99e Initial load
duke
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 * published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 *
a61af66fc99e Initial load
duke
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 * accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 *
a61af66fc99e Initial load
duke
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
18 *
a61af66fc99e Initial load
duke
parents:
diff changeset
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
a61af66fc99e Initial load
duke
parents:
diff changeset
20 * CA 95054 USA or visit www.sun.com if you need additional information or
a61af66fc99e Initial load
duke
parents:
diff changeset
21 * have any questions.
a61af66fc99e Initial load
duke
parents:
diff changeset
22 *
a61af66fc99e Initial load
duke
parents:
diff changeset
23 */
a61af66fc99e Initial load
duke
parents:
diff changeset
24
a61af66fc99e Initial load
duke
parents:
diff changeset
25 package sun.jvm.hotspot.jdi;
a61af66fc99e Initial load
duke
parents:
diff changeset
26
a61af66fc99e Initial load
duke
parents:
diff changeset
27 import com.sun.jdi.*;
a61af66fc99e Initial load
duke
parents:
diff changeset
28 import sun.jvm.hotspot.oops.Symbol;
a61af66fc99e Initial load
duke
parents:
diff changeset
29 import sun.jvm.hotspot.oops.LocalVariableTableElement;
a61af66fc99e Initial load
duke
parents:
diff changeset
30 import java.util.List;
a61af66fc99e Initial load
duke
parents:
diff changeset
31 import java.util.Iterator;
a61af66fc99e Initial load
duke
parents:
diff changeset
32 import java.util.ArrayList;
a61af66fc99e Initial load
duke
parents:
diff changeset
33 import java.util.Comparator;
a61af66fc99e Initial load
duke
parents:
diff changeset
34 import java.lang.ref.SoftReference;
a61af66fc99e Initial load
duke
parents:
diff changeset
35 import java.util.Collections;
a61af66fc99e Initial load
duke
parents:
diff changeset
36
a61af66fc99e Initial load
duke
parents:
diff changeset
37 public abstract class MethodImpl extends TypeComponentImpl implements Method {
a61af66fc99e Initial load
duke
parents:
diff changeset
38 private JNITypeParser signatureParser;
a61af66fc99e Initial load
duke
parents:
diff changeset
39 protected sun.jvm.hotspot.oops.Method saMethod;
a61af66fc99e Initial load
duke
parents:
diff changeset
40
a61af66fc99e Initial load
duke
parents:
diff changeset
41 abstract int argSlotCount() throws AbsentInformationException;
a61af66fc99e Initial load
duke
parents:
diff changeset
42 abstract List allLineLocations(SDE.Stratum stratum,
a61af66fc99e Initial load
duke
parents:
diff changeset
43 String sourceName)
a61af66fc99e Initial load
duke
parents:
diff changeset
44 throws AbsentInformationException;
a61af66fc99e Initial load
duke
parents:
diff changeset
45 abstract List locationsOfLine(SDE.Stratum stratum,
a61af66fc99e Initial load
duke
parents:
diff changeset
46 String sourceName,
a61af66fc99e Initial load
duke
parents:
diff changeset
47 int lineNumber)
a61af66fc99e Initial load
duke
parents:
diff changeset
48 throws AbsentInformationException;
a61af66fc99e Initial load
duke
parents:
diff changeset
49
a61af66fc99e Initial load
duke
parents:
diff changeset
50 static MethodImpl createMethodImpl(VirtualMachine vm, ReferenceTypeImpl declaringType,
a61af66fc99e Initial load
duke
parents:
diff changeset
51 sun.jvm.hotspot.oops.Method saMethod) {
a61af66fc99e Initial load
duke
parents:
diff changeset
52 // Someday might have to add concrete and non-concrete subclasses.
a61af66fc99e Initial load
duke
parents:
diff changeset
53 if (saMethod.isNative() || saMethod.isAbstract()) {
a61af66fc99e Initial load
duke
parents:
diff changeset
54 return new NonConcreteMethodImpl(vm, declaringType, saMethod);
a61af66fc99e Initial load
duke
parents:
diff changeset
55 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
56 return new ConcreteMethodImpl(vm, declaringType, saMethod);
a61af66fc99e Initial load
duke
parents:
diff changeset
57 }
a61af66fc99e Initial load
duke
parents:
diff changeset
58 }
a61af66fc99e Initial load
duke
parents:
diff changeset
59
a61af66fc99e Initial load
duke
parents:
diff changeset
60 MethodImpl(VirtualMachine vm, ReferenceTypeImpl declaringType,
a61af66fc99e Initial load
duke
parents:
diff changeset
61 sun.jvm.hotspot.oops.Method saMethod ) {
a61af66fc99e Initial load
duke
parents:
diff changeset
62 super(vm, declaringType);
a61af66fc99e Initial load
duke
parents:
diff changeset
63 this.saMethod = saMethod;
a61af66fc99e Initial load
duke
parents:
diff changeset
64 getParser();
a61af66fc99e Initial load
duke
parents:
diff changeset
65 }
a61af66fc99e Initial load
duke
parents:
diff changeset
66
a61af66fc99e Initial load
duke
parents:
diff changeset
67 private JNITypeParser getParser() {
a61af66fc99e Initial load
duke
parents:
diff changeset
68 if (signatureParser == null) {
a61af66fc99e Initial load
duke
parents:
diff changeset
69 Symbol sig1 = saMethod.getSignature();
a61af66fc99e Initial load
duke
parents:
diff changeset
70 signature = sig1.asString();
a61af66fc99e Initial load
duke
parents:
diff changeset
71 signatureParser = new JNITypeParser(signature);
a61af66fc99e Initial load
duke
parents:
diff changeset
72 }
a61af66fc99e Initial load
duke
parents:
diff changeset
73 return signatureParser;
a61af66fc99e Initial load
duke
parents:
diff changeset
74 }
a61af66fc99e Initial load
duke
parents:
diff changeset
75
a61af66fc99e Initial load
duke
parents:
diff changeset
76 // Object ref() {
a61af66fc99e Initial load
duke
parents:
diff changeset
77 sun.jvm.hotspot.oops.Method ref() {
a61af66fc99e Initial load
duke
parents:
diff changeset
78 return saMethod;
a61af66fc99e Initial load
duke
parents:
diff changeset
79 }
a61af66fc99e Initial load
duke
parents:
diff changeset
80
a61af66fc99e Initial load
duke
parents:
diff changeset
81 public String genericSignature() {
a61af66fc99e Initial load
duke
parents:
diff changeset
82 Symbol genSig = saMethod.getGenericSignature();
a61af66fc99e Initial load
duke
parents:
diff changeset
83 return (genSig != null)? genSig.asString() : null;
a61af66fc99e Initial load
duke
parents:
diff changeset
84 }
a61af66fc99e Initial load
duke
parents:
diff changeset
85
a61af66fc99e Initial load
duke
parents:
diff changeset
86 public String returnTypeName() {
a61af66fc99e Initial load
duke
parents:
diff changeset
87 return getParser().typeName();
a61af66fc99e Initial load
duke
parents:
diff changeset
88 }
a61af66fc99e Initial load
duke
parents:
diff changeset
89
a61af66fc99e Initial load
duke
parents:
diff changeset
90 public Type returnType() throws ClassNotLoadedException {
a61af66fc99e Initial load
duke
parents:
diff changeset
91 return findType(getParser().signature());
a61af66fc99e Initial load
duke
parents:
diff changeset
92 }
a61af66fc99e Initial load
duke
parents:
diff changeset
93
a61af66fc99e Initial load
duke
parents:
diff changeset
94 private Type findType(String signature) throws ClassNotLoadedException {
a61af66fc99e Initial load
duke
parents:
diff changeset
95 ReferenceTypeImpl enclosing = (ReferenceTypeImpl)declaringType();
a61af66fc99e Initial load
duke
parents:
diff changeset
96 return enclosing.findType(signature);
a61af66fc99e Initial load
duke
parents:
diff changeset
97 }
a61af66fc99e Initial load
duke
parents:
diff changeset
98
a61af66fc99e Initial load
duke
parents:
diff changeset
99 public List argumentTypeNames() {
a61af66fc99e Initial load
duke
parents:
diff changeset
100 return getParser().argumentTypeNames();
a61af66fc99e Initial load
duke
parents:
diff changeset
101 }
a61af66fc99e Initial load
duke
parents:
diff changeset
102
a61af66fc99e Initial load
duke
parents:
diff changeset
103 List argumentSignatures() {
a61af66fc99e Initial load
duke
parents:
diff changeset
104 return getParser().argumentSignatures();
a61af66fc99e Initial load
duke
parents:
diff changeset
105 }
a61af66fc99e Initial load
duke
parents:
diff changeset
106
a61af66fc99e Initial load
duke
parents:
diff changeset
107 Type argumentType(int index) throws ClassNotLoadedException {
a61af66fc99e Initial load
duke
parents:
diff changeset
108 ReferenceTypeImpl enclosing = (ReferenceTypeImpl)declaringType();
a61af66fc99e Initial load
duke
parents:
diff changeset
109 String signature = (String)argumentSignatures().get(index);
a61af66fc99e Initial load
duke
parents:
diff changeset
110 return enclosing.findType(signature);
a61af66fc99e Initial load
duke
parents:
diff changeset
111 }
a61af66fc99e Initial load
duke
parents:
diff changeset
112
a61af66fc99e Initial load
duke
parents:
diff changeset
113 public List argumentTypes() throws ClassNotLoadedException {
a61af66fc99e Initial load
duke
parents:
diff changeset
114 int size = argumentSignatures().size();
a61af66fc99e Initial load
duke
parents:
diff changeset
115 ArrayList types = new ArrayList(size);
a61af66fc99e Initial load
duke
parents:
diff changeset
116 for (int i = 0; i < size; i++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
117 Type type = argumentType(i);
a61af66fc99e Initial load
duke
parents:
diff changeset
118 types.add(type);
a61af66fc99e Initial load
duke
parents:
diff changeset
119 }
a61af66fc99e Initial load
duke
parents:
diff changeset
120 return types;
a61af66fc99e Initial load
duke
parents:
diff changeset
121 }
a61af66fc99e Initial load
duke
parents:
diff changeset
122
a61af66fc99e Initial load
duke
parents:
diff changeset
123 public boolean isAbstract() {
a61af66fc99e Initial load
duke
parents:
diff changeset
124 return saMethod.isAbstract();
a61af66fc99e Initial load
duke
parents:
diff changeset
125 }
a61af66fc99e Initial load
duke
parents:
diff changeset
126
a61af66fc99e Initial load
duke
parents:
diff changeset
127 public boolean isBridge() {
a61af66fc99e Initial load
duke
parents:
diff changeset
128 return saMethod.isBridge();
a61af66fc99e Initial load
duke
parents:
diff changeset
129 }
a61af66fc99e Initial load
duke
parents:
diff changeset
130
a61af66fc99e Initial load
duke
parents:
diff changeset
131 public boolean isSynchronized() {
a61af66fc99e Initial load
duke
parents:
diff changeset
132 return saMethod.isSynchronized();
a61af66fc99e Initial load
duke
parents:
diff changeset
133 }
a61af66fc99e Initial load
duke
parents:
diff changeset
134
a61af66fc99e Initial load
duke
parents:
diff changeset
135 public boolean isNative() {
a61af66fc99e Initial load
duke
parents:
diff changeset
136 return saMethod.isNative();
a61af66fc99e Initial load
duke
parents:
diff changeset
137 }
a61af66fc99e Initial load
duke
parents:
diff changeset
138
a61af66fc99e Initial load
duke
parents:
diff changeset
139 public boolean isVarArgs() {
a61af66fc99e Initial load
duke
parents:
diff changeset
140 return saMethod.isVarArgs();
a61af66fc99e Initial load
duke
parents:
diff changeset
141 }
a61af66fc99e Initial load
duke
parents:
diff changeset
142
a61af66fc99e Initial load
duke
parents:
diff changeset
143 public boolean isConstructor() {
a61af66fc99e Initial load
duke
parents:
diff changeset
144 return saMethod.isConstructor();
a61af66fc99e Initial load
duke
parents:
diff changeset
145 }
a61af66fc99e Initial load
duke
parents:
diff changeset
146
a61af66fc99e Initial load
duke
parents:
diff changeset
147 public boolean isStaticInitializer() {
a61af66fc99e Initial load
duke
parents:
diff changeset
148 return saMethod.isStaticInitializer();
a61af66fc99e Initial load
duke
parents:
diff changeset
149 }
a61af66fc99e Initial load
duke
parents:
diff changeset
150
a61af66fc99e Initial load
duke
parents:
diff changeset
151 public boolean isObsolete() {
a61af66fc99e Initial load
duke
parents:
diff changeset
152 return saMethod.isObsolete();
a61af66fc99e Initial load
duke
parents:
diff changeset
153 }
a61af66fc99e Initial load
duke
parents:
diff changeset
154
a61af66fc99e Initial load
duke
parents:
diff changeset
155 public final List allLineLocations()
a61af66fc99e Initial load
duke
parents:
diff changeset
156 throws AbsentInformationException {
a61af66fc99e Initial load
duke
parents:
diff changeset
157 return allLineLocations(vm.getDefaultStratum(), null);
a61af66fc99e Initial load
duke
parents:
diff changeset
158 }
a61af66fc99e Initial load
duke
parents:
diff changeset
159
a61af66fc99e Initial load
duke
parents:
diff changeset
160 public List allLineLocations(String stratumID,
a61af66fc99e Initial load
duke
parents:
diff changeset
161 String sourceName)
a61af66fc99e Initial load
duke
parents:
diff changeset
162 throws AbsentInformationException {
a61af66fc99e Initial load
duke
parents:
diff changeset
163 return allLineLocations(declaringType.stratum(stratumID),
a61af66fc99e Initial load
duke
parents:
diff changeset
164 sourceName);
a61af66fc99e Initial load
duke
parents:
diff changeset
165 }
a61af66fc99e Initial load
duke
parents:
diff changeset
166
a61af66fc99e Initial load
duke
parents:
diff changeset
167 public final List locationsOfLine(int lineNumber)
a61af66fc99e Initial load
duke
parents:
diff changeset
168 throws AbsentInformationException {
a61af66fc99e Initial load
duke
parents:
diff changeset
169 return locationsOfLine(vm.getDefaultStratum(),
a61af66fc99e Initial load
duke
parents:
diff changeset
170 null, lineNumber);
a61af66fc99e Initial load
duke
parents:
diff changeset
171 }
a61af66fc99e Initial load
duke
parents:
diff changeset
172
a61af66fc99e Initial load
duke
parents:
diff changeset
173 public List locationsOfLine(String stratumID,
a61af66fc99e Initial load
duke
parents:
diff changeset
174 String sourceName,
a61af66fc99e Initial load
duke
parents:
diff changeset
175 int lineNumber)
a61af66fc99e Initial load
duke
parents:
diff changeset
176 throws AbsentInformationException {
a61af66fc99e Initial load
duke
parents:
diff changeset
177 return locationsOfLine(declaringType.stratum(stratumID),
a61af66fc99e Initial load
duke
parents:
diff changeset
178 sourceName, lineNumber);
a61af66fc99e Initial load
duke
parents:
diff changeset
179 }
a61af66fc99e Initial load
duke
parents:
diff changeset
180
a61af66fc99e Initial load
duke
parents:
diff changeset
181 LineInfo codeIndexToLineInfo(SDE.Stratum stratum,
a61af66fc99e Initial load
duke
parents:
diff changeset
182 long codeIndex) {
a61af66fc99e Initial load
duke
parents:
diff changeset
183 if (stratum.isJava()) {
a61af66fc99e Initial load
duke
parents:
diff changeset
184 return new BaseLineInfo(-1, declaringType);
a61af66fc99e Initial load
duke
parents:
diff changeset
185 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
186 return new StratumLineInfo(stratum.id(), -1,
a61af66fc99e Initial load
duke
parents:
diff changeset
187 null, null);
a61af66fc99e Initial load
duke
parents:
diff changeset
188 }
a61af66fc99e Initial load
duke
parents:
diff changeset
189 }
a61af66fc99e Initial load
duke
parents:
diff changeset
190
a61af66fc99e Initial load
duke
parents:
diff changeset
191 public boolean equals(Object obj) {
a61af66fc99e Initial load
duke
parents:
diff changeset
192 if ((obj != null) && (obj instanceof MethodImpl)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
193 MethodImpl other = (MethodImpl)obj;
a61af66fc99e Initial load
duke
parents:
diff changeset
194 return (declaringType().equals(other.declaringType())) &&
a61af66fc99e Initial load
duke
parents:
diff changeset
195 (ref().equals(other.ref())) &&
a61af66fc99e Initial load
duke
parents:
diff changeset
196 super.equals(obj);
a61af66fc99e Initial load
duke
parents:
diff changeset
197 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
198 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
199 }
a61af66fc99e Initial load
duke
parents:
diff changeset
200 }
a61af66fc99e Initial load
duke
parents:
diff changeset
201
a61af66fc99e Initial load
duke
parents:
diff changeset
202 // From interface Comparable
a61af66fc99e Initial load
duke
parents:
diff changeset
203 public int compareTo(Object object) {
a61af66fc99e Initial load
duke
parents:
diff changeset
204 Method method = (Method)object;
a61af66fc99e Initial load
duke
parents:
diff changeset
205 ReferenceTypeImpl declaringType = (ReferenceTypeImpl)declaringType();
a61af66fc99e Initial load
duke
parents:
diff changeset
206 int rc = declaringType.compareTo(method.declaringType());
a61af66fc99e Initial load
duke
parents:
diff changeset
207 if (rc == 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
208 rc = declaringType.indexOf(this) -
a61af66fc99e Initial load
duke
parents:
diff changeset
209 declaringType.indexOf(method);
a61af66fc99e Initial load
duke
parents:
diff changeset
210 }
a61af66fc99e Initial load
duke
parents:
diff changeset
211 return rc;
a61af66fc99e Initial load
duke
parents:
diff changeset
212 }
a61af66fc99e Initial load
duke
parents:
diff changeset
213
a61af66fc99e Initial load
duke
parents:
diff changeset
214 // from interface Mirror
a61af66fc99e Initial load
duke
parents:
diff changeset
215 public String toString() {
a61af66fc99e Initial load
duke
parents:
diff changeset
216 StringBuffer sb = new StringBuffer();
a61af66fc99e Initial load
duke
parents:
diff changeset
217 sb.append(declaringType().name());
a61af66fc99e Initial load
duke
parents:
diff changeset
218 sb.append(".");
a61af66fc99e Initial load
duke
parents:
diff changeset
219 sb.append(name());
a61af66fc99e Initial load
duke
parents:
diff changeset
220 sb.append("(");
a61af66fc99e Initial load
duke
parents:
diff changeset
221 boolean first = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
222 for (Iterator it = argumentTypeNames().iterator(); it.hasNext();) {
a61af66fc99e Initial load
duke
parents:
diff changeset
223 if (!first) {
a61af66fc99e Initial load
duke
parents:
diff changeset
224 sb.append(", ");
a61af66fc99e Initial load
duke
parents:
diff changeset
225 }
a61af66fc99e Initial load
duke
parents:
diff changeset
226 sb.append((String)it.next());
a61af66fc99e Initial load
duke
parents:
diff changeset
227 first = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
228 }
a61af66fc99e Initial load
duke
parents:
diff changeset
229 sb.append(")");
a61af66fc99e Initial load
duke
parents:
diff changeset
230 return sb.toString();
a61af66fc99e Initial load
duke
parents:
diff changeset
231 }
a61af66fc99e Initial load
duke
parents:
diff changeset
232
a61af66fc99e Initial load
duke
parents:
diff changeset
233 public String name() {
a61af66fc99e Initial load
duke
parents:
diff changeset
234 Symbol myName = saMethod.getName();
a61af66fc99e Initial load
duke
parents:
diff changeset
235 return myName.asString();
a61af66fc99e Initial load
duke
parents:
diff changeset
236 }
a61af66fc99e Initial load
duke
parents:
diff changeset
237
a61af66fc99e Initial load
duke
parents:
diff changeset
238 public int modifiers() {
a61af66fc99e Initial load
duke
parents:
diff changeset
239 return saMethod.getAccessFlagsObj().getStandardFlags();
a61af66fc99e Initial load
duke
parents:
diff changeset
240 }
a61af66fc99e Initial load
duke
parents:
diff changeset
241
a61af66fc99e Initial load
duke
parents:
diff changeset
242 public boolean isPackagePrivate() {
a61af66fc99e Initial load
duke
parents:
diff changeset
243 return saMethod.isPackagePrivate();
a61af66fc99e Initial load
duke
parents:
diff changeset
244 }
a61af66fc99e Initial load
duke
parents:
diff changeset
245
a61af66fc99e Initial load
duke
parents:
diff changeset
246 public boolean isPrivate() {
a61af66fc99e Initial load
duke
parents:
diff changeset
247 return saMethod.isPrivate();
a61af66fc99e Initial load
duke
parents:
diff changeset
248 }
a61af66fc99e Initial load
duke
parents:
diff changeset
249
a61af66fc99e Initial load
duke
parents:
diff changeset
250 public boolean isProtected() {
a61af66fc99e Initial load
duke
parents:
diff changeset
251 return saMethod.isProtected();
a61af66fc99e Initial load
duke
parents:
diff changeset
252 }
a61af66fc99e Initial load
duke
parents:
diff changeset
253
a61af66fc99e Initial load
duke
parents:
diff changeset
254 public boolean isPublic() {
a61af66fc99e Initial load
duke
parents:
diff changeset
255 return saMethod.isPublic();
a61af66fc99e Initial load
duke
parents:
diff changeset
256 }
a61af66fc99e Initial load
duke
parents:
diff changeset
257
a61af66fc99e Initial load
duke
parents:
diff changeset
258 public boolean isStatic() {
a61af66fc99e Initial load
duke
parents:
diff changeset
259 return saMethod.isStatic();
a61af66fc99e Initial load
duke
parents:
diff changeset
260 }
a61af66fc99e Initial load
duke
parents:
diff changeset
261
a61af66fc99e Initial load
duke
parents:
diff changeset
262 public boolean isSynthetic() {
a61af66fc99e Initial load
duke
parents:
diff changeset
263 return saMethod.isSynthetic();
a61af66fc99e Initial load
duke
parents:
diff changeset
264 }
a61af66fc99e Initial load
duke
parents:
diff changeset
265
a61af66fc99e Initial load
duke
parents:
diff changeset
266 public boolean isFinal() {
a61af66fc99e Initial load
duke
parents:
diff changeset
267 return saMethod.isFinal();
a61af66fc99e Initial load
duke
parents:
diff changeset
268 }
a61af66fc99e Initial load
duke
parents:
diff changeset
269
a61af66fc99e Initial load
duke
parents:
diff changeset
270 public int hashCode() {
a61af66fc99e Initial load
duke
parents:
diff changeset
271 return saMethod.hashCode();
a61af66fc99e Initial load
duke
parents:
diff changeset
272 }
a61af66fc99e Initial load
duke
parents:
diff changeset
273 }