< prev index next >

src/hotspot/share/runtime/thread.hpp

Print this page

        

*** 310,319 **** --- 310,329 ---- public: enum { is_definitely_current_thread = true }; + private: + friend class BufferedValuesDealiaser; + + BufferedValuesDealiaser* _buffered_values_dealiaser; + public: + BufferedValuesDealiaser* buffered_values_dealiaser() { + assert(Thread::current() == this, "Should only be accessed locally"); + return _buffered_values_dealiaser; + } + // Constructor Thread(); virtual ~Thread(); // Manage Thread::current()
*** 788,797 **** --- 798,808 ---- class JavaThread: public Thread { friend class VMStructs; friend class JVMCIVMStructs; friend class WhiteBox; + friend class VTBuffer; private: JavaThread* _next; // The next thread in the Threads list oop _threadObj; // The Java level thread object #ifdef ASSERT
*** 847,856 **** --- 858,868 ---- 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;
*** 999,1008 **** --- 1011,1021 ---- // Buffered value types support void* _vt_alloc_ptr; void* _vt_alloc_limit; VTBufferChunk* _local_free_chunk; + VTBuffer::Mark _current_vtbuffer_mark; // Next 4 fields are used to monitor VT buffer memory consumption // We may want to not support them in PRODUCT builds jint _vtchunk_in_use; jint _vtchunk_max; jint _vtchunk_total_returned;
*** 1330,1339 **** --- 1343,1355 ---- 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; }
*** 1569,1578 **** --- 1585,1595 ---- 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 saved_exception_pc_offset() { return byte_offset_of(JavaThread, _saved_exception_pc); } static ByteSize osthread_offset() { return byte_offset_of(JavaThread, _osthread); } #if INCLUDE_JVMCI static ByteSize pending_deoptimization_offset() { return byte_offset_of(JavaThread, _pending_deoptimization); }
*** 1883,1892 **** --- 1900,1911 ---- VTBufferChunk* chunk = VTBufferChunk::chunk(_vt_alloc_ptr); assert(chunk->owner() == this, "Sanity check"); return chunk; // return _vt_alloc_ptr == NULL ? NULL : VTBufferChunk::chunk(_vt_alloc_ptr); } + VTBuffer::Mark current_vtbuffer_mark() const { return _current_vtbuffer_mark; } + void set_current_vtbuffer_mark(VTBuffer::Mark m) { _current_vtbuffer_mark = m ; } void increment_vtchunk_in_use() { _vtchunk_in_use++; if (_vtchunk_in_use > _vtchunk_max) _vtchunk_max = _vtchunk_in_use; }
< prev index next >