Mercurial > hg > truffle
changeset 4060:c9a03402fe56
7105305: assert check_method_context proper context
Reviewed-by: jrose, kvn
author | never |
---|---|
date | Tue, 08 Nov 2011 17:29:57 -0800 |
parents | 44ce519bc3d1 |
children | e3e363b2bf19 |
files | src/share/vm/code/dependencies.cpp src/share/vm/oops/constantPoolKlass.cpp |
diffstat | 2 files changed, 14 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/code/dependencies.cpp Tue Nov 08 10:31:53 2011 -0800 +++ b/src/share/vm/code/dependencies.cpp Tue Nov 08 17:29:57 2011 -0800 @@ -763,9 +763,14 @@ // Method m is inherited into ctxk. return true; if (lm != NULL) { - if (!(lm->is_public() || lm->is_protected())) + 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())) @@ -1091,9 +1096,11 @@ } 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. + // 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(); } @@ -1113,7 +1120,7 @@ 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 + // 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; @@ -1123,7 +1130,7 @@ // 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 + // 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(); }
--- a/src/share/vm/oops/constantPoolKlass.cpp Tue Nov 08 10:31:53 2011 -0800 +++ b/src/share/vm/oops/constantPoolKlass.cpp Tue Nov 08 17:29:57 2011 -0800 @@ -532,7 +532,7 @@ if (cp->tag_at(i).is_unresolved_klass()) { // This will force loading of the class klassOop klass = cp->klass_at(i, CHECK); - if (klass->is_instance()) { + if (klass->klass_part()->oop_is_instance()) { // Force initialization of class instanceKlass::cast(klass)->initialize(CHECK); }