diff -r 50c604cb0d5f -r 30245956af37 hotspot/src/share/vm/runtime/deoptimization.cpp --- a/hotspot/src/share/vm/runtime/deoptimization.cpp Mon Jul 23 13:04:59 2012 -0700 +++ b/hotspot/src/share/vm/runtime/deoptimization.cpp Tue Jul 24 10:51:00 2012 -0700 @@ -388,7 +388,7 @@ if (deopt_sender.is_interpreted_frame()) { methodHandle method = deopt_sender.interpreter_frame_method(); Bytecode_invoke cur = Bytecode_invoke_check(method, deopt_sender.interpreter_frame_bci()); - if (cur.is_method_handle_invoke()) { + if (cur.is_invokedynamic() || cur.is_invokehandle()) { // Method handle invokes may involve fairly arbitrary chains of // calls so it's impossible to know how much actual space the // caller has for locals.