comparison src/share/vm/runtime/deoptimization.cpp @ 4055:e342a5110bed

7106774: JSR 292: nightly test inlineMHTarget fails with wrong result Reviewed-by: kvn
author twisti
date Thu, 03 Nov 2011 01:43:26 -0700
parents b20d64f83668
children 04b9a2566eec e9a5e0a812c8
comparison
equal deleted inserted replaced
4054:71699e9d8673 4055:e342a5110bed
386 // value so that the proper amount of space can be added to it's 386 // value so that the proper amount of space can be added to it's
387 // frame. 387 // frame.
388 bool caller_was_method_handle = false; 388 bool caller_was_method_handle = false;
389 if (deopt_sender.is_interpreted_frame()) { 389 if (deopt_sender.is_interpreted_frame()) {
390 methodHandle method = deopt_sender.interpreter_frame_method(); 390 methodHandle method = deopt_sender.interpreter_frame_method();
391 Bytecode_invoke cur = Bytecode_invoke_check(method, 391 Bytecode_invoke cur = Bytecode_invoke_check(method, deopt_sender.interpreter_frame_bci());
392 deopt_sender.interpreter_frame_bci()); 392 if (cur.is_method_handle_invoke()) {
393 if (cur.code() == Bytecodes::_invokedynamic ||
394 (cur.code() == Bytecodes::_invokevirtual &&
395 method->constants()->klass_ref_at_noresolve(cur.index()) == vmSymbols::java_lang_invoke_MethodHandle() &&
396 methodOopDesc::is_method_handle_invoke_name(cur.name()))) {
397 // Method handle invokes may involve fairly arbitrary chains of 393 // Method handle invokes may involve fairly arbitrary chains of
398 // calls so it's impossible to know how much actual space the 394 // calls so it's impossible to know how much actual space the
399 // caller has for locals. 395 // caller has for locals.
400 caller_was_method_handle = true; 396 caller_was_method_handle = true;
401 } 397 }