hotspot/src/share/vm/runtime/thread.hpp
changeset 14582 490bb6c0df7c
parent 14390 bd0d881cf1c5
child 15482 470d0b0c09f1
equal deleted inserted replaced
14581:8427edf5a77b 14582:490bb6c0df7c
   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