99 100 bool found() const { 101 return _found; 102 } 103 }; 104 105 WB_ENTRY(jboolean, WB_IsClassAlive(JNIEnv* env, jobject target, jstring name)) 106 Handle h_name = JNIHandles::resolve(name); 107 if (h_name.is_null()) return false; 108 Symbol* sym = java_lang_String::as_symbol(h_name, CHECK_false); 109 TempNewSymbol tsym(sym); // Make sure to decrement reference count on sym on return 110 111 WBIsKlassAliveClosure closure(sym); 112 ClassLoaderDataGraph::classes_do(&closure); 113 114 return closure.found(); 115 WB_END 116 117 WB_ENTRY(void, WB_AddToBootstrapClassLoaderSearch(JNIEnv* env, jobject o, jstring segment)) { 118 #if INCLUDE_JVMTI 119 ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI 120 const char* seg = env->GetStringUTFChars(segment, NULL); 121 JvmtiEnv* jvmti_env = JvmtiEnv::create_a_jvmti(JVMTI_VERSION); 122 jvmtiError err = jvmti_env->AddToBootstrapClassLoaderSearch(seg); 123 assert(err == JVMTI_ERROR_NONE, "must not fail"); 124 env->ReleaseStringUTFChars(segment, seg); 125 #endif 126 } 127 WB_END 128 129 WB_ENTRY(void, WB_AddToSystemClassLoaderSearch(JNIEnv* env, jobject o, jstring segment)) { 130 #if INCLUDE_JVMTI 131 ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI 132 const char* seg = env->GetStringUTFChars(segment, NULL); 133 JvmtiEnv* jvmti_env = JvmtiEnv::create_a_jvmti(JVMTI_VERSION); 134 jvmtiError err = jvmti_env->AddToSystemClassLoaderSearch(seg); 135 assert(err == JVMTI_ERROR_NONE, "must not fail"); 136 env->ReleaseStringUTFChars(segment, seg); 137 #endif 138 } 139 WB_END 140 141 142 WB_ENTRY(jlong, WB_GetCompressedOopsMaxHeapSize(JNIEnv* env, jobject o)) { 143 return (jlong)Arguments::max_heap_for_compressed_oops(); 144 } 145 WB_END 146 147 WB_ENTRY(void, WB_PrintHeapSizes(JNIEnv* env, jobject o)) { 148 CollectorPolicy * p = Universe::heap()->collector_policy(); 149 gclog_or_tty->print_cr("Minimum heap "SIZE_FORMAT" Initial heap " 150 SIZE_FORMAT" Maximum heap "SIZE_FORMAT" Space alignment "SIZE_FORMAT" Heap alignment "SIZE_FORMAT, 151 p->min_heap_byte_size(), p->initial_heap_byte_size(), p->max_heap_byte_size(), 152 p->space_alignment(), p->heap_alignment()); 153 } 154 WB_END 155 156 #ifndef PRODUCT | 99 100 bool found() const { 101 return _found; 102 } 103 }; 104 105 WB_ENTRY(jboolean, WB_IsClassAlive(JNIEnv* env, jobject target, jstring name)) 106 Handle h_name = JNIHandles::resolve(name); 107 if (h_name.is_null()) return false; 108 Symbol* sym = java_lang_String::as_symbol(h_name, CHECK_false); 109 TempNewSymbol tsym(sym); // Make sure to decrement reference count on sym on return 110 111 WBIsKlassAliveClosure closure(sym); 112 ClassLoaderDataGraph::classes_do(&closure); 113 114 return closure.found(); 115 WB_END 116 117 WB_ENTRY(void, WB_AddToBootstrapClassLoaderSearch(JNIEnv* env, jobject o, jstring segment)) { 118 #if INCLUDE_JVMTI 119 const char* seg; 120 { 121 ThreadToNativeFromVM ttnfv(thread); 122 seg = env->GetStringUTFChars(segment, NULL); 123 } 124 JvmtiEnv* jvmti_env = JvmtiEnv::create_a_jvmti(JVMTI_VERSION); 125 jvmtiError err = jvmti_env->AddToBootstrapClassLoaderSearch(seg); 126 assert(err == JVMTI_ERROR_NONE, "must not fail"); 127 { 128 ThreadToNativeFromVM ttnfv(thread); 129 env->ReleaseStringUTFChars(segment, seg); 130 } 131 #endif 132 } 133 WB_END 134 135 WB_ENTRY(void, WB_AddToSystemClassLoaderSearch(JNIEnv* env, jobject o, jstring segment)) { 136 #if INCLUDE_JVMTI 137 const char* seg; 138 { 139 ThreadToNativeFromVM ttnfv(thread); 140 seg = env->GetStringUTFChars(segment, NULL); 141 } 142 JvmtiEnv* jvmti_env = JvmtiEnv::create_a_jvmti(JVMTI_VERSION); 143 jvmtiError err = jvmti_env->AddToSystemClassLoaderSearch(seg); 144 assert(err == JVMTI_ERROR_NONE, "must not fail"); 145 { 146 ThreadToNativeFromVM ttnfv(thread); 147 env->ReleaseStringUTFChars(segment, seg); 148 } 149 #endif 150 } 151 WB_END 152 153 154 WB_ENTRY(jlong, WB_GetCompressedOopsMaxHeapSize(JNIEnv* env, jobject o)) { 155 return (jlong)Arguments::max_heap_for_compressed_oops(); 156 } 157 WB_END 158 159 WB_ENTRY(void, WB_PrintHeapSizes(JNIEnv* env, jobject o)) { 160 CollectorPolicy * p = Universe::heap()->collector_policy(); 161 gclog_or_tty->print_cr("Minimum heap "SIZE_FORMAT" Initial heap " 162 SIZE_FORMAT" Maximum heap "SIZE_FORMAT" Space alignment "SIZE_FORMAT" Heap alignment "SIZE_FORMAT, 163 p->min_heap_byte_size(), p->initial_heap_byte_size(), p->max_heap_byte_size(), 164 p->space_alignment(), p->heap_alignment()); 165 } 166 WB_END 167 168 #ifndef PRODUCT |