478 _current_waiting_monitor = monitor; |
478 _current_waiting_monitor = monitor; |
479 } |
479 } |
480 |
480 |
481 // GC support |
481 // GC support |
482 // Apply "f->do_oop" to all root oops in "this". |
482 // Apply "f->do_oop" to all root oops in "this". |
|
483 // Apply "cld_f->do_cld" to CLDs that are otherwise not kept alive. |
|
484 // Used by JavaThread::oops_do. |
483 // Apply "cf->do_code_blob" (if !NULL) to all code blobs active in frames |
485 // Apply "cf->do_code_blob" (if !NULL) to all code blobs active in frames |
484 virtual void oops_do(OopClosure* f, CodeBlobClosure* cf); |
486 virtual void oops_do(OopClosure* f, CLDToOopClosure* cld_f, CodeBlobClosure* cf); |
485 |
487 |
486 // Handles the parallel case for the method below. |
488 // Handles the parallel case for the method below. |
487 private: |
489 private: |
488 bool claim_oops_do_par_case(int collection_parity); |
490 bool claim_oops_do_par_case(int collection_parity); |
489 public: |
491 public: |
1403 |
1405 |
1404 // Frame iteration; calls the function f for all frames on the stack |
1406 // Frame iteration; calls the function f for all frames on the stack |
1405 void frames_do(void f(frame*, const RegisterMap*)); |
1407 void frames_do(void f(frame*, const RegisterMap*)); |
1406 |
1408 |
1407 // Memory operations |
1409 // Memory operations |
1408 void oops_do(OopClosure* f, CodeBlobClosure* cf); |
1410 void oops_do(OopClosure* f, CLDToOopClosure* cld_f, CodeBlobClosure* cf); |
1409 |
1411 |
1410 // Sweeper operations |
1412 // Sweeper operations |
1411 void nmethods_do(CodeBlobClosure* cf); |
1413 void nmethods_do(CodeBlobClosure* cf); |
1412 |
1414 |
1413 // RedefineClasses Support |
1415 // RedefineClasses Support |
1823 } |
1825 } |
1824 |
1826 |
1825 // GC support |
1827 // GC support |
1826 // Apply "f->do_oop" to all root oops in "this". |
1828 // Apply "f->do_oop" to all root oops in "this". |
1827 // Apply "cf->do_code_blob" (if !NULL) to all code blobs active in frames |
1829 // Apply "cf->do_code_blob" (if !NULL) to all code blobs active in frames |
1828 void oops_do(OopClosure* f, CodeBlobClosure* cf); |
1830 void oops_do(OopClosure* f, CLDToOopClosure* cld_f, CodeBlobClosure* cf); |
1829 |
1831 |
1830 #ifndef PRODUCT |
1832 #ifndef PRODUCT |
1831 private: |
1833 private: |
1832 IdealGraphPrinter *_ideal_graph_printer; |
1834 IdealGraphPrinter *_ideal_graph_printer; |
1833 public: |
1835 public: |
1890 // Garbage collection |
1892 // Garbage collection |
1891 static void follow_other_roots(void f(oop*)); |
1893 static void follow_other_roots(void f(oop*)); |
1892 |
1894 |
1893 // Apply "f->do_oop" to all root oops in all threads. |
1895 // Apply "f->do_oop" to all root oops in all threads. |
1894 // This version may only be called by sequential code. |
1896 // This version may only be called by sequential code. |
1895 static void oops_do(OopClosure* f, CodeBlobClosure* cf); |
1897 static void oops_do(OopClosure* f, CLDToOopClosure* cld_f, CodeBlobClosure* cf); |
1896 // This version may be called by sequential or parallel code. |
1898 // This version may be called by sequential or parallel code. |
1897 static void possibly_parallel_oops_do(OopClosure* f, CodeBlobClosure* cf); |
1899 static void possibly_parallel_oops_do(OopClosure* f, CLDToOopClosure* cld_f, CodeBlobClosure* cf); |
1898 // This creates a list of GCTasks, one per thread. |
1900 // This creates a list of GCTasks, one per thread. |
1899 static void create_thread_roots_tasks(GCTaskQueue* q); |
1901 static void create_thread_roots_tasks(GCTaskQueue* q); |
1900 // This creates a list of GCTasks, one per thread, for marking objects. |
1902 // This creates a list of GCTasks, one per thread, for marking objects. |
1901 static void create_thread_roots_marking_tasks(GCTaskQueue* q); |
1903 static void create_thread_roots_marking_tasks(GCTaskQueue* q); |
1902 |
1904 |