69 if (type == T_OBJECT || type == T_ARRAY) {
70 assert((decorators & (IN_HEAP | IN_NATIVE)) != 0, "Where is reference?");
71 // Barrier needed even when IN_NATIVE, to allow concurrent scanning.
72 return true;
73 }
74
75 // Barrier not needed
76 return false;
77 }
78
79 void ZBarrierSet::on_thread_create(Thread* thread) {
80 // Create thread local data
81 ZThreadLocalData::create(thread);
82 }
83
84 void ZBarrierSet::on_thread_destroy(Thread* thread) {
85 // Destroy thread local data
86 ZThreadLocalData::destroy(thread);
87 }
88
89 void ZBarrierSet::on_thread_attach(JavaThread* thread) {
90 // Set thread local address bad mask
91 ZThreadLocalData::set_address_bad_mask(thread, ZAddressBadMask);
92 }
93
94 void ZBarrierSet::on_thread_detach(JavaThread* thread) {
95 // Flush and free any remaining mark stacks
96 ZHeap::heap()->mark_flush_and_free(thread);
97 }
|
69 if (type == T_OBJECT || type == T_ARRAY) {
70 assert((decorators & (IN_HEAP | IN_NATIVE)) != 0, "Where is reference?");
71 // Barrier needed even when IN_NATIVE, to allow concurrent scanning.
72 return true;
73 }
74
75 // Barrier not needed
76 return false;
77 }
78
79 void ZBarrierSet::on_thread_create(Thread* thread) {
80 // Create thread local data
81 ZThreadLocalData::create(thread);
82 }
83
84 void ZBarrierSet::on_thread_destroy(Thread* thread) {
85 // Destroy thread local data
86 ZThreadLocalData::destroy(thread);
87 }
88
89 void ZBarrierSet::on_thread_attach(Thread* thread) {
90 // Set thread local address bad mask
91 ZThreadLocalData::set_address_bad_mask(thread, ZAddressBadMask);
92 }
93
94 void ZBarrierSet::on_thread_detach(Thread* thread) {
95 // Flush and free any remaining mark stacks
96 ZHeap::heap()->mark_flush_and_free(thread);
97 }
|