diff -r 1a839164c1e3 src/share/vm/runtime/sharedRuntime.cpp --- a/src/share/vm/runtime/sharedRuntime.cpp Tue Mar 28 13:33:50 2017 +0200 +++ b/src/share/vm/runtime/sharedRuntime.cpp Sat Apr 01 01:19:43 2017 -0700 @@ -1006,6 +1006,12 @@ assert(obj->is_oop(), "must be a valid oop"); assert(obj->klass()->has_finalizer(), "shouldn't be here otherwise"); InstanceKlass::register_finalizer(instanceOop(obj), CHECK); + if (UseNewCode) { + RegisterMap reg_map(thread, false); + frame runtime_frame = thread->last_frame(); + frame caller_frame = runtime_frame.sender(®_map); + Deoptimization::deoptimize_frame(thread, caller_frame.id(), Deoptimization::Reason_constraint); + } JRT_END