# HG changeset patch # User rschatz # Date 1462356411 -7200 # Wed May 04 12:06:51 2016 +0200 # Node ID 263baa69fd882511a6eb22358795da15c767181d # Parent 3f6fd139a5913d8271a6adae19c6afbe885267e5 8156025: [JVMCI] make HotSpotResolvedObjectTypeImpl.createField non-public diff --git a/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectType.java b/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectType.java --- a/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectType.java +++ b/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectType.java @@ -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; @@ -109,6 +108,4 @@ HotSpotResolvedObjectType getEnclosingType(); ResolvedJavaMethod getClassInitializer(); - - ResolvedJavaField createField(String name, JavaType type, long offset, int modifiers); } diff --git a/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java b/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java --- a/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java +++ b/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java @@ -470,7 +470,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(); @@ -490,7 +490,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; }