< prev index next >

src/hotspot/share/classfile/javaClasses.cpp

Print this page
@@ -2096,10 +2096,11 @@
  int java_lang_VirtualThread::_continuation_offset;
  int java_lang_VirtualThread::_state_offset;
  int java_lang_VirtualThread::_next_offset;
  int java_lang_VirtualThread::_onWaitingList_offset;
  int java_lang_VirtualThread::_notified_offset;
+ int java_lang_VirtualThread::_interruptible_wait_offset;
  int java_lang_VirtualThread::_timeout_offset;
  int java_lang_VirtualThread::_objectWaiter_offset;
  
  #define VTHREAD_FIELDS_DO(macro) \
    macro(static_vthread_scope_offset,       k, "VTHREAD_SCOPE",      continuationscope_signature, true);  \

@@ -2107,10 +2108,11 @@
    macro(_continuation_offset,              k, "cont",               continuation_signature,      false); \
    macro(_state_offset,                     k, "state",              int_signature,               false); \
    macro(_next_offset,                      k, "next",               vthread_signature,           false); \
    macro(_onWaitingList_offset,             k, "onWaitingList",      bool_signature,              false); \
    macro(_notified_offset,                  k, "notified",           bool_signature,              false); \
+   macro(_interruptible_wait_offset,        k, "interruptableWait",  bool_signature,              false); \
    macro(_timeout_offset,                   k, "timeout",            long_signature,              false);
  
  
  void java_lang_VirtualThread::compute_offsets() {
    InstanceKlass* k = vmClasses::VirtualThread_klass();

@@ -2121,11 +2123,11 @@
  bool java_lang_VirtualThread::is_instance(oop obj) {
    return obj != nullptr && is_subclass(obj->klass());
  }
  
  oop java_lang_VirtualThread::carrier_thread(oop vthread) {
-   oop thread = vthread->obj_field(_carrierThread_offset);
+   oop thread = vthread->obj_field_acquire(_carrierThread_offset);
    return thread;
  }
  
  oop java_lang_VirtualThread::continuation(oop vthread) {
    oop cont = vthread->obj_field(_continuation_offset);

@@ -2176,10 +2178,14 @@
  
  void java_lang_VirtualThread::set_notified(oop vthread, jboolean value) {
    vthread->bool_field_put_volatile(_notified_offset, value);
  }
  
+ void java_lang_VirtualThread::set_interruptible_wait(oop vthread, jboolean value) {
+   vthread->bool_field_put_volatile(_interruptible_wait_offset, value);
+ }
+ 
  jlong java_lang_VirtualThread::timeout(oop vthread) {
    return vthread->long_field(_timeout_offset);
  }
  
  void java_lang_VirtualThread::set_timeout(oop vthread, jlong value) {
< prev index next >