8285739: disable EscapeBarrier deopt for virtual threads

Reviewed-by: kvn, rrich, sspitsyn
This commit is contained in:
Leonid Mesnik 2022-05-23 14:50:46 +00:00
parent 110d906432
commit 940e94f194
2 changed files with 6 additions and 1 deletions
src/hotspot/share

@ -1155,7 +1155,7 @@ void JvmtiTagMap::iterate_through_heap(jint heap_filter,
{
// EA based optimizations on tagged objects are already reverted.
// disabled if vritual threads are enabled with --enable-preview
EscapeBarrier eb(!Continuations::enabled() && !(heap_filter & JVMTI_HEAP_FILTER_UNTAGGED), JavaThread::current());
EscapeBarrier eb(!(heap_filter & JVMTI_HEAP_FILTER_UNTAGGED), JavaThread::current());
eb.deoptimize_objects_all_threads();
MutexLocker ml(Heap_lock);
IterateThroughHeapObjectClosure blk(this,

@ -119,6 +119,11 @@ bool EscapeBarrier::deoptimize_objects_all_threads() {
if (!barrier_active()) return true;
ResourceMark rm(calling_thread());
for (JavaThreadIteratorWithHandle jtiwh; JavaThread *jt = jtiwh.next(); ) {
oop vt_oop = jt->jvmti_vthread();
// Skip virtual threads
if (vt_oop != NULL && java_lang_VirtualThread::is_instance(vt_oop)) {
continue;
}
if (jt->frames_to_pop_failed_realloc() > 0) {
// The deoptee thread jt has frames with reallocation failures on top of its stack.
// These frames are about to be removed. We must not interfere with that and signal failure.