comparison src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp @ 1836:894b1d7c7e01

6423256: GC stacks should use a better data structure 6942771: SEGV in ParScanThreadState::take_from_overflow_stack Reviewed-by: apetrusenko, ysr, pbk
author jcoomes
date Tue, 28 Sep 2010 15:56:15 -0700
parents c18cbe5936b8
children f95d63e2154a
comparison
equal deleted inserted replaced
1835:4805b9f4779e 1836:894b1d7c7e01
57 57
58 NOT_PRODUCT(TraceTime tm("MarkFromRootsTask", 58 NOT_PRODUCT(TraceTime tm("MarkFromRootsTask",
59 PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty)); 59 PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty));
60 ParCompactionManager* cm = 60 ParCompactionManager* cm =
61 ParCompactionManager::gc_thread_compaction_manager(which); 61 ParCompactionManager::gc_thread_compaction_manager(which);
62 assert(cm->stacks_have_been_allocated(),
63 "Stack space has not been allocated");
64 PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm); 62 PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm);
65 63
66 switch (_root_type) { 64 switch (_root_type) {
67 case universe: 65 case universe:
68 Universe::oops_do(&mark_and_push_closure); 66 Universe::oops_do(&mark_and_push_closure);
117 fatal("Unknown root type"); 115 fatal("Unknown root type");
118 } 116 }
119 117
120 // Do the real work 118 // Do the real work
121 cm->follow_marking_stacks(); 119 cm->follow_marking_stacks();
122 // cm->deallocate_stacks();
123 } 120 }
124 121
125 122
126 // 123 //
127 // RefProcTaskProxy 124 // RefProcTaskProxy
133 130
134 NOT_PRODUCT(TraceTime tm("RefProcTask", 131 NOT_PRODUCT(TraceTime tm("RefProcTask",
135 PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty)); 132 PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty));
136 ParCompactionManager* cm = 133 ParCompactionManager* cm =
137 ParCompactionManager::gc_thread_compaction_manager(which); 134 ParCompactionManager::gc_thread_compaction_manager(which);
138 assert(cm->stacks_have_been_allocated(),
139 "Stack space has not been allocated");
140 PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm); 135 PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm);
141 PSParallelCompact::FollowStackClosure follow_stack_closure(cm); 136 PSParallelCompact::FollowStackClosure follow_stack_closure(cm);
142 _rp_task.work(_work_id, *PSParallelCompact::is_alive_closure(), 137 _rp_task.work(_work_id, *PSParallelCompact::is_alive_closure(),
143 mark_and_push_closure, follow_stack_closure); 138 mark_and_push_closure, follow_stack_closure);
144 } 139 }