src/share/vm/opto/graphKit.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
7118863 Cdiff src/share/vm/opto/graphKit.cpp
src/share/vm/opto/graphKit.cpp
Print this page
*** 2302,2314 ****
// %%% Possible further optimization: Even if the superklass is not exact,
// if the subklass is the unique subtype of the superklass, the check
// will always succeed. We could leave a dependency behind to ensure this.
// First load the super-klass's check-offset
! Node *p1 = basic_plus_adr( superklass, superklass, sizeof(oopDesc) + Klass::super_check_offset_offset_in_bytes() );
Node *chk_off = _gvn.transform( new (C, 3) LoadINode( NULL, memory(p1), p1, _gvn.type(p1)->is_ptr() ) );
! int cacheoff_con = sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes();
bool might_be_cache = (find_int_con(chk_off, cacheoff_con) == cacheoff_con);
// Load from the sub-klass's super-class display list, or a 1-word cache of
// the secondary superclass list, or a failing value with a sentinel offset
// if the super-klass is an interface or exceptionally deep in the Java
--- 2302,2314 ----
// %%% Possible further optimization: Even if the superklass is not exact,
// if the subklass is the unique subtype of the superklass, the check
// will always succeed. We could leave a dependency behind to ensure this.
// First load the super-klass's check-offset
! Node *p1 = basic_plus_adr( superklass, superklass, Klass::super_check_offset_offset_in_bytes() );
Node *chk_off = _gvn.transform( new (C, 3) LoadINode( NULL, memory(p1), p1, _gvn.type(p1)->is_ptr() ) );
! int cacheoff_con = Klass::secondary_super_cache_offset_in_bytes();
bool might_be_cache = (find_int_con(chk_off, cacheoff_con) == cacheoff_con);
// Load from the sub-klass's super-class display list, or a 1-word cache of
// the secondary superclass list, or a failing value with a sentinel offset
// if the super-klass is an interface or exceptionally deep in the Java
*** 2932,2942 ****
return (Node*) NULL;
}
}
}
constant_value = Klass::_lh_neutral_value; // put in a known value
! Node* lhp = basic_plus_adr(klass_node, klass_node, Klass::layout_helper_offset_in_bytes() + sizeof(oopDesc));
return make_load(NULL, lhp, TypeInt::INT, T_INT);
}
// We just put in an allocate/initialize with a big raw-memory effect.
// Hook selected additional alias categories on the initialization.
--- 2932,2942 ----
return (Node*) NULL;
}
}
}
constant_value = Klass::_lh_neutral_value; // put in a known value
! Node* lhp = basic_plus_adr(klass_node, klass_node, Klass::layout_helper_offset_in_bytes());
return make_load(NULL, lhp, TypeInt::INT, T_INT);
}
// We just put in an allocate/initialize with a big raw-memory effect.
// Hook selected additional alias categories on the initialization.
src/share/vm/opto/graphKit.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File