< prev index next >

src/hotspot/share/oops/instanceKlass.cpp

Print this page

        

*** 1396,1406 **** THROW_MSG(throwError ? vmSymbols::java_lang_IllegalAccessError() : vmSymbols::java_lang_IllegalAccessException(), external_name()); } } ! Klass* InstanceKlass::array_klass_impl(bool or_null, int n, TRAPS) { // Need load-acquire for lock-free read if (array_klasses_acquire() == NULL) { if (or_null) return NULL; ResourceMark rm; --- 1396,1407 ---- THROW_MSG(throwError ? vmSymbols::java_lang_IllegalAccessError() : vmSymbols::java_lang_IllegalAccessException(), external_name()); } } ! Klass* InstanceKlass::array_klass_impl(ArrayStorageProperties storage_props, bool or_null, int n, TRAPS) { ! assert(!storage_props.is_flattened(), "Can't be flattened"); // Need load-acquire for lock-free read if (array_klasses_acquire() == NULL) { if (or_null) return NULL; ResourceMark rm;
*** 1409,1434 **** // Atomic creation of array_klasses MutexLocker ma(MultiArray_lock, THREAD); // Check if update has already taken place if (array_klasses() == NULL) { ! Klass* k = ObjArrayKlass::allocate_objArray_klass(class_loader_data(), 1, this, CHECK_NULL); // use 'release' to pair with lock-free load release_set_array_klasses(k); } } } // _this will always be set at this point ObjArrayKlass* oak = (ObjArrayKlass*)array_klasses(); if (or_null) { ! return oak->array_klass_or_null(n); } ! return oak->array_klass(n, THREAD); } ! Klass* InstanceKlass::array_klass_impl(bool or_null, TRAPS) { ! return array_klass_impl(or_null, 1, THREAD); } static int call_class_initializer_counter = 0; // for debugging Method* InstanceKlass::class_initializer() const { --- 1410,1435 ---- // Atomic creation of array_klasses MutexLocker ma(MultiArray_lock, THREAD); // Check if update has already taken place if (array_klasses() == NULL) { ! Klass* k = ObjArrayKlass::allocate_objArray_klass(storage_props, 1, this, CHECK_NULL); // use 'release' to pair with lock-free load release_set_array_klasses(k); } } } // _this will always be set at this point ObjArrayKlass* oak = (ObjArrayKlass*)array_klasses(); if (or_null) { ! return oak->array_klass_or_null(storage_props, n); } ! return oak->array_klass(storage_props, n, THREAD); } ! Klass* InstanceKlass::array_klass_impl(ArrayStorageProperties storage_props, bool or_null, TRAPS) { ! return array_klass_impl(storage_props, or_null, 1, THREAD); } static int call_class_initializer_counter = 0; // for debugging Method* InstanceKlass::class_initializer() const {
*** 1649,1663 **** } FREE_C_HEAP_ARRAY(int, fields_sorted); } - void InstanceKlass::array_klasses_do(void f(Klass* k, TRAPS), TRAPS) { - if (array_klasses() != NULL) - ArrayKlass::cast(array_klasses())->array_klasses_do(f, THREAD); - } - void InstanceKlass::array_klasses_do(void f(Klass* k)) { if (array_klasses() != NULL) ArrayKlass::cast(array_klasses())->array_klasses_do(f); } --- 1650,1659 ----
< prev index next >