Mercurial > hg > graal-compiler
diff graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectType.java @ 18192:660875e586f0
Add ResolvedJavaType.resolveMethod() (get the like-time resolved method).
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Wed, 29 Oct 2014 19:07:32 +0100 |
parents | 839f97696479 |
children | 0a17944b7baf |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectType.java Wed Oct 29 18:54:32 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectType.java Wed Oct 29 19:07:32 2014 +0100 @@ -380,22 +380,18 @@ @Override public ResolvedJavaMethod resolveConcreteMethod(ResolvedJavaMethod method, ResolvedJavaType callerType) { - ResolvedJavaMethod resolvedMethod = resolveMethodInternal(method, callerType); + ResolvedJavaMethod resolvedMethod = resolveMethod(method, callerType, true); if (resolvedMethod == null || resolvedMethod.isAbstract()) { return null; } return resolvedMethod; } - /** - * Resolve the method against the current type and return the method found, including any - * abstract methods. - * - * @param method - * @param callerType - * @return the method found - */ - private ResolvedJavaMethod resolveMethodInternal(ResolvedJavaMethod method, ResolvedJavaType callerType) { + @Override + public ResolvedJavaMethod resolveMethod(ResolvedJavaMethod method, ResolvedJavaType callerType, boolean includeAbstract) { + if (!includeAbstract) { + return resolveConcreteMethod(method, callerType); + } assert !callerType.isArray(); if (!method.isAbstract() && method.getDeclaringClass().equals(this) && method.isPublic()) { return method; @@ -522,7 +518,7 @@ * The holder may be a subtype of the decaredHolder so make sure to resolve the method to * the correct method for the subtype. */ - HotSpotResolvedJavaMethod resolvedMethod = (HotSpotResolvedJavaMethod) resolveMethodInternal(hmethod, this); + HotSpotResolvedJavaMethod resolvedMethod = (HotSpotResolvedJavaMethod) resolveMethod(hmethod, this, true); if (resolvedMethod == null) { // The type isn't known to implement the method. return null;