753 |
753 |
754 if (k->oop_is_instance()) { |
754 if (k->oop_is_instance()) { |
755 InstanceKlass* ik = InstanceKlass::cast(k()); |
755 InstanceKlass* ik = InstanceKlass::cast(k()); |
756 obj = ik->allocate_instance(CHECK_(false)); |
756 obj = ik->allocate_instance(CHECK_(false)); |
757 } else if (k->oop_is_typeArray()) { |
757 } else if (k->oop_is_typeArray()) { |
758 typeArrayKlass* ak = typeArrayKlass::cast(k()); |
758 TypeArrayKlass* ak = TypeArrayKlass::cast(k()); |
759 assert(sv->field_size() % type2size[ak->element_type()] == 0, "non-integral array length"); |
759 assert(sv->field_size() % type2size[ak->element_type()] == 0, "non-integral array length"); |
760 int len = sv->field_size() / type2size[ak->element_type()]; |
760 int len = sv->field_size() / type2size[ak->element_type()]; |
761 obj = ak->allocate(len, CHECK_(false)); |
761 obj = ak->allocate(len, CHECK_(false)); |
762 } else if (k->oop_is_objArray()) { |
762 } else if (k->oop_is_objArray()) { |
763 objArrayKlass* ak = objArrayKlass::cast(k()); |
763 ObjArrayKlass* ak = ObjArrayKlass::cast(k()); |
764 obj = ak->allocate(sv->field_size(), CHECK_(false)); |
764 obj = ak->allocate(sv->field_size(), CHECK_(false)); |
765 } |
765 } |
766 |
766 |
767 assert(obj != NULL, "allocation failed"); |
767 assert(obj != NULL, "allocation failed"); |
768 assert(sv->value().is_null(), "redundant reallocation"); |
768 assert(sv->value().is_null(), "redundant reallocation"); |
921 if (k->oop_is_instance()) { |
921 if (k->oop_is_instance()) { |
922 InstanceKlass* ik = InstanceKlass::cast(k()); |
922 InstanceKlass* ik = InstanceKlass::cast(k()); |
923 FieldReassigner reassign(fr, reg_map, sv, obj()); |
923 FieldReassigner reassign(fr, reg_map, sv, obj()); |
924 ik->do_nonstatic_fields(&reassign); |
924 ik->do_nonstatic_fields(&reassign); |
925 } else if (k->oop_is_typeArray()) { |
925 } else if (k->oop_is_typeArray()) { |
926 typeArrayKlass* ak = typeArrayKlass::cast(k()); |
926 TypeArrayKlass* ak = TypeArrayKlass::cast(k()); |
927 reassign_type_array_elements(fr, reg_map, sv, (typeArrayOop) obj(), ak->element_type()); |
927 reassign_type_array_elements(fr, reg_map, sv, (typeArrayOop) obj(), ak->element_type()); |
928 } else if (k->oop_is_objArray()) { |
928 } else if (k->oop_is_objArray()) { |
929 reassign_object_array_elements(fr, reg_map, sv, (objArrayOop) obj()); |
929 reassign_object_array_elements(fr, reg_map, sv, (objArrayOop) obj()); |
930 } |
930 } |
931 } |
931 } |