< prev index next >

src/share/vm/prims/whitebox.cpp

Print this page
rev 12854 : [mq]: gcinterface.patch


 149 WB_END
 150 
 151 WB_ENTRY(void, WB_AddToSystemClassLoaderSearch(JNIEnv* env, jobject o, jstring segment)) {
 152 #if INCLUDE_JVMTI
 153   ResourceMark rm;
 154   const char* seg = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(segment));
 155   JvmtiEnv* jvmti_env = JvmtiEnv::create_a_jvmti(JVMTI_VERSION);
 156   jvmtiError err = jvmti_env->AddToSystemClassLoaderSearch(seg);
 157   assert(err == JVMTI_ERROR_NONE, "must not fail");
 158 #endif
 159 }
 160 WB_END
 161 
 162 
 163 WB_ENTRY(jlong, WB_GetCompressedOopsMaxHeapSize(JNIEnv* env, jobject o)) {
 164   return (jlong)Arguments::max_heap_for_compressed_oops();
 165 }
 166 WB_END
 167 
 168 WB_ENTRY(void, WB_PrintHeapSizes(JNIEnv* env, jobject o)) {
 169   CollectorPolicy * p = Universe::heap()->collector_policy();
 170   tty->print_cr("Minimum heap " SIZE_FORMAT " Initial heap "
 171     SIZE_FORMAT " Maximum heap " SIZE_FORMAT " Space alignment " SIZE_FORMAT " Heap alignment " SIZE_FORMAT,
 172     p->min_heap_byte_size(), p->initial_heap_byte_size(), p->max_heap_byte_size(),
 173     p->space_alignment(), p->heap_alignment());
 174 }
 175 WB_END
 176 
 177 #ifndef PRODUCT
 178 // Forward declaration
 179 void TestReservedSpace_test();
 180 void TestReserveMemorySpecial_test();
 181 void TestVirtualSpace_test();
 182 void TestMetaspaceAux_test();
 183 #endif
 184 
 185 WB_ENTRY(void, WB_RunMemoryUnitTests(JNIEnv* env, jobject o))
 186 #ifndef PRODUCT
 187   TestReservedSpace_test();
 188   TestReserveMemorySpecial_test();
 189   TestVirtualSpace_test();


 331     const HeapRegion* hr = g1->heap_region_containing(p);
 332     if (hr == NULL) {
 333       return false;
 334     }
 335     return !(hr->is_young());
 336   } else if (UseParallelGC) {
 337     ParallelScavengeHeap* psh = ParallelScavengeHeap::heap();
 338     return !psh->is_in_young(p);
 339   }
 340 #endif // INCLUDE_ALL_GCS
 341   GenCollectedHeap* gch = GenCollectedHeap::heap();
 342   return !gch->is_in_young(p);
 343 WB_END
 344 
 345 WB_ENTRY(jlong, WB_GetObjectSize(JNIEnv* env, jobject o, jobject obj))
 346   oop p = JNIHandles::resolve(obj);
 347   return p->size() * HeapWordSize;
 348 WB_END
 349 
 350 WB_ENTRY(jlong, WB_GetHeapSpaceAlignment(JNIEnv* env, jobject o))
 351   size_t alignment = Universe::heap()->collector_policy()->space_alignment();
 352   return (jlong)alignment;
 353 WB_END
 354 
 355 WB_ENTRY(jlong, WB_GetHeapAlignment(JNIEnv* env, jobject o))
 356   size_t alignment = Universe::heap()->collector_policy()->heap_alignment();
 357   return (jlong)alignment;
 358 WB_END
 359 
 360 #if INCLUDE_ALL_GCS
 361 WB_ENTRY(jboolean, WB_G1IsHumongous(JNIEnv* env, jobject o, jobject obj))
 362   if (UseG1GC) {
 363     G1CollectedHeap* g1 = G1CollectedHeap::heap();
 364     oop result = JNIHandles::resolve(obj);
 365     const HeapRegion* hr = g1->heap_region_containing(result);
 366     return hr->is_humongous();
 367   }
 368   THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1IsHumongous: G1 GC is not enabled");
 369 WB_END
 370 
 371 WB_ENTRY(jboolean, WB_G1BelongsToHumongousRegion(JNIEnv* env, jobject o, jlong addr))
 372   if (UseG1GC) {
 373     G1CollectedHeap* g1 = G1CollectedHeap::heap();
 374     const HeapRegion* hr = g1->heap_region_containing((void*) addr);
 375     return hr->is_humongous();
 376   }


