< prev index next >

src/share/vm/opto/doCall.cpp

Print this page

        

*** 668,679 **** push(vt); } else { assert(ctype == C->env()->___Value_klass(), "unexpected value type klass"); Node* retnode = pop(); assert(retnode->is_ValueType(), "inconsistent"); ! retnode = retnode->as_ValueType()->allocate(this); ! push(retnode); } } else { assert(rt == ct, "unexpected mismatch: rt=%s, ct=%s", type2name(rt), type2name(ct)); // push a zero; it's better than getting an oop/int mismatch pop_node(rt); --- 668,681 ---- push(vt); } else { assert(ctype == C->env()->___Value_klass(), "unexpected value type klass"); Node* retnode = pop(); assert(retnode->is_ValueType(), "inconsistent"); ! ValueTypeNode* vt = retnode->as_ValueType(); ! Node* alloc = vt->allocate(this); ! Node* vtptr = _gvn.transform(new ValueTypePtrNode(vt, alloc)); ! push(vtptr); } } else { assert(rt == ct, "unexpected mismatch: rt=%s, ct=%s", type2name(rt), type2name(ct)); // push a zero; it's better than getting an oop/int mismatch pop_node(rt);
< prev index next >