@@ -417,6 +417,16 @@ setNativeOutOfMemoryErrorFromJIT(J9VMThread *currentThread, U_32 moduleName, U_3
417
417
return J9_JITHELPER_ACTION_THROW;
418
418
}
419
419
420
+ #if defined(J9VM_OPT_CRIU_SUPPORT)
421
+ static VMINLINE void *
422
+ setCRIUSingleThreadModeExceptionFromJIT (J9VMThread *currentThread, U_32 moduleName, U_32 messageNumber)
423
+ {
424
+ TIDY_BEFORE_THROW ();
425
+ currentThread->javaVM ->internalVMFunctions ->setCRIUSingleThreadModeJVMCRIUException (currentThread, moduleName, messageNumber);
426
+ return J9_JITHELPER_ACTION_THROW;
427
+ }
428
+ #endif /* defined(J9VM_OPT_CRIU_SUPPORT) */
429
+
420
430
static VMINLINE void *
421
431
setHeapOutOfMemoryErrorFromJIT (J9VMThread *currentThread)
422
432
{
@@ -1725,8 +1735,9 @@ slow_jitMonitorEnterImpl(J9VMThread *currentThread, bool forMethod)
1725
1735
resolveFrame->specialFrameFlags = (resolveFrame->specialFrameFlags & ~J9_STACK_FLAGS_JIT_FRAME_SUB_TYPE_MASK) | J9_STACK_FLAGS_JIT_FAILED_METHOD_MONITOR_ENTER_RESOLVE;
1726
1736
}
1727
1737
}
1738
+ switch (monstatus) {
1728
1739
#if JAVA_SPEC_VERSION >= 16
1729
- if ( J9_OBJECT_MONITOR_VALUE_TYPE_IMSE == monstatus) {
1740
+ case J9_OBJECT_MONITOR_VALUE_TYPE_IMSE: {
1730
1741
j9object_t syncObject = (j9object_t )currentThread->floatTemp2 ;
1731
1742
J9Class* badClass = J9OBJECT_CLAZZ (currentThread, syncObject);
1732
1743
J9UTF8 *className = J9ROMCLASS_CLASSNAME (badClass->romClass );
@@ -1740,16 +1751,24 @@ slow_jitMonitorEnterImpl(J9VMThread *currentThread, bool forMethod)
1740
1751
{
1741
1752
Assert_CodertVM_true (J9_ARE_ALL_BITS_SET (currentThread->javaVM ->extendedRuntimeFlags2 , J9_EXTENDED_RUNTIME2_VALUE_BASED_EXCEPTION));
1742
1753
currentThread->javaVM ->internalVMFunctions ->setCurrentExceptionNLSWithArgs (currentThread, J9NLS_VM_ERROR_BYTECODE_OBJECTREF_CANNOT_BE_VALUE_BASED,
1743
- J9VMCONSTANTPOOL_JAVALANGVIRTUALMACHINEERROR, J9UTF8_LENGTH (className), J9UTF8_DATA (className));
1754
+ J9VMCONSTANTPOOL_JAVALANGVIRTUALMACHINEERROR, J9UTF8_LENGTH (className), J9UTF8_DATA (className));
1744
1755
}
1745
1756
addr = J9_JITHELPER_ACTION_THROW;
1746
- goto done ;
1757
+ break ;
1747
1758
}
1748
1759
#endif /* JAVA_SPEC_VERSION >= 16 */
1749
- if (J9_OBJECT_MONITOR_OOM == monstatus) {
1760
+ #if defined(J9VM_OPT_CRIU_SUPPORT)
1761
+ case J9_OBJECT_MONITOR_CRIU_SINGLE_THREAD_MODE_THROW:
1762
+ addr = setCRIUSingleThreadModeExceptionFromJIT (currentThread, J9NLS_VM_CRIU_SINGLETHREADMODE_JVMCRIUEXCEPTION);
1763
+ break ;
1764
+ #endif /* defined(J9VM_OPT_CRIU_SUPPORT) */
1765
+ case J9_OBJECT_MONITOR_OOM:
1750
1766
addr = setNativeOutOfMemoryErrorFromJIT (currentThread, J9NLS_VM_FAILED_TO_ALLOCATE_MONITOR);
1751
- goto done;
1767
+ break ;
1768
+ default :
1769
+ Assert_CodertVM_unreachable ();
1752
1770
}
1771
+ goto done;
1753
1772
} else {
1754
1773
currentThread->javaVM ->internalVMFunctions ->objectMonitorEnterBlocking (currentThread);
1755
1774
/* Do not check asyncs for synchronized block (non-method) entry, since we now have the monitor,
0 commit comments