< prev index next >
src/share/vm/opto/doCall.cpp
Print this page
@@ -668,12 +668,14 @@
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);
+ 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 >