comparison jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java @ 23347:7ae6a635fad0

8152903: [JVMCI] CompilerToVM::resolveMethod should correctly handle private methods in interfaces
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Wed, 06 Apr 2016 20:02:32 -0700
parents 22c3bdf28fff
children fb3a6eeedf31 30af491f98c5
comparison
equal deleted inserted replaced
23346:39f25354aeee 23347:7ae6a635fad0
412 public JavaKind getJavaKind() { 412 public JavaKind getJavaKind() {
413 return JavaKind.Object; 413 return JavaKind.Object;
414 } 414 }
415 415
416 @Override 416 @Override
417 public ResolvedJavaMethod resolveConcreteMethod(ResolvedJavaMethod method, ResolvedJavaType callerType) {
418 ResolvedJavaMethod resolvedMethod = resolveMethod(method, callerType);
419 if (resolvedMethod == null || resolvedMethod.isAbstract()) {
420 return null;
421 }
422 return resolvedMethod;
423 }
424
425 @Override
426 public ResolvedJavaMethod resolveMethod(ResolvedJavaMethod method, ResolvedJavaType callerType) { 417 public ResolvedJavaMethod resolveMethod(ResolvedJavaMethod method, ResolvedJavaType callerType) {
427 assert !callerType.isArray(); 418 assert !callerType.isArray();
419 if (isInterface()) {
420 // Methods can only be resolved against concrete types
421 return null;
422 }
428 if (method.isConcrete() && method.getDeclaringClass().equals(this) && method.isPublic()) { 423 if (method.isConcrete() && method.getDeclaringClass().equals(this) && method.isPublic()) {
429 return method; 424 return method;
430 } 425 }
431 if (!method.getDeclaringClass().isAssignableFrom(this)) { 426 if (!method.getDeclaringClass().isAssignableFrom(this)) {
432 return null; 427 return null;