equal
deleted
inserted
replaced
268 // Important invariant: when GC state is zero, the heap is stable, and no barriers |
268 // Important invariant: when GC state is zero, the heap is stable, and no barriers |
269 // are required. |
269 // are required. |
270 // |
270 // |
271 public: |
271 public: |
272 enum GCStateBitPos { |
272 enum GCStateBitPos { |
273 // Heap has forwarded objects: need RB, ACMP, CAS barriers. |
273 // Heap has forwarded objects: needs LRB barriers. |
274 HAS_FORWARDED_BITPOS = 0, |
274 HAS_FORWARDED_BITPOS = 0, |
275 |
275 |
276 // Heap is under marking: needs SATB barriers. |
276 // Heap is under marking: needs SATB barriers. |
277 MARKING_BITPOS = 1, |
277 MARKING_BITPOS = 1, |
278 |
278 |
279 // Heap is under evacuation: needs WB barriers. (Set together with UNSTABLE) |
279 // Heap is under evacuation: needs LRB barriers. (Set together with HAS_FORWARDED) |
280 EVACUATION_BITPOS = 2, |
280 EVACUATION_BITPOS = 2, |
281 |
281 |
282 // Heap is under updating: needs SVRB/SVWB barriers. |
282 // Heap is under updating: needs no additional barriers. |
283 UPDATEREFS_BITPOS = 3, |
283 UPDATEREFS_BITPOS = 3, |
284 |
284 |
285 // Heap is under traversal collection |
285 // Heap is under traversal collection |
286 TRAVERSAL_BITPOS = 4, |
286 TRAVERSAL_BITPOS = 4, |
287 }; |
287 }; |