On Sun, 26 May 2024 11:26:50 GMT, Alan Bateman <[email protected]> wrote:
> That would mean it's not tested. I suspect the
> java_lang_VirtualThread::is_instance checks will need to be changed to test
> with is_a(vmClasses::BaseVirtualThread_klass()) to allow for the alternative
> implementation.
Do you mean change like this:
diff --git a/src/hotspot/share/classfile/javaClasses.cpp
b/src/hotspot/share/classfile/javaClasses.cpp
index 077b05f936e..c03bb511e2a 100644
--- a/src/hotspot/share/classfile/javaClasses.cpp
+++ b/src/hotspot/share/classfile/javaClasses.cpp
@@ -1971,7 +1971,7 @@ void java_lang_VirtualThread::compute_offsets() {
}
bool java_lang_VirtualThread::is_instance(oop obj) {
- return obj != nullptr && is_subclass(obj->klass());
+ return obj != nullptr && obj->is_a(vmClasses::BaseVirtualThread_klass());
}
oop java_lang_VirtualThread::carrier_thread(oop vthread) {
This change will crash on linux x86_32 when run the testcase
ObjectMonitorUsage.java.
# V [libjvm.so+0x833af1]
JvmtiEnvBase::get_threadOop_and_JavaThread(ThreadsList*, _jobject*,
JavaThread**, oopDesc**)+0x121
[hs_err_pid233589.log](https://github.com/openjdk/jdk/files/15447775/hs_err_pid233589.log)
-------------
PR Comment: https://git.openjdk.org/jdk/pull/19405#issuecomment-2132241354