< prev index next >

src/share/vm/opto/escape.cpp

Print this page

        

*** 3163,3172 **** --- 3163,3178 ---- } else if (use->Opcode() == Op_EncodeISOArray) { if (use->in(MemNode::Memory) == n || use->in(3) == n) { // EncodeISOArray overwrites destination array memnode_worklist.append_if_missing(use); } + } else if (use->Opcode() == Op_Return) { + Node* klass = use->in(TypeFunc::Parms); + const TypeKlassPtr* tkls = igvn->type(klass)->isa_klassptr(); + ciValueKlass* vk = tkls->klass()->as_value_klass(); + assert(_compile->tf()->returns_value_type_as_fields(), "must return a value type"); + assert(vk->contains_oops(), "returned value type must contain a reference field"); } else { uint op = use->Opcode(); if ((op == Op_StrCompressedCopy || op == Op_StrInflatedCopy) && (use->in(MemNode::Memory) == n)) { // They overwrite memory edge corresponding to destination array,
< prev index next >