Mercurial > hg > truffle
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 } |