src/share/vm/opto/parse3.cpp

changeset 1260
8f5825e0aeaa
parent 1165
9c6be3edf0dc
child 1262
bf3489cc0aa0
equal deleted inserted replaced
1259:18a08a7e16b5 1260:8f5825e0aeaa
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);

mercurial