1879 static void create_vm_init_libraries(); 1880 static void create_vm_init_agents(); 1881 static void shutdown_vm_agents(); 1882 static bool destroy_vm(); 1883 // Supported VM versions via JNI 1884 // Includes JNI_VERSION_1_1 1885 static jboolean is_supported_jni_version_including_1_1(jint version); 1886 // Does not include JNI_VERSION_1_1 1887 static jboolean is_supported_jni_version(jint version); 1888 1889 // The "thread claim parity" provides a way for threads to be claimed 1890 // by parallel worker tasks. 1891 // 1892 // Each thread contains a a "parity" field. A task will claim the 1893 // thread only if its parity field is the same as the global parity, 1894 // which is updated by calling change_thread_claim_parity(). 1895 // 1896 // For this to work change_thread_claim_parity() needs to be called 1897 // exactly once in sequential code before starting parallel tasks 1898 // that should claim threads. 1899 // 1900 // If the client meats this spec, then "thread claim parity" will have 1901 // the following properties: 1902 // a) to return a different value than was returned before the last 1903 // call to change_strong_roots_parity, and 1904 // c) to never return a distinguished value (zero) with which such 1905 // task-claiming variables may be initialized, to indicate "never 1906 // claimed". 1907 static int thread_claim_parity() { return _thread_claim_parity; } 1908 static void change_thread_claim_parity(); 1909 static void assert_all_threads_claimed() PRODUCT_RETURN; 1910 1911 // Apply "f->do_oop" to all root oops in all threads. 1912 // This version may only be called by sequential code. 1913 static void oops_do(OopClosure* f, CLDClosure* cld_f, CodeBlobClosure* cf); 1914 // This version may be called by sequential or parallel code. 1915 static void possibly_parallel_oops_do(bool is_par, OopClosure* f, CLDClosure* cld_f, CodeBlobClosure* cf); 1916 // This creates a list of GCTasks, one per thread. 1917 static void create_thread_roots_tasks(GCTaskQueue* q); 1918 // This creates a list of GCTasks, one per thread, for marking objects. 1919 static void create_thread_roots_marking_tasks(GCTaskQueue* q); 1920 1921 // Apply "f->do_oop" to roots in all threads that 1922 // are part of compiled frames 1923 static void compiled_frame_oops_do(OopClosure* f, CodeBlobClosure* cf); 1924 1925 static void convert_hcode_pointers(); 1926 static void restore_hcode_pointers(); | 1879 static void create_vm_init_libraries(); 1880 static void create_vm_init_agents(); 1881 static void shutdown_vm_agents(); 1882 static bool destroy_vm(); 1883 // Supported VM versions via JNI 1884 // Includes JNI_VERSION_1_1 1885 static jboolean is_supported_jni_version_including_1_1(jint version); 1886 // Does not include JNI_VERSION_1_1 1887 static jboolean is_supported_jni_version(jint version); 1888 1889 // The "thread claim parity" provides a way for threads to be claimed 1890 // by parallel worker tasks. 1891 // 1892 // Each thread contains a a "parity" field. A task will claim the 1893 // thread only if its parity field is the same as the global parity, 1894 // which is updated by calling change_thread_claim_parity(). 1895 // 1896 // For this to work change_thread_claim_parity() needs to be called 1897 // exactly once in sequential code before starting parallel tasks 1898 // that should claim threads. 1899 static int thread_claim_parity() { return _thread_claim_parity; } 1900 static void change_thread_claim_parity(); 1901 static void assert_all_threads_claimed() PRODUCT_RETURN; 1902 1903 // Apply "f->do_oop" to all root oops in all threads. 1904 // This version may only be called by sequential code. 1905 static void oops_do(OopClosure* f, CLDClosure* cld_f, CodeBlobClosure* cf); 1906 // This version may be called by sequential or parallel code. 1907 static void possibly_parallel_oops_do(bool is_par, OopClosure* f, CLDClosure* cld_f, CodeBlobClosure* cf); 1908 // This creates a list of GCTasks, one per thread. 1909 static void create_thread_roots_tasks(GCTaskQueue* q); 1910 // This creates a list of GCTasks, one per thread, for marking objects. 1911 static void create_thread_roots_marking_tasks(GCTaskQueue* q); 1912 1913 // Apply "f->do_oop" to roots in all threads that 1914 // are part of compiled frames 1915 static void compiled_frame_oops_do(OopClosure* f, CodeBlobClosure* cf); 1916 1917 static void convert_hcode_pointers(); 1918 static void restore_hcode_pointers(); |