Mercurial > hg > truffle
comparison src/share/vm/runtime/thread.cpp @ 14483:be0ac0e8f6e7
8035393: Use CLDClosure instead of CLDToOopClosure in frame::oops_interpreted_do
Reviewed-by: tschatzl, coleenp
author | stefank |
---|---|
date | Fri, 21 Feb 2014 10:01:20 +0100 |
parents | 2c95095271e9 |
children | f460c6926af7 |
comparison
equal
deleted
inserted
replaced
14470:f6490a5f084a | 14483:be0ac0e8f6e7 |
---|---|
824 assert(SharedHeap::heap()->workers()->active_workers() > 0, | 824 assert(SharedHeap::heap()->workers()->active_workers() > 0, |
825 "Should only fail when parallel."); | 825 "Should only fail when parallel."); |
826 return false; | 826 return false; |
827 } | 827 } |
828 | 828 |
829 void Thread::oops_do(OopClosure* f, CLDToOopClosure* cld_f, CodeBlobClosure* cf) { | 829 void Thread::oops_do(OopClosure* f, CLDClosure* cld_f, CodeBlobClosure* cf) { |
830 active_handles()->oops_do(f); | 830 active_handles()->oops_do(f); |
831 // Do oop for ThreadShadow | 831 // Do oop for ThreadShadow |
832 f->do_oop((oop*)&_pending_exception); | 832 f->do_oop((oop*)&_pending_exception); |
833 handle_area()->oops_do(f); | 833 handle_area()->oops_do(f); |
834 } | 834 } |
2720 _cur_thr->set_processed_thread(NULL); | 2720 _cur_thr->set_processed_thread(NULL); |
2721 } | 2721 } |
2722 } | 2722 } |
2723 }; | 2723 }; |
2724 | 2724 |
2725 void JavaThread::oops_do(OopClosure* f, CLDToOopClosure* cld_f, CodeBlobClosure* cf) { | 2725 void JavaThread::oops_do(OopClosure* f, CLDClosure* cld_f, CodeBlobClosure* cf) { |
2726 // Verify that the deferred card marks have been flushed. | 2726 // Verify that the deferred card marks have been flushed. |
2727 assert(deferred_card_mark().is_empty(), "Should be empty during GC"); | 2727 assert(deferred_card_mark().is_empty(), "Should be empty during GC"); |
2728 | 2728 |
2729 // The ThreadProfiler oops_do is done from FlatProfiler::oops_do | 2729 // The ThreadProfiler oops_do is done from FlatProfiler::oops_do |
2730 // since there may be more than one thread using each ThreadProfiler. | 2730 // since there may be more than one thread using each ThreadProfiler. |
3243 #ifndef PRODUCT | 3243 #ifndef PRODUCT |
3244 _ideal_graph_printer = NULL; | 3244 _ideal_graph_printer = NULL; |
3245 #endif | 3245 #endif |
3246 } | 3246 } |
3247 | 3247 |
3248 void CompilerThread::oops_do(OopClosure* f, CLDToOopClosure* cld_f, CodeBlobClosure* cf) { | 3248 void CompilerThread::oops_do(OopClosure* f, CLDClosure* cld_f, CodeBlobClosure* cf) { |
3249 JavaThread::oops_do(f, cld_f, cf); | 3249 JavaThread::oops_do(f, cld_f, cf); |
3250 if (_scanned_nmethod != NULL && cf != NULL) { | 3250 if (_scanned_nmethod != NULL && cf != NULL) { |
3251 // Safepoints can occur when the sweeper is scanning an nmethod so | 3251 // Safepoints can occur when the sweeper is scanning an nmethod so |
3252 // process it here to make sure it isn't unloaded in the middle of | 3252 // process it here to make sure it isn't unloaded in the middle of |
3253 // a scan. | 3253 // a scan. |
4139 // In particular, these things should never be called when the Threads_lock | 4139 // In particular, these things should never be called when the Threads_lock |
4140 // is held by some other thread. (Note: the Safepoint abstraction also | 4140 // is held by some other thread. (Note: the Safepoint abstraction also |
4141 // uses the Threads_lock to guarantee this property. It also makes sure that | 4141 // uses the Threads_lock to guarantee this property. It also makes sure that |
4142 // all threads gets blocked when exiting or starting). | 4142 // all threads gets blocked when exiting or starting). |
4143 | 4143 |
4144 void Threads::oops_do(OopClosure* f, CLDToOopClosure* cld_f, CodeBlobClosure* cf) { | 4144 void Threads::oops_do(OopClosure* f, CLDClosure* cld_f, CodeBlobClosure* cf) { |
4145 ALL_JAVA_THREADS(p) { | 4145 ALL_JAVA_THREADS(p) { |
4146 p->oops_do(f, cld_f, cf); | 4146 p->oops_do(f, cld_f, cf); |
4147 } | 4147 } |
4148 VMThread::vm_thread()->oops_do(f, cld_f, cf); | 4148 VMThread::vm_thread()->oops_do(f, cld_f, cf); |
4149 } | 4149 } |
4150 | 4150 |
4151 void Threads::possibly_parallel_oops_do(OopClosure* f, CLDToOopClosure* cld_f, CodeBlobClosure* cf) { | 4151 void Threads::possibly_parallel_oops_do(OopClosure* f, CLDClosure* cld_f, CodeBlobClosure* cf) { |
4152 // Introduce a mechanism allowing parallel threads to claim threads as | 4152 // Introduce a mechanism allowing parallel threads to claim threads as |
4153 // root groups. Overhead should be small enough to use all the time, | 4153 // root groups. Overhead should be small enough to use all the time, |
4154 // even in sequential code. | 4154 // even in sequential code. |
4155 SharedHeap* sh = SharedHeap::heap(); | 4155 SharedHeap* sh = SharedHeap::heap(); |
4156 // Cannot yet substitute active_workers for n_par_threads | 4156 // Cannot yet substitute active_workers for n_par_threads |