equal
deleted
inserted
replaced
781 const char* _file; |
781 const char* _file; |
782 int _line; |
782 int _line; |
783 } _jmp_ring[ jump_ring_buffer_size ]; |
783 } _jmp_ring[ jump_ring_buffer_size ]; |
784 #endif /* PRODUCT */ |
784 #endif /* PRODUCT */ |
785 |
785 |
|
786 #ifndef SERIALGC |
|
787 // Support for G1 barriers |
|
788 |
|
789 ObjPtrQueue _satb_mark_queue; // Thread-local log for SATB barrier. |
|
790 // Set of all such queues. |
|
791 static SATBMarkQueueSet _satb_mark_queue_set; |
|
792 |
|
793 DirtyCardQueue _dirty_card_queue; // Thread-local log for dirty cards. |
|
794 // Set of all such queues. |
|
795 static DirtyCardQueueSet _dirty_card_queue_set; |
|
796 #endif // !SERIALGC |
|
797 |
786 friend class VMThread; |
798 friend class VMThread; |
787 friend class ThreadWaitTransition; |
799 friend class ThreadWaitTransition; |
788 friend class VM_Exit; |
800 friend class VM_Exit; |
789 |
801 |
790 void initialize(); // Initialized the instance variables |
802 void initialize(); // Initialized the instance variables |
1165 static ByteSize exception_stack_size_offset() { return byte_offset_of(JavaThread, _exception_stack_size); } |
1177 static ByteSize exception_stack_size_offset() { return byte_offset_of(JavaThread, _exception_stack_size); } |
1166 static ByteSize stack_guard_state_offset() { return byte_offset_of(JavaThread, _stack_guard_state ); } |
1178 static ByteSize stack_guard_state_offset() { return byte_offset_of(JavaThread, _stack_guard_state ); } |
1167 static ByteSize suspend_flags_offset() { return byte_offset_of(JavaThread, _suspend_flags ); } |
1179 static ByteSize suspend_flags_offset() { return byte_offset_of(JavaThread, _suspend_flags ); } |
1168 |
1180 |
1169 static ByteSize do_not_unlock_if_synchronized_offset() { return byte_offset_of(JavaThread, _do_not_unlock_if_synchronized); } |
1181 static ByteSize do_not_unlock_if_synchronized_offset() { return byte_offset_of(JavaThread, _do_not_unlock_if_synchronized); } |
|
1182 |
|
1183 #ifndef SERIALGC |
|
1184 static ByteSize satb_mark_queue_offset() { return byte_offset_of(JavaThread, _satb_mark_queue); } |
|
1185 static ByteSize dirty_card_queue_offset() { return byte_offset_of(JavaThread, _dirty_card_queue); } |
|
1186 #endif // !SERIALGC |
1170 |
1187 |
1171 // Returns the jni environment for this thread |
1188 // Returns the jni environment for this thread |
1172 JNIEnv* jni_environment() { return &_jni_environment; } |
1189 JNIEnv* jni_environment() { return &_jni_environment; } |
1173 |
1190 |
1174 static JavaThread* thread_from_jni_environment(JNIEnv* env) { |
1191 static JavaThread* thread_from_jni_environment(JNIEnv* env) { |
1412 } |
1429 } |
1413 static inline void set_stack_size_at_create(size_t value) { |
1430 static inline void set_stack_size_at_create(size_t value) { |
1414 _stack_size_at_create = value; |
1431 _stack_size_at_create = value; |
1415 } |
1432 } |
1416 |
1433 |
|
1434 #ifndef SERIALGC |
|
1435 // SATB marking queue support |
|
1436 ObjPtrQueue& satb_mark_queue() { return _satb_mark_queue; } |
|
1437 static SATBMarkQueueSet& satb_mark_queue_set() { |
|
1438 return _satb_mark_queue_set; |
|
1439 } |
|
1440 |
|
1441 // Dirty card queue support |
|
1442 DirtyCardQueue& dirty_card_queue() { return _dirty_card_queue; } |
|
1443 static DirtyCardQueueSet& dirty_card_queue_set() { |
|
1444 return _dirty_card_queue_set; |
|
1445 } |
|
1446 #endif // !SERIALGC |
|
1447 |
1417 // Machine dependent stuff |
1448 // Machine dependent stuff |
1418 #include "incls/_thread_pd.hpp.incl" |
1449 #include "incls/_thread_pd.hpp.incl" |
1419 |
1450 |
1420 public: |
1451 public: |
1421 void set_blocked_on_compilation(bool value) { |
1452 void set_blocked_on_compilation(bool value) { |
1443 void set_cached_monitor_info(GrowableArray<MonitorInfo*>* info) { _cached_monitor_info = info; } |
1474 void set_cached_monitor_info(GrowableArray<MonitorInfo*>* info) { _cached_monitor_info = info; } |
1444 |
1475 |
1445 // clearing/querying jni attach status |
1476 // clearing/querying jni attach status |
1446 bool is_attaching() const { return _is_attaching; } |
1477 bool is_attaching() const { return _is_attaching; } |
1447 void set_attached() { _is_attaching = false; OrderAccess::fence(); } |
1478 void set_attached() { _is_attaching = false; OrderAccess::fence(); } |
|
1479 private: |
|
1480 // This field is used to determine if a thread has claimed |
|
1481 // a par_id: it is -1 if the thread has not claimed a par_id; |
|
1482 // otherwise its value is the par_id that has been claimed. |
|
1483 int _claimed_par_id; |
|
1484 public: |
|
1485 int get_claimed_par_id() { return _claimed_par_id; } |
|
1486 void set_claimed_par_id(int id) { _claimed_par_id = id;} |
1448 }; |
1487 }; |
1449 |
1488 |
1450 // Inline implementation of JavaThread::current |
1489 // Inline implementation of JavaThread::current |
1451 inline JavaThread* JavaThread::current() { |
1490 inline JavaThread* JavaThread::current() { |
1452 Thread* thread = ThreadLocalStorage::thread(); |
1491 Thread* thread = ThreadLocalStorage::thread(); |