< prev index next >
src/share/vm/opto/parse1.cpp
Print this page
rev 10494 : more
rev 10496 : more
rev 10538 : Tobias's loop opts patch
rev 10544 : call to __Value methods can't pass fields as arguments
*** 861,871 ****
} else {
// Value type arguments are not passed by reference: we get an
// argument per field of the value type. Build ValueTypeNodes
// from the value type arguments.
const Type* t = tf->domain_sig()->field_at(i);
! if (t->isa_valuetypeptr()) {
ciValueKlass* vk = t->is_valuetypeptr()->value_type()->value_klass();
Node* vt = create_vt_node(start, vk, vk, 0, j);
map->init_req(i, gvn.transform(vt));
j += vk->value_arg_slots();
} else {
--- 861,871 ----
} else {
// Value type arguments are not passed by reference: we get an
// argument per field of the value type. Build ValueTypeNodes
// from the value type arguments.
const Type* t = tf->domain_sig()->field_at(i);
! if (t->isa_valuetypeptr() && t->is_valuetypeptr()->klass() != C->env()->___Value_klass()) {
ciValueKlass* vk = t->is_valuetypeptr()->value_type()->value_klass();
Node* vt = create_vt_node(start, vk, vk, 0, j);
map->init_req(i, gvn.transform(vt));
j += vk->value_arg_slots();
} else {
< prev index next >