src/share/vm/code/dependencies.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7105305 Cdiff src/share/vm/code/dependencies.cpp

src/share/vm/code/dependencies.cpp

Print this page

        

*** 764,773 **** --- 764,777 ---- return true; if (lm != NULL) { if (!(lm->is_public() || lm->is_protected())) // Method is [package-]private, so the override story is complex. return true; // Must punt the assertion to true. + if (lm->is_static()) { + // Static methods don't override non-static so punt + return true; + } if ( !Dependencies::is_concrete_method(lm) && !Dependencies::is_concrete_method(m) && Klass::cast(lm->method_holder())->is_subtype_of(m->method_holder())) // Method m is overridden by lm, but both are non-concrete. return true;
*** 1089,1101 **** //if (k->is_not_instantiated()) return false; return true; } bool Dependencies::is_concrete_method(methodOop m) { ! if (m->is_abstract()) return false; ! // %%% We could treat unexecuted methods as virtually abstract also. ! // This would require a deoptimization barrier on first execution. return !m->is_abstract(); } Klass* Dependencies::find_finalizable_subclass(Klass* k) { --- 1093,1107 ---- //if (k->is_not_instantiated()) return false; return true; } bool Dependencies::is_concrete_method(methodOop m) { ! // Statics are irrelevant to virtual call sites. ! if (m->is_static()) return false; ! ! // We could also return false if m does not yet appear to be ! // executed, if the VM version supports this distinction also. return !m->is_abstract(); } Klass* Dependencies::find_finalizable_subclass(Klass* k) {
*** 1111,1131 **** } bool Dependencies::is_concrete_klass(ciInstanceKlass* k) { if (k->is_abstract()) return false; ! // We could return also false if k does not yet appear to be // instantiated, if the VM version supports this distinction also. //if (k->is_not_instantiated()) return false; return true; } bool Dependencies::is_concrete_method(ciMethod* m) { // Statics are irrelevant to virtual call sites. if (m->is_static()) return false; ! // We could return also false if m does not yet appear to be // executed, if the VM version supports this distinction also. return !m->is_abstract(); } --- 1117,1137 ---- } bool Dependencies::is_concrete_klass(ciInstanceKlass* k) { if (k->is_abstract()) return false; ! // We could also return false if k does not yet appear to be // instantiated, if the VM version supports this distinction also. //if (k->is_not_instantiated()) return false; return true; } bool Dependencies::is_concrete_method(ciMethod* m) { // Statics are irrelevant to virtual call sites. if (m->is_static()) return false; ! // We could also return false if m does not yet appear to be // executed, if the VM version supports this distinction also. return !m->is_abstract(); }
src/share/vm/code/dependencies.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File