# HG changeset patch # User Roland Schatz # Date 1462356411 -7200 # Node ID 3f70efb8f473c860f9908f5cd06719d7948ac60d # Parent acae988d96ad5328414e768f1a9175567ded4873 Make HotSpotResolvedObjectTypeImpl.createField internal. diff -r acae988d96ad -r 3f70efb8f473 jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectType.java --- 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); } diff -r acae988d96ad -r 3f70efb8f473 jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java --- 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; }