< prev index next >

src/hotspot/share/runtime/deoptimization.cpp

Print this page
rev 54838 : [mq]: 8221734-v2
rev 54839 : [mq]: 8221734-v3

*** 1292,1302 **** cvf = compiledVFrame::cast(cvf->sender()); } collect_monitors(cvf, objects_to_revoke); } ! void Deoptimization::inflate_monitors(JavaThread* thread, frame fr, RegisterMap* map) { if (!UseBiasedLocking) { return; } GrowableArray<Handle>* objects_to_revoke = new GrowableArray<Handle>(); get_monitors_from_stack(objects_to_revoke, thread, fr, map); --- 1292,1302 ---- cvf = compiledVFrame::cast(cvf->sender()); } collect_monitors(cvf, objects_to_revoke); } ! void Deoptimization::revoke_safepoint(JavaThread* thread, frame fr, RegisterMap* map) { if (!UseBiasedLocking) { return; } GrowableArray<Handle>* objects_to_revoke = new GrowableArray<Handle>(); get_monitors_from_stack(objects_to_revoke, thread, fr, map);
*** 1306,1316 **** } else { BiasedLocking::revoke(objects_to_revoke); } } ! void Deoptimization::inflate_monitors_handshake(JavaThread* thread, frame fr, RegisterMap* map) { if (!UseBiasedLocking) { return; } GrowableArray<Handle>* objects_to_revoke = new GrowableArray<Handle>(); get_monitors_from_stack(objects_to_revoke, thread, fr, map); --- 1306,1316 ---- } else { BiasedLocking::revoke(objects_to_revoke); } } ! void Deoptimization::revoke_handshake(JavaThread* thread, frame fr, RegisterMap* map) { if (!UseBiasedLocking) { return; } GrowableArray<Handle>* objects_to_revoke = new GrowableArray<Handle>(); get_monitors_from_stack(objects_to_revoke, thread, fr, map);
*** 1318,1330 **** int len = objects_to_revoke->length(); for (int i = 0; i < len; i++) { oop obj = (objects_to_revoke->at(i))(); markOop mark = obj->mark(); assert(!mark->has_bias_pattern() || mark->biased_locker() == thread, "Can't revoke"); ! BiasedLocking::revoke_and_rebias_in_handshake(objects_to_revoke->at(i), thread); assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now"); - ObjectSynchronizer::inflate(thread, obj, ObjectSynchronizer::inflate_cause_vm_internal); } } void Deoptimization::deoptimize_single_frame(JavaThread* thread, frame fr, Deoptimization::DeoptReason reason) { --- 1318,1329 ---- int len = objects_to_revoke->length(); for (int i = 0; i < len; i++) { oop obj = (objects_to_revoke->at(i))(); markOop mark = obj->mark(); assert(!mark->has_bias_pattern() || mark->biased_locker() == thread, "Can't revoke"); ! BiasedLocking::revoke_own_locks_in_handshake(objects_to_revoke->at(i), thread); assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now"); } } void Deoptimization::deoptimize_single_frame(JavaThread* thread, frame fr, Deoptimization::DeoptReason reason) {
*** 1372,1384 **** } ResourceMark rm; DeoptimizationMarker dm; if (UseBiasedLocking) { if (in_handshake) { ! inflate_monitors_handshake(thread, fr, map); } else { ! inflate_monitors(thread, fr, map); } } deoptimize_single_frame(thread, fr, reason); } --- 1371,1383 ---- } ResourceMark rm; DeoptimizationMarker dm; if (UseBiasedLocking) { if (in_handshake) { ! revoke_handshake(thread, fr, map); } else { ! revoke_safepoint(thread, fr, map); } } deoptimize_single_frame(thread, fr, reason); }
*** 1540,1550 **** { ResourceMark rm; // Revoke biases of any monitors in the frame to ensure we can migrate them ! fix_monitors(thread, fr, &reg_map); DeoptReason reason = trap_request_reason(trap_request); DeoptAction action = trap_request_action(trap_request); #if INCLUDE_JVMCI int debug_id = trap_request_debug_id(trap_request); --- 1539,1549 ---- { ResourceMark rm; // Revoke biases of any monitors in the frame to ensure we can migrate them ! revoke_biases_of_monitors(thread, fr, &reg_map); DeoptReason reason = trap_request_reason(trap_request); DeoptAction action = trap_request_action(trap_request); #if INCLUDE_JVMCI int debug_id = trap_request_debug_id(trap_request);
< prev index next >