Mercurial > hg > truffle
changeset 154:09c2ba680204
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
author | kvn |
---|---|
date | Thu, 15 May 2008 22:40:43 -0700 |
parents | 83c868b757c0 |
children | 723be81c1212 |
files | src/share/vm/ci/bcEscapeAnalyzer.cpp |
diffstat | 1 files changed, 7 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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) {