RFR 8139870: sun.management.LazyCompositeData.isTypeMatched() fails for composite types with items of ArrayType
Jaroslav Bachorik
jaroslav.bachorik at oracle.com
Mon Oct 19 11:37:10 UTC 2015
Please, review the following change
Issue : https://bugs.openjdk.java.net/browse/JDK-8139870
Webrev: http://cr.openjdk.java.net/~jbachorik/8139870/webrev.00
sun.management.LazyCompositeData.isTypeMatched() method is used to
compare two composite types with the backward compatibility in mind. The
idea is that when we have two types (type1, type2) type1 is matched by
type2 when and only when type2 contains all the items of type1 and their
types are in turn matching the item types from type1, recursively.
However, this method fails to account for ArrayType type and instead of
calling isTypeMatched() recursively on the array type it performs plain
Object.equals(). This will cause problems when one tries to safely
evolve (only adding items) composite types referred through ArrayType items.
The patch adds the missing functionality.
In http://cr.openjdk.java.net/~jbachorik/8139870/webrev.00/cleanup there
is a followup webrev of code warnings cleanup for s.m.LazyComponentData.
Thanks,
-JB-
More information about the serviceability-dev
mailing list