Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp @ 1000:a1423fe86a18
Merge
author | trims |
---|---|
date | Fri, 09 Oct 2009 15:18:52 -0700 |
parents | 89e0543e1737 54b3b351d6f9 |
children | 2a1472c30599 |
comparison
equal
deleted
inserted
replaced
984:6ddec5389232 | 1000:a1423fe86a18 |
---|---|
37 NOT_PRODUCT(TraceTime tm("ThreadRootsMarkingTask", | 37 NOT_PRODUCT(TraceTime tm("ThreadRootsMarkingTask", |
38 PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty)); | 38 PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty)); |
39 ParCompactionManager* cm = | 39 ParCompactionManager* cm = |
40 ParCompactionManager::gc_thread_compaction_manager(which); | 40 ParCompactionManager::gc_thread_compaction_manager(which); |
41 PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm); | 41 PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm); |
42 CodeBlobToOopClosure mark_and_push_in_blobs(&mark_and_push_closure, /*do_marking=*/ true); | |
42 | 43 |
43 if (_java_thread != NULL) | 44 if (_java_thread != NULL) |
44 _java_thread->oops_do(&mark_and_push_closure); | 45 _java_thread->oops_do(&mark_and_push_closure, &mark_and_push_in_blobs); |
45 | 46 |
46 if (_vm_thread != NULL) | 47 if (_vm_thread != NULL) |
47 _vm_thread->oops_do(&mark_and_push_closure); | 48 _vm_thread->oops_do(&mark_and_push_closure, &mark_and_push_in_blobs); |
48 | 49 |
49 // Do the real work | 50 // Do the real work |
50 cm->drain_marking_stacks(&mark_and_push_closure); | 51 cm->drain_marking_stacks(&mark_and_push_closure); |
51 } | 52 } |
52 | 53 |
76 break; | 77 break; |
77 | 78 |
78 case threads: | 79 case threads: |
79 { | 80 { |
80 ResourceMark rm; | 81 ResourceMark rm; |
81 Threads::oops_do(&mark_and_push_closure); | 82 CodeBlobToOopClosure each_active_code_blob(&mark_and_push_closure, /*do_marking=*/ true); |
83 Threads::oops_do(&mark_and_push_closure, &each_active_code_blob); | |
82 } | 84 } |
83 break; | 85 break; |
84 | 86 |
85 case object_synchronizer: | 87 case object_synchronizer: |
86 ObjectSynchronizer::oops_do(&mark_and_push_closure); | 88 ObjectSynchronizer::oops_do(&mark_and_push_closure); |
102 SystemDictionary::always_strong_oops_do(&mark_and_push_closure); | 104 SystemDictionary::always_strong_oops_do(&mark_and_push_closure); |
103 break; | 105 break; |
104 | 106 |
105 case vm_symbols: | 107 case vm_symbols: |
106 vmSymbols::oops_do(&mark_and_push_closure); | 108 vmSymbols::oops_do(&mark_and_push_closure); |
109 break; | |
110 | |
111 case code_cache: | |
112 // Do not treat nmethods as strong roots for mark/sweep, since we can unload them. | |
113 //CodeCache::scavenge_root_nmethods_do(CodeBlobToOopClosure(&mark_and_push_closure)); | |
107 break; | 114 break; |
108 | 115 |
109 default: | 116 default: |
110 fatal("Unknown root type"); | 117 fatal("Unknown root type"); |
111 } | 118 } |