comparison graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ResolvedJavaType.java @ 19800:3362ba500371

Connect required Assumptions with answer to CHA query
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Wed, 11 Mar 2015 17:32:04 -0700
parents 3fc907b46313
children deab43a789ad
comparison
equal deleted inserted replaced
19799:00c4aa355659 19800:3362ba500371
23 package com.oracle.graal.api.meta; 23 package com.oracle.graal.api.meta;
24 24
25 import java.lang.annotation.*; 25 import java.lang.annotation.*;
26 import java.net.*; 26 import java.net.*;
27 27
28 import com.oracle.graal.api.meta.Assumptions.AssumptionResult;
29
28 /** 30 /**
29 * Represents a resolved Java type. Types include primitives, objects, {@code void}, and arrays 31 * Represents a resolved Java type. Types include primitives, objects, {@code void}, and arrays
30 * thereof. Types, like fields and methods, are resolved through {@link ConstantPool constant pools} 32 * thereof. Types, like fields and methods, are resolved through {@link ConstantPool constant pools}
31 * . 33 * .
32 */ 34 */
54 * Checks whether this type has any finalizable subclasses so far. Any decisions based on this 56 * Checks whether this type has any finalizable subclasses so far. Any decisions based on this
55 * information require the registration of a dependency, since this information may change. 57 * information require the registration of a dependency, since this information may change.
56 * 58 *
57 * @return {@code true} if this class has any subclasses with finalizers 59 * @return {@code true} if this class has any subclasses with finalizers
58 */ 60 */
59 boolean hasFinalizableSubclass(); 61 AssumptionResult<Boolean> hasFinalizableSubclass();
60 62
61 /** 63 /**
62 * Checks whether this type is an interface. 64 * Checks whether this type is an interface.
63 * 65 *
64 * @return {@code true} if this type is an interface 66 * @return {@code true} if this type is an interface
200 * If the compiler uses the result of this method for its compilation, it must register an 202 * If the compiler uses the result of this method for its compilation, it must register an
201 * assumption because dynamic class loading can invalidate the result of this method. 203 * assumption because dynamic class loading can invalidate the result of this method.
202 * 204 *
203 * @return the unique concrete subclass for this type as described above 205 * @return the unique concrete subclass for this type as described above
204 */ 206 */
205 ResolvedJavaType findUniqueConcreteSubtype(); 207 AssumptionResult<ResolvedJavaType> findUniqueConcreteSubtype();
206 208
207 ResolvedJavaType getComponentType(); 209 ResolvedJavaType getComponentType();
208 210
209 default ResolvedJavaType getElementalType() { 211 default ResolvedJavaType getElementalType() {
210 ResolvedJavaType t = this; 212 ResolvedJavaType t = this;
255 * 257 *
256 * @param method the method A for which a unique concrete target is searched 258 * @param method the method A for which a unique concrete target is searched
257 * @return the unique concrete target or {@code null} if no such target exists or assumptions 259 * @return the unique concrete target or {@code null} if no such target exists or assumptions
258 * are not supported by this runtime 260 * are not supported by this runtime
259 */ 261 */
260 ResolvedJavaMethod findUniqueConcreteMethod(ResolvedJavaMethod method); 262 AssumptionResult<ResolvedJavaMethod> findUniqueConcreteMethod(ResolvedJavaMethod method);
261 263
262 /** 264 /**
263 * Returns the instance fields of this class, including 265 * Returns the instance fields of this class, including
264 * {@linkplain ResolvedJavaField#isInternal() internal} fields. A zero-length array is returned 266 * {@linkplain ResolvedJavaField#isInternal() internal} fields. A zero-length array is returned
265 * for array and primitive types. The order of fields returned by this method is stable. That 267 * for array and primitive types. The order of fields returned by this method is stable. That