< prev index next >

src/hotspot/share/opto/library_call.cpp

Print this page

        

*** 2455,2465 **** } base = vt->get_oop(); } else { if (offset->is_Con()) { long off = find_long_con(offset, 0); ! ciValueKlass* vk = _gvn.type(vt)->is_valuetype()->value_klass(); if ((long)(int)off != off || !vk->contains_field_offset(off)) { return false; } ciField* f = vk->get_non_flattened_field_by_offset((int)off); --- 2455,2465 ---- } base = vt->get_oop(); } else { if (offset->is_Con()) { long off = find_long_con(offset, 0); ! ciValueKlass* vk = vt->type()->value_klass(); if ((long)(int)off != off || !vk->contains_field_offset(off)) { return false; } ciField* f = vk->get_non_flattened_field_by_offset((int)off);
*** 2565,2582 **** } } else if (adr_type->isa_aryptr()) { const Type* elem = adr_type->is_aryptr()->elem(); if (!elem->isa_valuetype()) { mismatched = true; ! } else if (elem->is_valuetype()->value_klass() != value_klass) { mismatched = true; } } if (is_store) { const Type* val_t = _gvn.type(val); ! if (!val_t->isa_valuetype() || ! val_t->is_valuetype()->value_klass() != value_klass) { return false; } } } --- 2565,2581 ---- } } else if (adr_type->isa_aryptr()) { const Type* elem = adr_type->is_aryptr()->elem(); if (!elem->isa_valuetype()) { mismatched = true; ! } else if (elem->value_klass() != value_klass) { mismatched = true; } } if (is_store) { const Type* val_t = _gvn.type(val); ! if (!val_t->isa_valuetype() || val_t->value_klass() != value_klass) { return false; } } }
*** 3529,3540 **** return false; // dead path } ciKlass* obj_klass = NULL; if (obj->is_ValueType()) { ! const TypeValueType* tvt = _gvn.type(obj)->is_valuetype(); ! obj_klass = tvt->value_klass(); } else { const TypeOopPtr* tp = _gvn.type(obj)->isa_oopptr(); if (tp != NULL) { obj_klass = tp->klass(); } --- 3528,3538 ---- return false; // dead path } ciKlass* obj_klass = NULL; if (obj->is_ValueType()) { ! obj_klass = _gvn.type(obj)->value_klass(); } else { const TypeOopPtr* tp = _gvn.type(obj)->isa_oopptr(); if (tp != NULL) { obj_klass = tp->klass(); }
*** 4324,4334 **** // // Build special case code for calls to getClass on an object. bool LibraryCallKit::inline_native_getClass() { Node* obj = argument(0); if (obj->is_ValueType()) { ! ciKlass* vk = _gvn.type(obj)->is_valuetype()->value_klass(); set_result(makecon(TypeInstPtr::make(vk->java_mirror()))); return true; } obj = null_check_receiver(); if (stopped()) return true; --- 4322,4332 ---- // // Build special case code for calls to getClass on an object. bool LibraryCallKit::inline_native_getClass() { Node* obj = argument(0); if (obj->is_ValueType()) { ! ciKlass* vk = _gvn.type(obj)->value_klass(); set_result(makecon(TypeInstPtr::make(vk->java_mirror()))); return true; } obj = null_check_receiver(); if (stopped()) return true;
*** 5205,5221 **** top_src = src_type->isa_aryptr(); if (top_dest != NULL && top_dest->elem()->make_oopptr() != NULL && top_dest->elem()->make_oopptr()->can_be_value_type()) { ! generate_valueArray_guard(load_object_klass(dest), slow_region); } if (top_src != NULL && top_src->elem()->make_oopptr() != NULL && top_src->elem()->make_oopptr()->can_be_value_type()) { ! generate_valueArray_guard(load_object_klass(src), slow_region); } { PreserveJVMState pjvms(this); set_control(_gvn.transform(slow_region)); --- 5203,5219 ---- top_src = src_type->isa_aryptr(); if (top_dest != NULL && top_dest->elem()->make_oopptr() != NULL && top_dest->elem()->make_oopptr()->can_be_value_type()) { ! generate_valueArray_guard(dest_klass, slow_region); } if (top_src != NULL && top_src->elem()->make_oopptr() != NULL && top_src->elem()->make_oopptr()->can_be_value_type()) { ! generate_valueArray_guard(src_klass, slow_region); } { PreserveJVMState pjvms(this); set_control(_gvn.transform(slow_region));
< prev index next >