# HG changeset patch # User kvn # Date 1210916443 25200 # Node ID 09c2ba680204b0ba98da066d196b17cf660aece5 # Parent 83c868b757c01a4c6d2a9de540eab53caefa7266 6700102: c2 assertion "counter_changed,"failed dependencies, but counter didn't change")" with AggressiveOpts Summary: Bytecode Escape Analyzer does not have the check for the case described in 6389127. Reviewed-by: never diff -r 83c868b757c0 -r 09c2ba680204 src/share/vm/ci/bcEscapeAnalyzer.cpp --- a/src/share/vm/ci/bcEscapeAnalyzer.cpp Wed May 14 00:41:06 2008 -0700 +++ b/src/share/vm/ci/bcEscapeAnalyzer.cpp Thu May 15 22:40:43 2008 -0700 @@ -218,6 +218,13 @@ ciInstanceKlass* callee_holder = ciEnv::get_instance_klass_for_declared_method_holder(holder); ciInstanceKlass* actual_recv = callee_holder; + // some methods are obviously bindable without any type checks so + // convert them directly to an invokespecial. + if (target->is_loaded() && !target->is_abstract() && + target->can_be_statically_bound() && code == Bytecodes::_invokevirtual) { + code = Bytecodes::_invokespecial; + } + // compute size of arguments int arg_size = target->arg_size(); if (!target->is_loaded() && code == Bytecodes::_invokestatic) {