hotspot/src/share/vm/opto/library_call.cpp
changeset 13952 e3cf184080bc
parent 13895 f6dfe4123709
child 13974 791cba24758f
equal deleted inserted replaced
13918:b01a48301e67 13952:e3cf184080bc
  3433 
  3433 
  3434   case vmIntrinsics::_getComponentType:
  3434   case vmIntrinsics::_getComponentType:
  3435     if (generate_array_guard(kls, region) != NULL) {
  3435     if (generate_array_guard(kls, region) != NULL) {
  3436       // Be sure to pin the oop load to the guard edge just created:
  3436       // Be sure to pin the oop load to the guard edge just created:
  3437       Node* is_array_ctrl = region->in(region->req()-1);
  3437       Node* is_array_ctrl = region->in(region->req()-1);
  3438       Node* cma = basic_plus_adr(kls, in_bytes(arrayKlass::component_mirror_offset()));
  3438       Node* cma = basic_plus_adr(kls, in_bytes(ArrayKlass::component_mirror_offset()));
  3439       Node* cmo = make_load(is_array_ctrl, cma, TypeInstPtr::MIRROR, T_OBJECT);
  3439       Node* cmo = make_load(is_array_ctrl, cma, TypeInstPtr::MIRROR, T_OBJECT);
  3440       phi->add_req(cmo);
  3440       phi->add_req(cmo);
  3441     }
  3441     }
  3442     query_value = null();  // non-array case is null
  3442     query_value = null();  // non-array case is null
  3443     break;
  3443     break;
  5030     // Plug failing path into checked_oop_disjoint_arraycopy
  5030     // Plug failing path into checked_oop_disjoint_arraycopy
  5031     if (not_subtype_ctrl != top()) {
  5031     if (not_subtype_ctrl != top()) {
  5032       PreserveJVMState pjvms(this);
  5032       PreserveJVMState pjvms(this);
  5033       set_control(not_subtype_ctrl);
  5033       set_control(not_subtype_ctrl);
  5034       // (At this point we can assume disjoint_bases, since types differ.)
  5034       // (At this point we can assume disjoint_bases, since types differ.)
  5035       int ek_offset = in_bytes(objArrayKlass::element_klass_offset());
  5035       int ek_offset = in_bytes(ObjArrayKlass::element_klass_offset());
  5036       Node* p1 = basic_plus_adr(dest_klass, ek_offset);
  5036       Node* p1 = basic_plus_adr(dest_klass, ek_offset);
  5037       Node* n1 = LoadKlassNode::make(_gvn, immutable_memory(), p1, TypeRawPtr::BOTTOM);
  5037       Node* n1 = LoadKlassNode::make(_gvn, immutable_memory(), p1, TypeRawPtr::BOTTOM);
  5038       Node* dest_elem_klass = _gvn.transform(n1);
  5038       Node* dest_elem_klass = _gvn.transform(n1);
  5039       Node* cv = generate_checkcast_arraycopy(adr_type,
  5039       Node* cv = generate_checkcast_arraycopy(adr_type,
  5040                                               dest_elem_klass,
  5040                                               dest_elem_klass,