< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahThreadLocalData.hpp

Print this page

113   static void destroy(Thread* thread) {
114     data(thread)->~ShenandoahThreadLocalData();
115   }
116 
117   static SATBMarkQueue& satb_mark_queue(Thread* thread) {
118     return data(thread)->_satb_mark_queue;
119   }
120 
121   static char gc_state_to_fast_array_index(char gc_state) {
122     if (gc_state == FORWARDED)              return POS_FORWARDED;
123     if (gc_state == MARKING)                return POS_MARKING;
124     if (gc_state == WEAK)                   return POS_WEAK;
125     if (gc_state == FORWARDED_MARKING)      return POS_FORWARDED_MARKING;
126     if (gc_state == FORWARDED_WEAK)         return POS_FORWARDED_WEAK;
127     if (gc_state == MARKING_WEAK)           return POS_MARKING_WEAK;
128     if (gc_state == FORWARDED_MARKING_WEAK) return POS_FORWARDED_MARKING_WEAK;
129     ShouldNotReachHere();
130     return 0;
131   }
132 












133   static void set_gc_state(Thread* thread, char gc_state) {
134     ShenandoahThreadLocalData* d = data(thread);
135     d->_gc_state = gc_state;
136     d->_gc_state_fast_array[POS_FORWARDED]              = (gc_state & FORWARDED) != 0;
137     d->_gc_state_fast_array[POS_MARKING]                = (gc_state & MARKING) != 0;
138     d->_gc_state_fast_array[POS_WEAK]                   = (gc_state & WEAK) != 0;
139     d->_gc_state_fast_array[POS_FORWARDED_MARKING]      = (gc_state & FORWARDED_MARKING) != 0;
140     d->_gc_state_fast_array[POS_FORWARDED_WEAK]         = (gc_state & FORWARDED_WEAK) != 0;
141     d->_gc_state_fast_array[POS_MARKING_WEAK]           = (gc_state & MARKING_WEAK) != 0;
142     d->_gc_state_fast_array[POS_FORWARDED_MARKING_WEAK] = (gc_state & FORWARDED_MARKING_WEAK) != 0;
143   }
144 
145   static char gc_state(Thread* thread) {
146     return data(thread)->_gc_state;
147   }
148 
149   static bool is_gc_state(Thread* thread, ShenandoahHeap::GCState state) {
150     return (gc_state(thread) & state) != 0;
151   }
152 

113   static void destroy(Thread* thread) {
114     data(thread)->~ShenandoahThreadLocalData();
115   }
116 
117   static SATBMarkQueue& satb_mark_queue(Thread* thread) {
118     return data(thread)->_satb_mark_queue;
119   }
120 
121   static char gc_state_to_fast_array_index(char gc_state) {
122     if (gc_state == FORWARDED)              return POS_FORWARDED;
123     if (gc_state == MARKING)                return POS_MARKING;
124     if (gc_state == WEAK)                   return POS_WEAK;
125     if (gc_state == FORWARDED_MARKING)      return POS_FORWARDED_MARKING;
126     if (gc_state == FORWARDED_WEAK)         return POS_FORWARDED_WEAK;
127     if (gc_state == MARKING_WEAK)           return POS_MARKING_WEAK;
128     if (gc_state == FORWARDED_MARKING_WEAK) return POS_FORWARDED_MARKING_WEAK;
129     ShouldNotReachHere();
130     return 0;
131   }
132 
133   static char fast_array_index_to_gc_state(int index) {
134     if (index == POS_FORWARDED)              return FORWARDED;
135     if (index == POS_MARKING)                return MARKING;
136     if (index == POS_WEAK)                   return WEAK;
137     if (index == POS_FORWARDED_MARKING)      return FORWARDED_MARKING;
138     if (index == POS_FORWARDED_WEAK)         return FORWARDED_WEAK;
139     if (index == POS_MARKING_WEAK)           return MARKING_WEAK;
140     if (index == POS_FORWARDED_MARKING_WEAK) return FORWARDED_MARKING_WEAK;
141     ShouldNotReachHere();
142     return 0;
143   }
144 
145   static void set_gc_state(Thread* thread, char gc_state) {
146     ShenandoahThreadLocalData* d = data(thread);
147     d->_gc_state = gc_state;
148     d->_gc_state_fast_array[POS_FORWARDED]              = (gc_state & FORWARDED) != 0;
149     d->_gc_state_fast_array[POS_MARKING]                = (gc_state & MARKING) != 0;
150     d->_gc_state_fast_array[POS_WEAK]                   = (gc_state & WEAK) != 0;
151     d->_gc_state_fast_array[POS_FORWARDED_MARKING]      = (gc_state & FORWARDED_MARKING) != 0;
152     d->_gc_state_fast_array[POS_FORWARDED_WEAK]         = (gc_state & FORWARDED_WEAK) != 0;
153     d->_gc_state_fast_array[POS_MARKING_WEAK]           = (gc_state & MARKING_WEAK) != 0;
154     d->_gc_state_fast_array[POS_FORWARDED_MARKING_WEAK] = (gc_state & FORWARDED_MARKING_WEAK) != 0;
155   }
156 
157   static char gc_state(Thread* thread) {
158     return data(thread)->_gc_state;
159   }
160 
161   static bool is_gc_state(Thread* thread, ShenandoahHeap::GCState state) {
162     return (gc_state(thread) & state) != 0;
163   }
164 
< prev index next >