< 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, ®_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, ®_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 >