RFR: 8079408: Reimplement TraceClassLoading, TraceClassUnloading, and TraceClassLoaderData with Unified Logging.

Max Ockner max.ockner at oracle.com
Fri Jan 29 16:05:09 UTC 2016


I have fixed this. I am still responding to other suggestions.
Thanks,
Max
On 1/28/2016 6:07 PM, Ioi Lam wrote:
> Hi Max,
>
> It looks really good now. Just a minor nit for classFileParser.cpp and 
> systemDictionary.cpp, add the comment suggested by David:
>
> 1305     if (log_is_enabled(Info, classload)) {
> 1306       ik()->print_loading_log(LogLevel::Info, loader_data, NULL);
> 1307     }
>          // No 'else' here as logging levels are not mutually exclusive
> 1308     if (log_is_enabled(Debug, classload)) {
> 1309       ik()->print_loading_log(LogLevel::Debug, loader_data, NULL);
> 1310     }
>
> If there are no other changes, you don't need to post new webrev.
>
> Thanks
> - Ioi
>
>
>
> On 1/28/16 12:15 PM, Coleen Phillimore wrote:
>>
>> Yes, this test looks really good.  Thanks Ioi for figuring out the 
>> vagaries of jtreg.
>>
>> Coleen
>>
>> On 1/28/16 2:29 PM, Max Ockner wrote:
>>> Forwarded private discussion with Ioi about changing the test to use 
>>> ClassUnloadCommon.
>>>
>>> Hopefully nearing the end:
>>>
>>> Webrev: http://cr.openjdk.java.net/~mockner/classload.08/
>>>
>>> -------- Original Message --------
>>> Subject:     Re: RFR: 8079408: Reimplement TraceClassLoading, 
>>> TraceClassUnloading, and TraceClassLoaderData with Unified Logging.
>>> Date:     Thu, 28 Jan 2016 10:57:15 -0800
>>> From:     Ioi Lam <ioi.lam at oracle.com>
>>> To:     Max Ockner <max.ockner at oracle.com>
>>>
>>>
>>>
>>> Hi Max,
>>>
>>> Thanks for doing this. Also, I sent the e-mail to you personally, so 
>>> you may want to post the new version in the open list for record 
>>> purpose.
>>>
>>> Thanks
>>> - Ioi
>>>
>>> On 1/28/16 8:11 AM, Max Ockner wrote:
>>>> Ioi,
>>>> I have replaced my test with this test that you have given me 
>>>> (thank you!)
>>>> I also have removed the commented out section which used to test 
>>>> for "making nmethod ...", and I have added the comment that you 
>>>> suggested at the top of ClassUnloadCommon.java
>>>> Thanks,
>>>> Max
>>>> On 1/27/2016 7:13 PM, Ioi Lam wrote:
>>>>>
>>>>>
>>>>> On 1/27/16 12:51 PM, Max Ockner wrote:
>>>>>> Though Ioi suggested I change my new test, I have not done that. 
>>>>>> I was recommended to copy from 
>>>>>> runtime/ClassUnload/UnloadTest.java instead of rolling my own 
>>>>>> test for class unloading. I mentioned that it was tricky to make 
>>>>>> the new test work, but it was tricky because I was trying to copy 
>>>>>> from UnloadTest.java. This test refers to a class "test.Empty" 
>>>>>> from a "classes" library, but the new test has a processBuilder 
>>>>>> which I think does not play nicely with the class path for 
>>>>>> "test.Empty". In the end it was much easier to hardcode the 
>>>>>> entire test into one place than to follow UnloadTest.java and 
>>>>>> refer to extra libraries.
>>>>>>
>>>>>
>>>>> Hi Max,
>>>>>
>>>>> I've written a version of ClassLoadUnloadTest.java using 
>>>>> ClassUnloadCommon. The main trick is here:
>>>>>
>>>>>         Collections.addAll(argsList, "-Dtest.classes=" + 
>>>>> System.getProperty("test.classes","."));
>>>>>
>>>>> That's because of this line in ClassUnloadCommon:
>>>>>
>>>>>             return new URLClassLoader(new URL[] {
>>>>> Paths.get(System.getProperty("test.classes",".") + 
>>>>> File.separatorChar + "classes").toUri().toURL(),
>>>>>             }, null);
>>>>>
>>>>> When Jtreg launches a sub-process, it strips off all the Java 
>>>>> system properties, so you need to add the "-D" in the command-line.
>>>>>
>>>>> I also disabled the test related to "making nmethod ... 
>>>>> unloadable". As Rachel found out in JDK-8146137, the compiler is 
>>>>> unpredictable. Even if you invoke a method 10001 times, there's no 
>>>>> guaranteed that it will always be compiled. Since this is not an 
>>>>> 'easy-to-test' feature, we should just skip it.
>>>>>
>>>>> I would also suggest adding this to the header of 
>>>>> ClassUnloadCommon.java
>>>>>
>>>>> /*
>>>>>  * To use ClassUnloadCommon from a sub-process, see 
>>>>> hotspot/test/runtime/logging/ClassLoadUnloadTest.java
>>>>>  * for an example.
>>>>>  */
>>>>>
>>>>> What do you think?
>>>>> - Ioi
>>>>
>>>
>>>
>>>
>>
>



More information about the hotspot-runtime-dev mailing list