1147 
1148 WB_ENTRY(void, WB_UnlockCompilation(JNIEnv* env, jobject o))
1149   MonitorLockerEx mo(Compilation_lock, Mutex::_no_safepoint_check_flag);
1150   WhiteBox::compilation_locked = false;
1151   mo.notify_all();
1152 WB_END
1153 
1154 WB_ENTRY(void, WB_ForceNMethodSweep(JNIEnv* env, jobject o))
1155   // Force a code cache sweep and block until it finished
1156   NMethodSweeper::force_sweep();
1157 WB_END
1158 
1159 WB_ENTRY(jboolean, WB_IsInStringTable(JNIEnv* env, jobject o, jstring javaString))
1160   ResourceMark rm(THREAD);
1161   int len;
1162   jchar* name = java_lang_String::as_unicode_string(JNIHandles::resolve(javaString), len, CHECK_false);
1163   return (StringTable::lookup(name, len) != NULL);
1164 WB_END
1165 
1166 WB_ENTRY(void, WB_FullGC(JNIEnv* env, jobject o))
1167   Universe::heap()->collector_policy()->set_should_clear_all_soft_refs(true);
1168   Universe::heap()->collect(GCCause::_wb_full_gc);
1169 #if INCLUDE_ALL_GCS
1170   if (UseG1GC) {
1171     // Needs to be cleared explicitly for G1
1172     Universe::heap()->collector_policy()->set_should_clear_all_soft_refs(false);
1173   }
1174 #endif // INCLUDE_ALL_GCS
1175 WB_END
1176 
1177 WB_ENTRY(void, WB_YoungGC(JNIEnv* env, jobject o))
1178   Universe::heap()->collect(GCCause::_wb_young_gc);
1179 WB_END
1180 
1181 WB_ENTRY(void, WB_ReadReservedMemory(JNIEnv* env, jobject o))
1182   // static+volatile in order to force the read to happen
1183   // (not be eliminated by the compiler)
1184   static char c;
1185   static volatile char* p;
1186 
1187   p = os::reserve_memory(os::vm_allocation_granularity(), NULL, 0);
1188   if (p == NULL) {
1189     THROW_MSG(vmSymbols::java_lang_OutOfMemoryError(), "Failed to reserve memory");
1190   }
1191 
1192   c = *p;
1193 WB_END
1194 
1195 WB_ENTRY(jstring, WB_GetCPUFeatures(JNIEnv* env, jobject o))
1196   const char* features = VM_Version::features_string();
1197   ThreadToNativeFromVM ttn(thread);
1198   jstring features_string = env->NewStringUTF(features);




 149 WB_END
 150 
 151 WB_ENTRY(void, WB_AddToSystemClassLoaderSearch(JNIEnv* env, jobject o, jstring segment)) {
 152 #if INCLUDE_JVMTI
 153   ResourceMark rm;
 154   const char* seg = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(segment));
 155   JvmtiEnv* jvmti_env = JvmtiEnv::create_a_jvmti(JVMTI_VERSION);
 156   jvmtiError err = jvmti_env->AddToSystemClassLoaderSearch(seg);
 157   assert(err == JVMTI_ERROR_NONE, "must not fail");
 158 #endif
 159 }
 160 WB_END
 161 
 162 
 163 WB_ENTRY(jlong, WB_GetCompressedOopsMaxHeapSize(JNIEnv* env, jobject o)) {
 164   return (jlong)Arguments::max_heap_for_compressed_oops();
 165 }
 166 WB_END
 167 
 168 WB_ENTRY(void, WB_PrintHeapSizes(JNIEnv* env, jobject o)) {
 169   CollectorPolicy * p = GC::gc()->heap()->collector_policy();
 170   tty->print_cr("Minimum heap " SIZE_FORMAT " Initial heap "
 171     SIZE_FORMAT " Maximum heap " SIZE_FORMAT " Space alignment " SIZE_FORMAT " Heap alignment " SIZE_FORMAT,
 172     p->min_heap_byte_size(), p->initial_heap_byte_size(), p->max_heap_byte_size(),
 173     p->space_alignment(), p->heap_alignment());
 174 }
 175 WB_END
 176 
 177 #ifndef PRODUCT
 178 // Forward declaration
 179 void TestReservedSpace_test();
 180 void TestReserveMemorySpecial_test();
 181 void TestVirtualSpace_test();
 182 void TestMetaspaceAux_test();
 183 #endif
 184 
 185 WB_ENTRY(void, WB_RunMemoryUnitTests(JNIEnv* env, jobject o))
 186 #ifndef PRODUCT
 187   TestReservedSpace_test();
 188   TestReserveMemorySpecial_test();
 189   TestVirtualSpace_test();


 331     const HeapRegion* hr = g1->heap_region_containing(p);
 332     if (hr == NULL) {
 333       return false;
 334     }
 335     return !(hr->is_young());
 336   } else if (UseParallelGC) {
 337     ParallelScavengeHeap* psh = ParallelScavengeHeap::heap();
 338     return !psh->is_in_young(p);
 339   }
 340 #endif // INCLUDE_ALL_GCS
 341   GenCollectedHeap* gch = GenCollectedHeap::heap();
 342   return !gch->is_in_young(p);
 343 WB_END
 344 
 345 WB_ENTRY(jlong, WB_GetObjectSize(JNIEnv* env, jobject o, jobject obj))
 346   oop p = JNIHandles::resolve(obj);
 347   return p->size() * HeapWordSize;
 348 WB_END
 349 
 350 WB_ENTRY(jlong, WB_GetHeapSpaceAlignment(JNIEnv* env, jobject o))
 351   size_t alignment = GC::gc()->heap()->collector_policy()->space_alignment();
 352   return (jlong)alignment;
 353 WB_END
 354 
 355 WB_ENTRY(jlong, WB_GetHeapAlignment(JNIEnv* env, jobject o))
 356   size_t alignment = GC::gc()->heap()->collector_policy()->heap_alignment();
 357   return (jlong)alignment;
 358 WB_END
 359 
 360 #if INCLUDE_ALL_GCS
 361 WB_ENTRY(jboolean, WB_G1IsHumongous(JNIEnv* env, jobject o, jobject obj))
 362   if (UseG1GC) {
 363     G1CollectedHeap* g1 = G1CollectedHeap::heap();
 364     oop result = JNIHandles::resolve(obj);
 365     const HeapRegion* hr = g1->heap_region_containing(result);
 366     return hr->is_humongous();
 367   }
 368   THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1IsHumongous: G1 GC is not enabled");
 369 WB_END
 370 
 371 WB_ENTRY(jboolean, WB_G1BelongsToHumongousRegion(JNIEnv* env, jobject o, jlong addr))
 372   if (UseG1GC) {
 373     G1CollectedHeap* g1 = G1CollectedHeap::heap();
 374     const HeapRegion* hr = g1->heap_region_containing((void*) addr);
 375     return hr->is_humongous();
 376   }


