src/hotspot/share/oops/objArrayKlass.cpp
changeset 52619 5b4242996d8c
parent 52033 d6aa9ea2405d
child 53152 08db5aa02f7b
equal deleted inserted replaced
52618:4ed308e0e89b 52619:5b4242996d8c
    78       if (!supers_exist) {
    78       if (!supers_exist) {
    79         // Oops.  Not allocated yet.  Back out, allocate it, and retry.
    79         // Oops.  Not allocated yet.  Back out, allocate it, and retry.
    80         Klass* ek = NULL;
    80         Klass* ek = NULL;
    81         {
    81         {
    82           MutexUnlocker mu(MultiArray_lock);
    82           MutexUnlocker mu(MultiArray_lock);
    83           MutexUnlocker mc(Compile_lock);   // for vtables
       
    84           super_klass = element_super->array_klass(CHECK_0);
    83           super_klass = element_super->array_klass(CHECK_0);
    85           for( int i = element_supers->length()-1; i >= 0; i-- ) {
    84           for( int i = element_supers->length()-1; i >= 0; i-- ) {
    86             Klass* elem_super = element_supers->at(i);
    85             Klass* elem_super = element_supers->at(i);
    87             elem_super->array_klass(CHECK_0);
    86             elem_super->array_klass(CHECK_0);
    88           }
    87           }
   330     if (or_null)  return NULL;
   329     if (or_null)  return NULL;
   331 
   330 
   332     ResourceMark rm;
   331     ResourceMark rm;
   333     JavaThread *jt = (JavaThread *)THREAD;
   332     JavaThread *jt = (JavaThread *)THREAD;
   334     {
   333     {
   335       MutexLocker mc(Compile_lock, THREAD);   // for vtables
       
   336       // Ensure atomic creation of higher dimensions
   334       // Ensure atomic creation of higher dimensions
   337       MutexLocker mu(MultiArray_lock, THREAD);
   335       MutexLocker mu(MultiArray_lock, THREAD);
   338 
   336 
   339       // Check if another thread beat us
   337       // Check if another thread beat us
   340       if (higher_dimension() == NULL) {
   338       if (higher_dimension() == NULL) {