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