< 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 >