22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "gc_implementation/g1/dirtyCardQueue.hpp"
27 #include "gc_implementation/g1/heapRegionRemSet.hpp"
28 #include "runtime/atomic.hpp"
29 #include "runtime/mutexLocker.hpp"
30 #include "runtime/safepoint.hpp"
31 #include "runtime/thread.hpp"
32 #include "utilities/workgroup.hpp"
33 #ifdef TARGET_OS_FAMILY_linux
34 # include "thread_linux.inline.hpp"
35 #endif
36 #ifdef TARGET_OS_FAMILY_solaris
37 # include "thread_solaris.inline.hpp"
38 #endif
39 #ifdef TARGET_OS_FAMILY_windows
40 # include "thread_windows.inline.hpp"
41 #endif
42
43 bool DirtyCardQueue::apply_closure(CardTableEntryClosure* cl,
44 bool consume,
45 size_t worker_i) {
46 bool res = true;
47 if (_buf != NULL) {
48 res = apply_closure_to_buffer(cl, _buf, _index, _sz,
49 consume,
50 (int) worker_i);
51 if (res && consume) _index = _sz;
52 }
53 return res;
54 }
55
56 bool DirtyCardQueue::apply_closure_to_buffer(CardTableEntryClosure* cl,
57 void** buf,
58 size_t index, size_t sz,
59 bool consume,
60 int worker_i) {
61 if (cl == NULL) return true;
|
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "gc_implementation/g1/dirtyCardQueue.hpp"
27 #include "gc_implementation/g1/heapRegionRemSet.hpp"
28 #include "runtime/atomic.hpp"
29 #include "runtime/mutexLocker.hpp"
30 #include "runtime/safepoint.hpp"
31 #include "runtime/thread.hpp"
32 #include "utilities/workgroup.hpp"
33 #ifdef TARGET_OS_FAMILY_linux
34 # include "thread_linux.inline.hpp"
35 #endif
36 #ifdef TARGET_OS_FAMILY_solaris
37 # include "thread_solaris.inline.hpp"
38 #endif
39 #ifdef TARGET_OS_FAMILY_windows
40 # include "thread_windows.inline.hpp"
41 #endif
42 #ifdef TARGET_OS_FAMILY_bsd
43 # include "thread_bsd.inline.hpp"
44 #endif
45
46 bool DirtyCardQueue::apply_closure(CardTableEntryClosure* cl,
47 bool consume,
48 size_t worker_i) {
49 bool res = true;
50 if (_buf != NULL) {
51 res = apply_closure_to_buffer(cl, _buf, _index, _sz,
52 consume,
53 (int) worker_i);
54 if (res && consume) _index = _sz;
55 }
56 return res;
57 }
58
59 bool DirtyCardQueue::apply_closure_to_buffer(CardTableEntryClosure* cl,
60 void** buf,
61 size_t index, size_t sz,
62 bool consume,
63 int worker_i) {
64 if (cl == NULL) return true;
|