mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
8266017: Refactor the *klass::array_klass_impl code to separate the non-exception-throwing API
Reviewed-by: coleenp, iklam
This commit is contained in:
parent
f75dd80254
commit
23180f848f
8 changed files with 86 additions and 72 deletions
|
@ -1427,11 +1427,9 @@ void InstanceKlass::check_valid_for_instantiation(bool throwError, TRAPS) {
|
|||
}
|
||||
}
|
||||
|
||||
Klass* InstanceKlass::array_klass_impl(bool or_null, int n, TRAPS) {
|
||||
Klass* InstanceKlass::array_klass(int n, TRAPS) {
|
||||
// Need load-acquire for lock-free read
|
||||
if (array_klasses_acquire() == NULL) {
|
||||
if (or_null) return NULL;
|
||||
|
||||
ResourceMark rm(THREAD);
|
||||
JavaThread *jt = THREAD->as_Java_thread();
|
||||
{
|
||||
|
@ -1446,16 +1444,27 @@ Klass* InstanceKlass::array_klass_impl(bool or_null, int n, TRAPS) {
|
|||
}
|
||||
}
|
||||
}
|
||||
// _this will always be set at this point
|
||||
// array_klasses() will always be set at this point
|
||||
ObjArrayKlass* oak = 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);
|
||||
Klass* InstanceKlass::array_klass_or_null(int n) {
|
||||
// Need load-acquire for lock-free read
|
||||
ObjArrayKlass* oak = array_klasses_acquire();
|
||||
if (oak == NULL) {
|
||||
return NULL;
|
||||
} else {
|
||||
return oak->array_klass_or_null(n);
|
||||
}
|
||||
}
|
||||
|
||||
Klass* InstanceKlass::array_klass(TRAPS) {
|
||||
return array_klass(1, THREAD);
|
||||
}
|
||||
|
||||
Klass* InstanceKlass::array_klass_or_null() {
|
||||
return array_klass_or_null(1);
|
||||
}
|
||||
|
||||
static int call_class_initializer_counter = 0; // for debugging
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue