< prev index next >

src/share/vm/runtime/deoptimization.cpp

Print this page

        

*** 807,829 **** for (int i = 0; i < objects->length(); i++) { assert(objects->at(i)->is_object(), "invalid debug information"); ObjectValue* sv = (ObjectValue*) objects->at(i); ! KlassHandle k(java_lang_Class::as_Klass(sv->klass()->as_ConstantOopReadValue()->value()())); oop obj = NULL; if (k->is_instance_klass()) { ! InstanceKlass* ik = InstanceKlass::cast(k()); obj = ik->allocate_instance(THREAD); } else if (k->is_typeArray_klass()) { ! TypeArrayKlass* ak = TypeArrayKlass::cast(k()); assert(sv->field_size() % type2size[ak->element_type()] == 0, "non-integral array length"); int len = sv->field_size() / type2size[ak->element_type()]; obj = ak->allocate(len, THREAD); } else if (k->is_objArray_klass()) { ! ObjArrayKlass* ak = ObjArrayKlass::cast(k()); obj = ak->allocate(sv->field_size(), THREAD); } if (obj == NULL) { failures = true; --- 807,829 ---- for (int i = 0; i < objects->length(); i++) { assert(objects->at(i)->is_object(), "invalid debug information"); ObjectValue* sv = (ObjectValue*) objects->at(i); ! Klass* k = java_lang_Class::as_Klass(sv->klass()->as_ConstantOopReadValue()->value()()); oop obj = NULL; if (k->is_instance_klass()) { ! InstanceKlass* ik = InstanceKlass::cast(k); obj = ik->allocate_instance(THREAD); } else if (k->is_typeArray_klass()) { ! TypeArrayKlass* ak = TypeArrayKlass::cast(k); assert(sv->field_size() % type2size[ak->element_type()] == 0, "non-integral array length"); int len = sv->field_size() / type2size[ak->element_type()]; obj = ak->allocate(len, THREAD); } else if (k->is_objArray_klass()) { ! ObjArrayKlass* ak = ObjArrayKlass::cast(k); obj = ak->allocate(sv->field_size(), THREAD); } if (obj == NULL) { failures = true;
*** 1076,1100 **** // restore fields of all eliminated objects and arrays void Deoptimization::reassign_fields(frame* fr, RegisterMap* reg_map, GrowableArray<ScopeValue*>* objects, bool realloc_failures, bool skip_internal) { for (int i = 0; i < objects->length(); i++) { ObjectValue* sv = (ObjectValue*) objects->at(i); ! KlassHandle k(java_lang_Class::as_Klass(sv->klass()->as_ConstantOopReadValue()->value()())); Handle obj = sv->value(); assert(obj.not_null() || realloc_failures, "reallocation was missed"); if (PrintDeoptimizationDetails) { tty->print_cr("reassign fields for object of type %s!", k->name()->as_C_string()); } if (obj.is_null()) { continue; } if (k->is_instance_klass()) { ! InstanceKlass* ik = InstanceKlass::cast(k()); reassign_fields_by_klass(ik, fr, reg_map, sv, 0, obj(), skip_internal); } else if (k->is_typeArray_klass()) { ! TypeArrayKlass* ak = TypeArrayKlass::cast(k()); reassign_type_array_elements(fr, reg_map, sv, (typeArrayOop) obj(), ak->element_type()); } else if (k->is_objArray_klass()) { reassign_object_array_elements(fr, reg_map, sv, (objArrayOop) obj()); } } --- 1076,1100 ---- // restore fields of all eliminated objects and arrays void Deoptimization::reassign_fields(frame* fr, RegisterMap* reg_map, GrowableArray<ScopeValue*>* objects, bool realloc_failures, bool skip_internal) { for (int i = 0; i < objects->length(); i++) { ObjectValue* sv = (ObjectValue*) objects->at(i); ! Klass* k = java_lang_Class::as_Klass(sv->klass()->as_ConstantOopReadValue()->value()()); Handle obj = sv->value(); assert(obj.not_null() || realloc_failures, "reallocation was missed"); if (PrintDeoptimizationDetails) { tty->print_cr("reassign fields for object of type %s!", k->name()->as_C_string()); } if (obj.is_null()) { continue; } if (k->is_instance_klass()) { ! InstanceKlass* ik = InstanceKlass::cast(k); reassign_fields_by_klass(ik, fr, reg_map, sv, 0, obj(), skip_internal); } else if (k->is_typeArray_klass()) { ! TypeArrayKlass* ak = TypeArrayKlass::cast(k); reassign_type_array_elements(fr, reg_map, sv, (typeArrayOop) obj(), ak->element_type()); } else if (k->is_objArray_klass()) { reassign_object_array_elements(fr, reg_map, sv, (objArrayOop) obj()); } }
*** 1134,1144 **** void Deoptimization::print_objects(GrowableArray<ScopeValue*>* objects, bool realloc_failures) { fieldDescriptor fd; for (int i = 0; i < objects->length(); i++) { ObjectValue* sv = (ObjectValue*) objects->at(i); ! KlassHandle k(java_lang_Class::as_Klass(sv->klass()->as_ConstantOopReadValue()->value()())); Handle obj = sv->value(); tty->print(" object <" INTPTR_FORMAT "> of type ", p2i(sv->value()())); k->print_value(); assert(obj.not_null() || realloc_failures, "reallocation was missed"); --- 1134,1144 ---- void Deoptimization::print_objects(GrowableArray<ScopeValue*>* objects, bool realloc_failures) { fieldDescriptor fd; for (int i = 0; i < objects->length(); i++) { ObjectValue* sv = (ObjectValue*) objects->at(i); ! Klass* k = java_lang_Class::as_Klass(sv->klass()->as_ConstantOopReadValue()->value()()); Handle obj = sv->value(); tty->print(" object <" INTPTR_FORMAT "> of type ", p2i(sv->value()())); k->print_value(); assert(obj.not_null() || realloc_failures, "reallocation was missed");
< prev index next >