src/share/vm/opto/compile.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7118863 Cdiff src/share/vm/opto/compile.cpp

src/share/vm/opto/compile.cpp

Print this page

        

*** 1305,1318 **** // the primary supertype array and also force them to the supertype cache // alias index. Since the same load can reach both, we need to merge // these 2 disparate memories into the same alias class. Since the // primary supertype array is read-only, there's no chance of confusion // where we bypass an array load and an array store. ! uint off2 = offset - Klass::primary_supers_offset_in_bytes(); if( offset == Type::OffsetBot || off2 < Klass::primary_super_limit()*wordSize ) { ! offset = sizeof(oopDesc) +Klass::secondary_super_cache_offset_in_bytes(); tj = tk = TypeKlassPtr::make( TypePtr::NotNull, tk->klass(), offset ); } } // Flatten all Raw pointers together. --- 1305,1318 ---- // the primary supertype array and also force them to the supertype cache // alias index. Since the same load can reach both, we need to merge // these 2 disparate memories into the same alias class. Since the // primary supertype array is read-only, there's no chance of confusion // where we bypass an array load and an array store. ! uint off2 = offset - (in_bytes(Klass::primary_supers_offset()) - sizeof(klassOopDesc)); if( offset == Type::OffsetBot || off2 < Klass::primary_super_limit()*wordSize ) { ! offset = in_bytes(Klass::secondary_super_cache_offset()); tj = tk = TypeKlassPtr::make( TypePtr::NotNull, tk->klass(), offset ); } } // Flatten all Raw pointers together.
*** 1487,1503 **** if (flat->offset() == java_lang_Class::klass_offset_in_bytes() && flat->is_instptr()->klass() == env()->Class_klass()) alias_type(idx)->set_rewritable(false); } if (flat->isa_klassptr()) { ! if (flat->offset() == Klass::super_check_offset_offset_in_bytes() + (int)sizeof(oopDesc)) alias_type(idx)->set_rewritable(false); ! if (flat->offset() == Klass::modifier_flags_offset_in_bytes() + (int)sizeof(oopDesc)) alias_type(idx)->set_rewritable(false); ! if (flat->offset() == Klass::access_flags_offset_in_bytes() + (int)sizeof(oopDesc)) alias_type(idx)->set_rewritable(false); ! if (flat->offset() == Klass::java_mirror_offset_in_bytes() + (int)sizeof(oopDesc)) alias_type(idx)->set_rewritable(false); } // %%% (We would like to finalize JavaThread::threadObj_offset(), // but the base pointer type is not distinctive enough to identify // references into JavaThread.) --- 1487,1503 ---- if (flat->offset() == java_lang_Class::klass_offset_in_bytes() && flat->is_instptr()->klass() == env()->Class_klass()) alias_type(idx)->set_rewritable(false); } if (flat->isa_klassptr()) { ! if (flat->offset() == in_bytes(Klass::super_check_offset_offset())) alias_type(idx)->set_rewritable(false); ! if (flat->offset() == in_bytes(Klass::modifier_flags_offset())) alias_type(idx)->set_rewritable(false); ! if (flat->offset() == in_bytes(Klass::access_flags_offset())) alias_type(idx)->set_rewritable(false); ! if (flat->offset() == in_bytes(Klass::java_mirror_offset())) alias_type(idx)->set_rewritable(false); } // %%% (We would like to finalize JavaThread::threadObj_offset(), // but the base pointer type is not distinctive enough to identify // references into JavaThread.)
src/share/vm/opto/compile.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File