src/share/vm/runtime/thread.hpp

changeset 4298
d0aa87f04bd5
parent 4250
c284cf4781f0
child 4542
db9981fd3124
equal deleted inserted replaced
4297:19c1bd641922 4298:d0aa87f04bd5
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

mercurial