Ping: Re: RFR: JDK-8241618 Fix unchecked warning for jdk.hotspot.agent

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Wed Apr 15 07:02:27 UTC 2020


On 2020-04-15 02:34, serguei.spitsyn at oracle.com wrote:
> Hi Magnus,
>
> It looks good to me.
Thanks for the review, Serguei!

/Magnus
>
> Thanks,
> Serguei
>
>
> On 4/14/20 14:23, Chris Plummer wrote:
>> Hi Magnus,
>>
>> The changes look good. Just one minor issue:
>>
>> http://cr.openjdk.java.net/~ihse/JDK-8241618-fix-unchecked-warnings-for-agent/webrev.02/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Metadata.java.frames.html
>>
>> Copyright was updated, but no other changes in this file.
>>
>> BTW, do you know why there were cases in the old code of having the 
>> right generic type in a comment. For example:
>>
>> 1177     private static List/*<Field>*/ 
>> getInstanceFields(InstanceKlass ik) {
>>
>> and
>>
>> 1276     private Map classDataCache = new HashMap(); // 
>> <InstanceKlass, ClassData>
>>
>> It's almost as if some of the code was initially properly written for 
>> generics, but then backported to work with a pre-generics version of jdk.
>>
>> thanks,
>>
>> Chris
>>
>> On 4/14/20 2:24 AM, Magnus Ihse Bursie wrote:
>>> Hi,
>>>
>>> Can I please get a review for this, simplified version of the patch? 
>>> This only contain trivial changes, like this:
>>> -  private List    objects; // ArrayList<ScopeValue>
>>> +  private List<ObjectValue> objects;
>>> Basically all changes are to the container types List or Map (and a 
>>> few changes from Class to Class<?>).
>>>
>>> If the list of all the files look horrible in the webrev, have a 
>>> look at the patch file instead, it is easier to scroll through and 
>>> check the changes:
>>> http://cr.openjdk.java.net/~ihse/JDK-8241618-fix-unchecked-warnings-for-agent/webrev.02/open.patch
>>>
>>> /Magnus
>>>
>>> On 2020-03-30 16:25, Magnus Ihse Bursie wrote:
>>>>
>>>>
>>>> On 2020-03-25 20:52, Chris Plummer wrote:
>>>>> Hi Magus,
>>>>>
>>>>> I haven't looked at the changes yet, other to see that there are 
>>>>> many files touched, but after reading below (and only partly 
>>>>> understanding since I don't know this area well), I was wondering 
>>>>> if this issue wouldn't be better served with multiple passes made 
>>>>> to fix the warnings. Start with a straight forward one where you 
>>>>> are maybe only making one or two types of changes, but that affect 
>>>>> a large number of files and don't cascade into other more 
>>>>> complicated changes. This will get a lot of the noise out of the 
>>>>> way, and then we can focus on some of the harder issues you bring 
>>>>> up below.
>>>> Ok, I did just this. Here is an updated webrev. It contain the bulk 
>>>> of the changes, but all changes are -- I dare not say trivially 
>>>> obvious, but at least no-brainers. Hopefully it should be easier to 
>>>> review so I can get this pushed and out of the way.
>>>>
>>>> This also means that it is not possible to turn on the warning just 
>>>> yet.
>>>>
>>>> http://cr.openjdk.java.net/~ihse/JDK-8241618-fix-unchecked-warnings-for-agent/webrev.02 
>>>>
>>>>
>>>> /Magnus
>>>>>
>>>>> As for testing, I think the following list will capture all of 
>>>>> them, but can't say for sure:
>>>>>
>>>>> open/test/hotspot/jtreg/serviceability/sa
>>>>> open/test/hotspot/jtreg/resourcehogs/serviceability/sa
>>>>> open/test/jdk/sun/tools/jhsdb
>>>>> open/test/jdk/sun/tools/jstack
>>>>> open/test/jdk/sun/tools/jmap
>>>>> open/test/hotspot/jtreg/gc/metaspace/CompressedClassSpaceSizeInJmapHeap.java 
>>>>>
>>>>> open/test/hotspot/jtreg/compiler/ciReplay/TestSAClient.java 
>>>>> open/test/hotspot/jtreg/compiler/ciReplay/TestSAServer.java
>>>>>
>>>>> Chris
>>>>>
>>>>> On 3/25/20 12:29 PM, Magnus Ihse Bursie wrote:
>>>>>> With the recent fixes in JDK-8241310, JDK-8237746 and 
>>>>>> JDK-8241073, and the upcoming fixes to remove the deprecated 
>>>>>> nashorn and jdk.rmi, the JDK build is very close to producing no 
>>>>>> warnings when compiling the Java classes.
>>>>>>
>>>>>> The one remaining sinner is jdk.hotspot.agent. Most of the 
>>>>>> warnings here are turned off, but unchecked and deprecation 
>>>>>> cannot be completely silenced.
>>>>>>
>>>>>> Since the poor agent does not seem to receive much love nowadays, 
>>>>>> I took it upon myself to fix these warnings, so we can finally 
>>>>>> get a quiet build.
>>>>>>
>>>>>> I started to address the unchecked warnings. Unfortunately, this 
>>>>>> was a much bigger task than I anticipated. I had to generify most 
>>>>>> of the module. On the plus side, the code is so much better now. 
>>>>>> And most of the changes were trivial, just tedious.
>>>>>>
>>>>>> There are a few places were I'm not entirely happy with the 
>>>>>> current solution, and that at least merits some discussion.
>>>>>>
>>>>>> I have resorted to @SuppressWarnings in four classes: 
>>>>>> ciMethodData, MethodData, TableModelComparator and 
>>>>>> VirtualBaseConstructor. All of them has in common that they are 
>>>>>> doing slightly fishy things with classes in collections. I'm not 
>>>>>> entirely sure they are bug-free, but this patch leaves the 
>>>>>> behavior untouched. I did some efforts to sort out the logic, but 
>>>>>> it turned out to be too hairy for me to fix, and it will probably 
>>>>>> require more substantial changes to the workings of the code.
>>>>>>
>>>>>> To make the code valid, I have moved ConstMethod to extend 
>>>>>> Metadata instead of VMObject. My understanding is that this is 
>>>>>> benign (and likely intended), but I really need for someone who 
>>>>>> knows the code to confirm this. I have also added a FIXME to 
>>>>>> signal this. I'll remove the FIXME as soon as I get confirmation 
>>>>>> that this is OK.
>>>>>> (The reason for this is the following piece of code from 
>>>>>> Metadata.java: metadataConstructor.addMapping("ConstMethod", 
>>>>>> ConstMethod.class))
>>>>>>
>>>>>> In ObjectListPanel, there is some code that screams "dead" with 
>>>>>> this change. I added a FIXME to point this out:
>>>>>>     for (Iterator<Oop> iter = elements.iterator(); 
>>>>>> iter.hasNext(); ) {
>>>>>>       if (iter.next() instanceof Array) {
>>>>>>         // FIXME: Does not seem possible to happen
>>>>>>         hasArrays = true;
>>>>>>         return;
>>>>>>       }
>>>>>> It seems that if you start pulling this thread, even more dead 
>>>>>> code will unravel, so I'm not so eager to touch this in the 
>>>>>> current patch. But I can remove the FIXME if you want.
>>>>>>
>>>>>> My first iteration of this patch tried to generify the 
>>>>>> IntervalTree and related class hierarchy. However, this turned 
>>>>>> out to be impossible due to some weird usage in 
>>>>>> AnnotatedMemoryPanel, where there seemed to be confusion as to 
>>>>>> whether the tree stored Annotations or Addresses. I'm not 
>>>>>> entirely convinced the code is correct, it certainly looked and 
>>>>>> smelled very fishy. However, I reverted these changes since I 
>>>>>> could not get them to work due to this, and it was not needed for 
>>>>>> the goal of just getting rid of the warning.
>>>>>>
>>>>>> Finally, I have done no testing apart from verifying that it 
>>>>>> builds. Please advice on suitable tests to run.
>>>>>>
>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8241618
>>>>>> WebRev: 
>>>>>> http://cr.openjdk.java.net/~ihse/JDK-8241618-fix-unchecked-warnings-for-agent/webrev.01
>>>>>>
>>>>>> /Magnus
>>>>>
>>>>>
>>>>
>>>
>>
>




More information about the build-dev mailing list