From 08cdde3f7c9f1fc8dab50fd236853fdfc14db56a Mon Sep 17 00:00:00 2001 From: Roland Schatz Date: Wed, 4 May 2016 12:06:51 +0200 Subject: [PATCH] 8156025: [JVMCI] make HotSpotResolvedObjectTypeImpl.createField non-public Reviewed-by: twisti --- .../src/jdk/vm/ci/hotspot/HotSpotResolvedObjectType.java | 3 --- .../jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java | 9 +++++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectType.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectType.java index 3501387061b..b207f9c32de 100644 --- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectType.java +++ b/hotspot/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.ConstantPool; 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 @@ public interface HotSpotResolvedObjectType extends ResolvedJavaType { HotSpotResolvedObjectType getEnclosingType(); ResolvedJavaMethod getClassInitializer(); - - ResolvedJavaField createField(String name, JavaType type, long offset, int modifiers); } diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java index a44404ffc56..51164cecc90 100644 --- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java +++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java @@ -469,7 +469,7 @@ final class HotSpotResolvedObjectTypeImpl extends HotSpotResolvedJavaType implem 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(); @@ -489,7 +489,12 @@ final class HotSpotResolvedObjectTypeImpl extends HotSpotResolvedJavaType implem 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; }