< prev index next >

src/hotspot/share/runtime/thread.hpp

Print this page
@@ -684,10 +684,11 @@
  
  class JavaThread: public Thread {
    friend class VMStructs;
    friend class JVMCIVMStructs;
    friend class WhiteBox;
+   friend class VTBuffer;
    friend class ThreadsSMRSupport; // to access _threadObj for exiting_threads_oops_do
    friend class HandshakeState;
   private:
    bool           _on_thread_list;                // Is set when this JavaThread is added to the Threads list
    OopHandle      _threadObj;                     // The Java level thread object

@@ -734,10 +735,11 @@
    Method*       _callee_target;
  
    // Used to pass back results to the interpreter or generated code running Java code.
    oop           _vm_result;    // oop result is GC-preserved
    Metadata*     _vm_result_2;  // non-oop result
+   oop           _return_buffered_value; // buffered value being returned
  
    // See ReduceInitialCardMarks: this holds the precise space interval of
    // the most recent slow path allocation for which compiled code has
    // elided card-marks for performance along the fast-path.
    MemRegion     _deferred_card_mark;

@@ -1215,10 +1217,13 @@
    void set_vm_result  (oop x)                    { _vm_result   = x; }
  
    Metadata*    vm_result_2() const               { return _vm_result_2; }
    void set_vm_result_2  (Metadata* x)          { _vm_result_2   = x; }
  
+   oop return_buffered_value() const              { return _return_buffered_value; }
+   void set_return_buffered_value(oop val)        { _return_buffered_value = val; }
+ 
    MemRegion deferred_card_mark() const           { return _deferred_card_mark; }
    void set_deferred_card_mark(MemRegion mr)      { _deferred_card_mark = mr;   }
  
  #if INCLUDE_JVMCI
    int  pending_deoptimization() const             { return _pending_deoptimization; }

@@ -1279,10 +1284,11 @@
      return byte_offset_of(JavaThread, _anchor);
    }
    static ByteSize callee_target_offset()         { return byte_offset_of(JavaThread, _callee_target); }
    static ByteSize vm_result_offset()             { return byte_offset_of(JavaThread, _vm_result); }
    static ByteSize vm_result_2_offset()           { return byte_offset_of(JavaThread, _vm_result_2); }
+   static ByteSize return_buffered_value_offset() { return byte_offset_of(JavaThread, _return_buffered_value); }
    static ByteSize thread_state_offset()          { return byte_offset_of(JavaThread, _thread_state); }
    static ByteSize polling_word_offset()          { return byte_offset_of(JavaThread, _poll_data) + byte_offset_of(SafepointMechanism::ThreadData, _polling_word);}
    static ByteSize polling_page_offset()          { return byte_offset_of(JavaThread, _poll_data) + byte_offset_of(SafepointMechanism::ThreadData, _polling_page);}
    static ByteSize saved_exception_pc_offset()    { return byte_offset_of(JavaThread, _saved_exception_pc); }
    static ByteSize osthread_offset()              { return byte_offset_of(JavaThread, _osthread); }
< prev index next >