Mercurial > hg > graal-jvmci-8
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; |