comparison src/share/vm/ci/bcEscapeAnalyzer.cpp @ 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 e1e86702e43e
children d1605aabd0a1
comparison
equal deleted inserted replaced
147:83c868b757c0 154:09c2ba680204
215 // retrieve information about the callee 215 // retrieve information about the callee
216 ciInstanceKlass* klass = target->holder(); 216 ciInstanceKlass* klass = target->holder();
217 ciInstanceKlass* calling_klass = method()->holder(); 217 ciInstanceKlass* calling_klass = method()->holder();
218 ciInstanceKlass* callee_holder = ciEnv::get_instance_klass_for_declared_method_holder(holder); 218 ciInstanceKlass* callee_holder = ciEnv::get_instance_klass_for_declared_method_holder(holder);
219 ciInstanceKlass* actual_recv = callee_holder; 219 ciInstanceKlass* actual_recv = callee_holder;
220
221 // some methods are obviously bindable without any type checks so
222 // convert them directly to an invokespecial.
223 if (target->is_loaded() && !target->is_abstract() &&
224 target->can_be_statically_bound() && code == Bytecodes::_invokevirtual) {
225 code = Bytecodes::_invokespecial;
226 }
220 227
221 // compute size of arguments 228 // compute size of arguments
222 int arg_size = target->arg_size(); 229 int arg_size = target->arg_size();
223 if (!target->is_loaded() && code == Bytecodes::_invokestatic) { 230 if (!target->is_loaded() && code == Bytecodes::_invokestatic) {
224 arg_size--; 231 arg_size--;