mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 22:34:27 +02:00
7098528: crash with java -XX:+ExtendedDTraceProbes
Reviewed-by: kvn
This commit is contained in:
parent
7749aaf387
commit
bf203dac41
5 changed files with 49 additions and 15 deletions
|
@ -503,12 +503,8 @@ oop java_lang_Class::create_mirror(KlassHandle k, TRAPS) {
|
|||
if (SystemDictionary::Class_klass_loaded() && (k->oop_is_instance() || k->oop_is_javaArray())) {
|
||||
// Allocate mirror (java.lang.Class instance)
|
||||
Handle mirror = instanceMirrorKlass::cast(SystemDictionary::Class_klass())->allocate_instance(k, CHECK_0);
|
||||
// Setup indirections
|
||||
mirror->obj_field_put(_klass_offset, k());
|
||||
k->set_java_mirror(mirror());
|
||||
|
||||
instanceMirrorKlass* mk = instanceMirrorKlass::cast(mirror->klass());
|
||||
java_lang_Class::set_oop_size(mirror(), mk->instance_size(k));
|
||||
java_lang_Class::set_static_oop_field_count(mirror(), mk->compute_static_oop_field_count(mirror()));
|
||||
|
||||
// It might also have a component mirror. This mirror must already exist.
|
||||
|
@ -571,9 +567,10 @@ oop java_lang_Class::create_basic_type_mirror(const char* basic_type_name, Basic
|
|||
assert(aklass != NULL, "correct bootstrap");
|
||||
set_array_klass(java_class, aklass);
|
||||
}
|
||||
#ifdef ASSERT
|
||||
instanceMirrorKlass* mk = instanceMirrorKlass::cast(SystemDictionary::Class_klass());
|
||||
java_lang_Class::set_oop_size(java_class, mk->instance_size(oop(NULL)));
|
||||
java_lang_Class::set_static_oop_field_count(java_class, 0);
|
||||
assert(java_lang_Class::static_oop_field_count(java_class) == 0, "should have been zeroed by allocation");
|
||||
#endif
|
||||
return java_class;
|
||||
}
|
||||
|
||||
|
@ -587,6 +584,12 @@ klassOop java_lang_Class::as_klassOop(oop java_class) {
|
|||
}
|
||||
|
||||
|
||||
void java_lang_Class::set_klass(oop java_class, klassOop klass) {
|
||||
assert(java_lang_Class::is_instance(java_class), "must be a Class object");
|
||||
java_class->obj_field_put(_klass_offset, klass);
|
||||
}
|
||||
|
||||
|
||||
void java_lang_Class::print_signature(oop java_class, outputStream* st) {
|
||||
assert(java_lang_Class::is_instance(java_class), "must be a Class object");
|
||||
Symbol* name = NULL;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue