src/share/vm/opto/parse1.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
valhalla-experimental Cdiff src/share/vm/opto/parse1.cpp
src/share/vm/opto/parse1.cpp
Print this page
*** 790,801 ****
Node* Compile::create_vt_node(Node* n, ciValueKlass* vk, ciValueKlass* base_vk, int base_offset, int base_input) {
assert(base_offset >= 0, "offset in value type always positive");
PhaseGVN& gvn = *initial_gvn();
ValueTypeNode* vt = ValueTypeNode::make(gvn, vk);
for (uint i = 0; i < vt->field_count(); i++) {
! ciType* field_type = vt->get_field_type(i);
! int offset = base_offset + vt->get_field_offset(i) - (base_offset > 0 ? vk->first_field_offset() : 0);
if (field_type->is_valuetype()) {
ciValueKlass* embedded_vk = field_type->as_value_klass();
Node* embedded_vt = create_vt_node(n, embedded_vk, base_vk, offset, base_input);
vt->set_field_value(i, embedded_vt);
} else {
--- 790,801 ----
Node* Compile::create_vt_node(Node* n, ciValueKlass* vk, ciValueKlass* base_vk, int base_offset, int base_input) {
assert(base_offset >= 0, "offset in value type always positive");
PhaseGVN& gvn = *initial_gvn();
ValueTypeNode* vt = ValueTypeNode::make(gvn, vk);
for (uint i = 0; i < vt->field_count(); i++) {
! ciType* field_type = vt->field_type(i);
! int offset = base_offset + vt->field_offset(i) - (base_offset > 0 ? vk->first_field_offset() : 0);
if (field_type->is_valuetype()) {
ciValueKlass* embedded_vk = field_type->as_value_klass();
Node* embedded_vt = create_vt_node(n, embedded_vk, base_vk, offset, base_input);
vt->set_field_value(i, embedded_vt);
} else {
src/share/vm/opto/parse1.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File