hotspot/src/share/vm/opto/parse3.cpp
changeset 3178 596a9ab2a92d
parent 2574 1d5f85c2d755
child 3180 c589129153a4
equal deleted inserted replaced
3177:f467776fc753 3178:596a9ab2a92d
   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);