< prev index next >

src/hotspot/share/classfile/javaClasses.cpp

Print this page

        

*** 1119,1130 **** void java_lang_Class::archive_basic_type_mirrors(TRAPS) { assert(HeapShared::is_heap_object_archiving_allowed(), "HeapShared::is_heap_object_archiving_allowed() must be true"); ! for (int t = 0; t <= T_VOID; t++) { ! oop m = Universe::_mirrors[t]; if (m != NULL) { // Update the field at _array_klass_offset to point to the relocated array klass. oop archived_m = HeapShared::archive_heap_object(m, THREAD); assert(archived_m != NULL, "sanity"); Klass *ak = (Klass*)(archived_m->metadata_field(_array_klass_offset)); --- 1119,1131 ---- void java_lang_Class::archive_basic_type_mirrors(TRAPS) { assert(HeapShared::is_heap_object_archiving_allowed(), "HeapShared::is_heap_object_archiving_allowed() must be true"); ! for (int t = T_BOOLEAN; t < T_VOID+1; t++) { ! BasicType bt = (BasicType)t; ! oop m = Universe::_mirrors[t].resolve(); if (m != NULL) { // Update the field at _array_klass_offset to point to the relocated array klass. oop archived_m = HeapShared::archive_heap_object(m, THREAD); assert(archived_m != NULL, "sanity"); Klass *ak = (Klass*)(archived_m->metadata_field(_array_klass_offset));
*** 1140,1176 **** ResetMirrorField reset(archived_mirror_h); InstanceKlass::cast(k)->do_nonstatic_fields(&reset); log_trace(cds, heap, mirror)( "Archived %s mirror object from " PTR_FORMAT " ==> " PTR_FORMAT, ! type2name((BasicType)t), p2i(Universe::_mirrors[t]), p2i(archived_m)); ! Universe::_mirrors[t] = archived_m; } } - - assert(Universe::_mirrors[T_INT] != NULL && - Universe::_mirrors[T_FLOAT] != NULL && - Universe::_mirrors[T_DOUBLE] != NULL && - Universe::_mirrors[T_BYTE] != NULL && - Universe::_mirrors[T_BOOLEAN] != NULL && - Universe::_mirrors[T_CHAR] != NULL && - Universe::_mirrors[T_LONG] != NULL && - Universe::_mirrors[T_SHORT] != NULL && - Universe::_mirrors[T_VOID] != NULL, "sanity"); - - Universe::set_int_mirror(Universe::_mirrors[T_INT]); - Universe::set_float_mirror(Universe::_mirrors[T_FLOAT]); - Universe::set_double_mirror(Universe::_mirrors[T_DOUBLE]); - Universe::set_byte_mirror(Universe::_mirrors[T_BYTE]); - Universe::set_bool_mirror(Universe::_mirrors[T_BOOLEAN]); - Universe::set_char_mirror(Universe::_mirrors[T_CHAR]); - Universe::set_long_mirror(Universe::_mirrors[T_LONG]); - Universe::set_short_mirror(Universe::_mirrors[T_SHORT]); - Universe::set_void_mirror(Universe::_mirrors[T_VOID]); } - // // After the mirror object is successfully archived, the archived // klass is set with _has_archived_raw_mirror flag. // // The _has_archived_raw_mirror flag is cleared at runtime when the --- 1141,1156 ---- ResetMirrorField reset(archived_mirror_h); InstanceKlass::cast(k)->do_nonstatic_fields(&reset); log_trace(cds, heap, mirror)( "Archived %s mirror object from " PTR_FORMAT " ==> " PTR_FORMAT, ! type2name(bt), p2i(m), p2i(archived_m)); ! Universe::replace_mirror(bt, archived_m); } } } // // After the mirror object is successfully archived, the archived // klass is set with _has_archived_raw_mirror flag. // // The _has_archived_raw_mirror flag is cleared at runtime when the
< prev index next >