1147 
1148 WB_ENTRY(void, WB_UnlockCompilation(JNIEnv* env, jobject o))
1149   MonitorLockerEx mo(Compilation_lock, Mutex::_no_safepoint_check_flag);
1150   WhiteBox::compilation_locked = false;
1151   mo.notify_all();
1152 WB_END
1153 
1154 WB_ENTRY(void, WB_ForceNMethodSweep(JNIEnv* env, jobject o))
1155   // Force a code cache sweep and block until it finished
1156   NMethodSweeper::force_sweep();
1157 WB_END
1158 
1159 WB_ENTRY(jboolean, WB_IsInStringTable(JNIEnv* env, jobject o, jstring javaString))
1160   ResourceMark rm(THREAD);
1161   int len;
1162   jchar* name = java_lang_String::as_unicode_string(JNIHandles::resolve(javaString), len, CHECK_false);
1163   return (StringTable::lookup(name, len) != NULL);
1164 WB_END
1165 
1166 WB_ENTRY(void, WB_FullGC(JNIEnv* env, jobject o))
1167   GC::gc()->heap()->collector_policy()->set_should_clear_all_soft_refs(true);
1168   GC::gc()->heap()->collect(GCCause::_wb_full_gc);
1169 #if INCLUDE_ALL_GCS
1170   if (UseG1GC) {
1171     // Needs to be cleared explicitly for G1
1172     GC::gc()->heap()->collector_policy()->set_should_clear_all_soft_refs(false);
1173   }
1174 #endif // INCLUDE_ALL_GCS
1175 WB_END
1176 
1177 WB_ENTRY(void, WB_YoungGC(JNIEnv* env, jobject o))
1178   GC::gc()->heap()->collect(GCCause::_wb_young_gc);
1179 WB_END
1180 
1181 WB_ENTRY(void, WB_ReadReservedMemory(JNIEnv* env, jobject o))
1182   // static+volatile in order to force the read to happen
1183   // (not be eliminated by the compiler)
1184   static char c;
1185   static volatile char* p;
1186 
1187   p = os::reserve_memory(os::vm_allocation_granularity(), NULL, 0);
1188   if (p == NULL) {
1189     THROW_MSG(vmSymbols::java_lang_OutOfMemoryError(), "Failed to reserve memory");
1190   }
1191 
1192   c = *p;
1193 WB_END
1194 
1195 WB_ENTRY(jstring, WB_GetCPUFeatures(JNIEnv* env, jobject o))
1196   const char* features = VM_Version::features_string();
1197   ThreadToNativeFromVM ttn(thread);
1198   jstring features_string = env->NewStringUTF(features);


< prev index next >