Harold,

Looks good. Many thanks!

Karen

> On Feb 12, 2018, at 3:50 PM, harold seigel <harold.sei...@oracle.com> wrote:
> 
> Hi Karen,
> 
> Thanks for looking at this!
> 
> I re-ran the ParallelClassLoading tests with no options, with 
> -XX:+AllowParallelDefineClass, and with -XX:+AlwaysLockClassLoader, and all 
> the tests passed.  I also determined that the few Mach5 regression test 
> failures that I encountered were unrelated to my change.
> Please see this latest webrev that adds 12 as an expiration date, removes the 
> 'guarantee' section, and fixes the comment at line 786 of 
> systemDictionary.cpp.
> http://cr.openjdk.java.net/~hseigel/bug_8184289.3/webrev/index.html 
> <http://cr.openjdk.java.net/~hseigel/bug_8184289.3/webrev/index.html>
> Thanks, Harold
> 
> On 2/12/2018 2:39 PM, Karen Kinnear wrote:
>> Harold,
>> 
>> Thanks for doing this. 
>> 
>> I think you told me that
>> 1) the version change has made it in
>> 2) you also put 12 as an expiration date
>> 3) you are running the ParallelClassLoading tests with the remaining two 
>> flags (you’ve already
>> run them without any flags):
>>   AllowParallelDefineClass = true and AlwaysLockClassLoader=true
>> 
>> In terms of the guarantee in question
>>   // For UnsyncloadClass only
>>  848       // If they got a linkageError, check if a parallel class load 
>> succeeded.
>>  849       // If it did, then for bytecode resolution the specification 
>> requires
>>  850       // that we return the same result we did for the other thread, 
>> i.e. the
>>  851       // successfully loaded InstanceKlass
>>  852       // Should not get here for classloaders that support parallelism
>>  853       // with the new cleaner mechanism, even with 
>> AllowParallelDefineClass
>>  854       // Bootstrap goes through here to allow for an extra guarantee 
>> check
>>  855       if (UnsyncloadClass || (class_loader.is_null())) {
>>  856         if (k == NULL && HAS_PENDING_EXCEPTION
>>  857           && 
>> PENDING_EXCEPTION->is_a(SystemDictionary::LinkageError_klass())) {
>>  858           MutexLocker mu(SystemDictionary_lock, THREAD);
>>  859           InstanceKlass* check = find_class(d_hash, name, dictionary);
>>  860           if (check != NULL) {
>>  861             // Klass is already loaded, so just use it
>>  862             k = check;
>>  863             CLEAR_PENDING_EXCEPTION;
>>  864             guarantee((!class_loader.is_null()), "dup definition for 
>> bootstrap loader?");
>>  865           }
>>  866         }
>>  867       }
>> 
>>   1) I agree you can remove the entire section
>>       - the guarantee was there for future proofing in case we ever allowed 
>> parallel class loading of the
>>         same class for the null loader and to make sure I didn’t have any 
>> logic holes.
>>       - I would not put an assertion for the first half of the condition - I 
>> would remove completely
>>       - the code currently prevents parallel class loading of the same class 
>> for the null loader at:
>> resolve_instance_class_or_null see line 785 …
>>   while (!class_has_been_loaded && old probe && old 
>> probe->instance_load_in_progress()) {
>>      //  case x: bootstrap class loader: prevent futile class loading,
>>      // wait on first requestor
>>      if (class_loader.is_null()) {
>>         SystemDictionary_lock->wait();
>> 
>> This logic means that there is a registered INSTANCE_LOAD on this 
>> placeholder entry.
>> 
>> 
>> Other minor comments (sorry if you already got these and I missed them in 
>> earlier emails)
>> - all in SystemDictionary.cpp
>> 
>> 1. line 72 comment “Five cases:” -> “Four cases:”
>> So you removed case 3 and renumbered, so old references to case 4 -> case 3 
>> ,and old references
>> to case 5 become case 4:
>> 
>> So - line 786, “Case 4” -> “case 3”
>> 
>> thanks,
>> Karen
>> 
>> 
>>> On Feb 12, 2018, at 11:13 AM, harold seigel <harold.sei...@oracle.com 
>>> <mailto:harold.sei...@oracle.com>> wrote:
>>> 
>>> Hi Alan,
>>> 
>>> Thanks for looking at this.
>>> 
>>> Harold
>>> 
>>> On 2/12/2018 2:52 AM, Alan Bateman wrote:
>>>> On 12/02/2018 06:54, David Holmes wrote:
>>>>> Hi Harold,
>>>>> 
>>>>> Adding core-libs-dev so they are aware of the ClassLoader change.
>>>> Thanks, that part is okay and good to see this going away.
>>>> 
>>>> -Alan
>>> 
>> 
> 

Reply via email to