220 if (bt == T_DOUBLE) val = dstore_rounding(val); |
220 if (bt == T_DOUBLE) val = dstore_rounding(val); |
221 |
221 |
222 // Store the value. |
222 // Store the value. |
223 Node* store; |
223 Node* store; |
224 if (bt == T_OBJECT) { |
224 if (bt == T_OBJECT) { |
225 const TypePtr* field_type; |
225 const TypeOopPtr* field_type; |
226 if (!field->type()->is_loaded()) { |
226 if (!field->type()->is_loaded()) { |
227 field_type = TypeInstPtr::BOTTOM; |
227 field_type = TypeInstPtr::BOTTOM; |
228 } else { |
228 } else { |
229 field_type = TypeOopPtr::make_from_klass(field->type()->as_klass()); |
229 field_type = TypeOopPtr::make_from_klass(field->type()->as_klass()); |
230 } |
230 } |
359 if (ndimensions > 1) { |
359 if (ndimensions > 1) { |
360 jint length_con = find_int_con(length, -1); |
360 jint length_con = find_int_con(length, -1); |
361 guarantee(length_con >= 0, "non-constant multianewarray"); |
361 guarantee(length_con >= 0, "non-constant multianewarray"); |
362 ciArrayKlass* array_klass_1 = array_klass->as_obj_array_klass()->element_klass()->as_array_klass(); |
362 ciArrayKlass* array_klass_1 = array_klass->as_obj_array_klass()->element_klass()->as_array_klass(); |
363 const TypePtr* adr_type = TypeAryPtr::OOPS; |
363 const TypePtr* adr_type = TypeAryPtr::OOPS; |
364 const Type* elemtype = _gvn.type(array)->is_aryptr()->elem(); |
364 const TypeOopPtr* elemtype = _gvn.type(array)->is_aryptr()->elem()->is_oopptr(); |
365 const intptr_t header = arrayOopDesc::base_offset_in_bytes(T_OBJECT); |
365 const intptr_t header = arrayOopDesc::base_offset_in_bytes(T_OBJECT); |
366 for (jint i = 0; i < length_con; i++) { |
366 for (jint i = 0; i < length_con; i++) { |
367 Node* elem = expand_multianewarray(array_klass_1, &lengths[1], ndimensions-1, nargs); |
367 Node* elem = expand_multianewarray(array_klass_1, &lengths[1], ndimensions-1, nargs); |
368 intptr_t offset = header + ((intptr_t)i << LogBytesPerHeapOop); |
368 intptr_t offset = header + ((intptr_t)i << LogBytesPerHeapOop); |
369 Node* eaddr = basic_plus_adr(array, offset); |
369 Node* eaddr = basic_plus_adr(array, offset); |