# HG changeset patch # User Josef Eisl # Date 1436342745 -7200 # Node ID af6cc957bf044f6e6ada13207154e0776d9590b5 # Parent dc9761fa03d7a0c7a0281ed4f9956c06009b6424 Remove dummy parameter `includeAbstract` from `ResolvedJavaType#resolveMethod()`; The behavior is now the `includeAbstract=true` case. If you called `resolveMethod` with `includeAbstract=false` use `resolveConcreteMethod()` instead. diff -r dc9761fa03d7 -r af6cc957bf04 CHANGELOG.md --- a/CHANGELOG.md Wed Jul 08 10:56:31 2015 +0200 +++ b/CHANGELOG.md Wed Jul 08 10:05:45 2015 +0200 @@ -7,6 +7,7 @@ ### Graal * Add support for constructing low-level IR in SSA form (default behavior). * Add support for SSA linear scan register allocation (default behavior). +* Remove dummy parameter `includeAbstract` from `ResolvedJavaType#resolveMethod()`; The behavior is now the `includeAbstract==true` case. The `includeAbstract==false` variant is available via `resolveConcreteMethod()`. ... ### Truffle diff -r dc9761fa03d7 -r af6cc957bf04 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Wed Jul 08 10:56:31 2015 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Wed Jul 08 10:05:45 2015 +0200 @@ -206,7 +206,7 @@ ResolvedJavaType singleImplementor = declaredReceiverType.getSingleImplementor(); if (singleImplementor != null && !singleImplementor.equals(declaredReceiverType)) { - ResolvedJavaMethod singleImplementorMethod = singleImplementor.resolveMethod(targetMethod(), invoke().getContextType(), true); + ResolvedJavaMethod singleImplementorMethod = singleImplementor.resolveMethod(targetMethod(), invoke().getContextType()); if (singleImplementorMethod != null) { /** * We have an invoke on an interface with a single implementor. We can replace this diff -r dc9761fa03d7 -r af6cc957bf04 jvmci/jdk.internal.jvmci.hotspot/src/jdk/internal/jvmci/hotspot/HotSpotResolvedObjectTypeImpl.java --- a/jvmci/jdk.internal.jvmci.hotspot/src/jdk/internal/jvmci/hotspot/HotSpotResolvedObjectTypeImpl.java Wed Jul 08 10:56:31 2015 +0200 +++ b/jvmci/jdk.internal.jvmci.hotspot/src/jdk/internal/jvmci/hotspot/HotSpotResolvedObjectTypeImpl.java Wed Jul 08 10:05:45 2015 +0200 @@ -387,7 +387,7 @@ @Override public ResolvedJavaMethod resolveConcreteMethod(ResolvedJavaMethod method, ResolvedJavaType callerType) { - ResolvedJavaMethod resolvedMethod = resolveMethod(method, callerType, true); + ResolvedJavaMethod resolvedMethod = resolveMethod(method, callerType); if (resolvedMethod == null || resolvedMethod.isAbstract()) { return null; } @@ -395,10 +395,7 @@ } @Override - public ResolvedJavaMethod resolveMethod(ResolvedJavaMethod method, ResolvedJavaType callerType, boolean includeAbstract) { - if (!includeAbstract) { - return resolveConcreteMethod(method, callerType); - } + public ResolvedJavaMethod resolveMethod(ResolvedJavaMethod method, ResolvedJavaType callerType) { assert !callerType.isArray(); if (method.isConcrete() && method.getDeclaringClass().equals(this) && method.isPublic()) { return method; @@ -520,7 +517,7 @@ * The holder may be a subtype of the declaredHolder so make sure to resolve the method to * the correct method for the subtype. */ - HotSpotResolvedJavaMethod resolvedMethod = (HotSpotResolvedJavaMethod) resolveMethod(hmethod, this, true); + HotSpotResolvedJavaMethod resolvedMethod = (HotSpotResolvedJavaMethod) resolveMethod(hmethod, this); if (resolvedMethod == null) { // The type isn't known to implement the method. return null; diff -r dc9761fa03d7 -r af6cc957bf04 jvmci/jdk.internal.jvmci.hotspot/src/jdk/internal/jvmci/hotspot/HotSpotResolvedPrimitiveType.java --- a/jvmci/jdk.internal.jvmci.hotspot/src/jdk/internal/jvmci/hotspot/HotSpotResolvedPrimitiveType.java Wed Jul 08 10:56:31 2015 +0200 +++ b/jvmci/jdk.internal.jvmci.hotspot/src/jdk/internal/jvmci/hotspot/HotSpotResolvedPrimitiveType.java Wed Jul 08 10:05:45 2015 +0200 @@ -179,7 +179,7 @@ } @Override - public ResolvedJavaMethod resolveMethod(ResolvedJavaMethod method, ResolvedJavaType callerType, boolean includeAbstract) { + public ResolvedJavaMethod resolveMethod(ResolvedJavaMethod method, ResolvedJavaType callerType) { return null; } diff -r dc9761fa03d7 -r af6cc957bf04 jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/ResolvedJavaType.java --- a/jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/ResolvedJavaType.java Wed Jul 08 10:56:31 2015 +0200 +++ b/jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/ResolvedJavaType.java Wed Jul 08 10:05:45 2015 +0200 @@ -234,14 +234,10 @@ * * @param method the method to select the implementation of * @param callerType the caller or context type used to perform access checks - * @param includeAbstract whether abstract methods should be returned. If it is {@code false} - * this method behaves like {@link #resolveConcreteMethod}. This is just a temporary - * parameter to highlight the changed semantics of this method. TODO (je) remove this - * flag. * @return the link-time resolved method (might be abstract) or {@code null} if it can not be * linked */ - ResolvedJavaMethod resolveMethod(ResolvedJavaMethod method, ResolvedJavaType callerType, boolean includeAbstract); + ResolvedJavaMethod resolveMethod(ResolvedJavaMethod method, ResolvedJavaType callerType); /** * Resolves the method implementation for virtual dispatches on objects of this dynamic type. diff -r dc9761fa03d7 -r af6cc957bf04 jvmci/jdk.internal.jvmci.runtime.test/src/jdk/internal/jvmci/runtime/test/ResolvedJavaTypeResolveMethodTest.java --- a/jvmci/jdk.internal.jvmci.runtime.test/src/jdk/internal/jvmci/runtime/test/ResolvedJavaTypeResolveMethodTest.java Wed Jul 08 10:56:31 2015 +0200 +++ b/jvmci/jdk.internal.jvmci.runtime.test/src/jdk/internal/jvmci/runtime/test/ResolvedJavaTypeResolveMethodTest.java Wed Jul 08 10:05:45 2015 +0200 @@ -93,9 +93,9 @@ ResolvedJavaMethod di = getMethod(i, "d"); ResolvedJavaMethod dc = getMethod(c, "d"); - assertEquals(di, i.resolveMethod(di, c, true)); - assertEquals(di, b.resolveMethod(di, c, true)); - assertEquals(dc, c.resolveMethod(di, c, true)); + assertEquals(di, i.resolveMethod(di, c)); + assertEquals(di, b.resolveMethod(di, c)); + assertEquals(dc, c.resolveMethod(di, c)); } @Test @@ -105,8 +105,8 @@ ResolvedJavaType c = getType(C.class); ResolvedJavaMethod priv = getMethod(a, "priv"); - assertNull(a.resolveMethod(priv, c, true)); - assertNull(b.resolveMethod(priv, c, true)); + assertNull(a.resolveMethod(priv, c)); + assertNull(b.resolveMethod(priv, c)); } @Test @@ -120,16 +120,16 @@ ResolvedJavaMethod absb = getMethod(b, "abs"); ResolvedJavaMethod abse = getMethod(e, "abs"); - assertEquals(absa, a.resolveMethod(absa, c, true)); - assertEquals(absa, d.resolveMethod(absa, c, true)); + assertEquals(absa, a.resolveMethod(absa, c)); + assertEquals(absa, d.resolveMethod(absa, c)); - assertEquals(absb, b.resolveMethod(absa, c, true)); - assertEquals(absb, b.resolveMethod(absb, c, true)); - assertEquals(absb, c.resolveMethod(absa, c, true)); - assertEquals(absb, c.resolveMethod(absb, c, true)); - assertEquals(abse, e.resolveMethod(absa, c, true)); - assertNull(e.resolveMethod(absb, c, true)); - assertEquals(abse, e.resolveMethod(abse, c, true)); + assertEquals(absb, b.resolveMethod(absa, c)); + assertEquals(absb, b.resolveMethod(absb, c)); + assertEquals(absb, c.resolveMethod(absa, c)); + assertEquals(absb, c.resolveMethod(absb, c)); + assertEquals(abse, e.resolveMethod(absa, c)); + assertNull(e.resolveMethod(absb, c)); + assertEquals(abse, e.resolveMethod(abse, c)); } @Test @@ -141,14 +141,14 @@ ResolvedJavaMethod v2a = getMethod(a, "v2"); ResolvedJavaMethod v2b = getMethod(b, "v2"); - assertEquals(v1a, a.resolveMethod(v1a, c, true)); - assertEquals(v1a, b.resolveMethod(v1a, c, true)); - assertEquals(v1a, c.resolveMethod(v1a, c, true)); - assertEquals(v2a, a.resolveMethod(v2a, c, true)); - assertEquals(v2b, b.resolveMethod(v2a, c, true)); - assertEquals(v2b, b.resolveMethod(v2b, c, true)); - assertEquals(v2b, c.resolveMethod(v2a, c, true)); - assertEquals(v2b, c.resolveMethod(v2b, c, true)); + assertEquals(v1a, a.resolveMethod(v1a, c)); + assertEquals(v1a, b.resolveMethod(v1a, c)); + assertEquals(v1a, c.resolveMethod(v1a, c)); + assertEquals(v2a, a.resolveMethod(v2a, c)); + assertEquals(v2b, b.resolveMethod(v2a, c)); + assertEquals(v2b, b.resolveMethod(v2b, c)); + assertEquals(v2b, c.resolveMethod(v2a, c)); + assertEquals(v2b, c.resolveMethod(v2b, c)); } diff -r dc9761fa03d7 -r af6cc957bf04 jvmci/jdk.internal.jvmci.runtime.test/src/jdk/internal/jvmci/runtime/test/TestResolvedJavaType.java --- a/jvmci/jdk.internal.jvmci.runtime.test/src/jdk/internal/jvmci/runtime/test/TestResolvedJavaType.java Wed Jul 08 10:56:31 2015 +0200 +++ b/jvmci/jdk.internal.jvmci.runtime.test/src/jdk/internal/jvmci/runtime/test/TestResolvedJavaType.java Wed Jul 08 10:05:45 2015 +0200 @@ -563,7 +563,7 @@ for (Method m : c.getDeclaredMethods()) { if (JAVA_VERSION <= 1.7D || (!isStatic(m.getModifiers()) && !isPrivate(m.getModifiers()))) { ResolvedJavaMethod resolved = metaAccess.lookupJavaMethod(m); - ResolvedJavaMethod impl = type.resolveMethod(resolved, context, true); + ResolvedJavaMethod impl = type.resolveMethod(resolved, context); ResolvedJavaMethod expected = resolved.isDefault() || resolved.isAbstract() ? resolved : null; assertEquals(m.toString(), expected, impl); } else {