Skip to content

Commit 8828d51

Browse files
Use FeatureSet as the caching key instead of the hash code
The current code pretends hash collisions do not exist. PiperOrigin-RevId: 784631218
1 parent 2d86020 commit 8828d51

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

java/core/src/main/java/com/google/protobuf/Descriptors.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public final class Descriptors {
7070
private static final EnumDescriptor[] EMPTY_ENUM_DESCRIPTORS = new EnumDescriptor[0];
7171
private static final ServiceDescriptor[] EMPTY_SERVICE_DESCRIPTORS = new ServiceDescriptor[0];
7272
private static final OneofDescriptor[] EMPTY_ONEOF_DESCRIPTORS = new OneofDescriptor[0];
73-
private static final ConcurrentHashMap<Integer, FeatureSet> FEATURE_CACHE =
73+
private static final ConcurrentHashMap<FeatureSet, FeatureSet> FEATURE_CACHE =
7474
new ConcurrentHashMap<>();
7575

7676
@SuppressWarnings("NonFinalStaticField")
@@ -142,7 +142,7 @@ static FeatureSet getEditionDefaults(Edition edition) {
142142
}
143143

144144
private static FeatureSet internFeatures(FeatureSet features) {
145-
FeatureSet cached = FEATURE_CACHE.putIfAbsent(features.hashCode(), features);
145+
FeatureSet cached = FEATURE_CACHE.putIfAbsent(features, features);
146146
if (cached == null) {
147147
return features;
148148
}

0 commit comments

Comments
 (0)