Mercurial > hg > graal-jvmci-8
changeset 23375:3f70efb8f473
Make HotSpotResolvedObjectTypeImpl.createField internal.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Wed, 04 May 2016 12:06:51 +0200 |
parents | acae988d96ad |
children | ae27c683c128 |
files | jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectType.java jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java |
diffstat | 2 files changed, 7 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectType.java Fri Apr 29 14:47:29 2016 -0700 +++ b/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectType.java Wed May 04 12:06:51 2016 +0200 @@ -28,7 +28,6 @@ import jdk.vm.ci.meta.JavaConstant; import jdk.vm.ci.meta.JavaKind; import jdk.vm.ci.meta.JavaType; -import jdk.vm.ci.meta.ResolvedJavaField; import jdk.vm.ci.meta.ResolvedJavaMethod; import jdk.vm.ci.meta.ResolvedJavaType; @@ -107,6 +106,4 @@ HotSpotResolvedObjectType getEnclosingType(); ResolvedJavaMethod getClassInitializer(); - - ResolvedJavaField createField(String name, JavaType type, long offset, int modifiers); }
--- a/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java Fri Apr 29 14:47:29 2016 -0700 +++ b/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java Wed May 04 12:06:51 2016 +0200 @@ -488,7 +488,7 @@ return result; } - public synchronized HotSpotResolvedJavaField createField(String fieldName, JavaType type, long offset, int rawFlags) { + synchronized HotSpotResolvedJavaField createField(String fieldName, JavaType type, long offset, int rawFlags) { HotSpotResolvedJavaField result = null; final int flags = rawFlags & ModifiersProvider.jvmFieldModifiers(); @@ -508,7 +508,12 @@ fieldCache.put(id, result); } else { assert result.getName().equals(fieldName); - assert result.getType().equals(type); + /* + * Comparing the types directly is too strict, because the type in the cache could be + * resolved while the incoming type is unresolved. The name comparison is sufficient + * because the type will always be resolved in the context of the holder. + */ + assert result.getType().getName().equals(type.getName()); assert result.offset() == offset; assert result.getModifiers() == flags; }