< prev index next >

src/share/vm/prims/whitebox.cpp

Print this page
rev 11625 : Initial change
rev 11626 : Added exception


 333     return !(hr->is_young());
 334   } else if (UseParallelGC) {
 335     ParallelScavengeHeap* psh = ParallelScavengeHeap::heap();
 336     return !psh->is_in_young(p);
 337   }
 338 #endif // INCLUDE_ALL_GCS
 339   GenCollectedHeap* gch = GenCollectedHeap::heap();
 340   return !gch->is_in_young(p);
 341 WB_END
 342 
 343 WB_ENTRY(jlong, WB_GetObjectSize(JNIEnv* env, jobject o, jobject obj))
 344   oop p = JNIHandles::resolve(obj);
 345   return p->size() * HeapWordSize;
 346 WB_END
 347 
 348 WB_ENTRY(jlong, WB_GetHeapSpaceAlignment(JNIEnv* env, jobject o))
 349   size_t alignment = Universe::heap()->collector_policy()->space_alignment();
 350   return (jlong)alignment;
 351 WB_END
 352 





 353 #if INCLUDE_ALL_GCS
 354 WB_ENTRY(jboolean, WB_G1IsHumongous(JNIEnv* env, jobject o, jobject obj))
 355   G1CollectedHeap* g1 = G1CollectedHeap::heap();
 356   oop result = JNIHandles::resolve(obj);
 357   const HeapRegion* hr = g1->heap_region_containing(result);
 358   return hr->is_humongous();
 359 WB_END
 360 
 361 WB_ENTRY(jboolean, WB_G1BelongsToHumongousRegion(JNIEnv* env, jobject o, jlong addr))
 362   G1CollectedHeap* g1 = G1CollectedHeap::heap();
 363   const HeapRegion* hr = g1->heap_region_containing((void*) addr);
 364   return hr->is_humongous();
 365 WB_END
 366 
 367 WB_ENTRY(jboolean, WB_G1BelongsToFreeRegion(JNIEnv* env, jobject o, jlong addr))
 368   G1CollectedHeap* g1 = G1CollectedHeap::heap();
 369   const HeapRegion* hr = g1->heap_region_containing((void*) addr);
 370   return hr->is_free();
 371 WB_END
 372 


 384 
 385 WB_ENTRY(jboolean, WB_G1InConcurrentMark(JNIEnv* env, jobject o))
 386   G1CollectedHeap* g1h = G1CollectedHeap::heap();
 387   return g1h->concurrent_mark()->cmThread()->during_cycle();
 388 WB_END
 389 
 390 WB_ENTRY(jboolean, WB_G1StartMarkCycle(JNIEnv* env, jobject o))
 391   G1CollectedHeap* g1h = G1CollectedHeap::heap();
 392   if (!g1h->concurrent_mark()->cmThread()->during_cycle()) {
 393     g1h->collect(GCCause::_wb_conc_mark);
 394     return true;
 395   }
 396   return false;
 397 WB_END
 398 
 399 WB_ENTRY(jint, WB_G1RegionSize(JNIEnv* env, jobject o))
 400   return (jint)HeapRegion::GrainBytes;
 401 WB_END
 402 
 403 WB_ENTRY(jlong, WB_PSVirtualSpaceAlignment(JNIEnv* env, jobject o))
 404   ParallelScavengeHeap* ps = ParallelScavengeHeap::heap();
 405   size_t alignment = ps->gens()->virtual_spaces()->alignment();
 406   return (jlong)alignment;



 407 WB_END
 408 
 409 WB_ENTRY(jlong, WB_PSHeapGenerationAlignment(JNIEnv* env, jobject o))
 410   size_t alignment = ParallelScavengeHeap::heap()->generation_alignment();
 411   return (jlong)alignment;




 412 WB_END
 413 
 414 WB_ENTRY(jobject, WB_G1AuxiliaryMemoryUsage(JNIEnv* env))
 415   ResourceMark rm(THREAD);
 416   G1CollectedHeap* g1h = G1CollectedHeap::heap();
 417   MemoryUsage usage = g1h->get_auxiliary_data_memory_usage();
 418   Handle h = MemoryService::create_MemoryUsage_obj(usage, CHECK_NULL);
 419   return JNIHandles::make_local(env, h());
 420 WB_END
 421 
 422 class OldRegionsLivenessClosure: public HeapRegionClosure {
 423 
 424  private:
 425   const int _liveness;
 426   size_t _total_count;
 427   size_t _total_memory;
 428   size_t _total_memory_to_free;
 429 
 430  public:
 431   OldRegionsLivenessClosure(int liveness) :


1676     ret = 0;
1677   }
1678   return (jint) ret;
1679 WB_END
1680 
1681 WB_ENTRY(void, WB_RemoveCompilerDirective(JNIEnv* env, jobject o, jint count))
1682   DirectivesStack::pop(count);
1683 WB_END
1684 
1685 #define CC (char*)
1686 
1687 static JNINativeMethod methods[] = {
1688   {CC"getObjectAddress0",                CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectAddress  },
1689   {CC"getObjectSize0",                   CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectSize     },
1690   {CC"isObjectInOldGen0",                CC"(Ljava/lang/Object;)Z", (void*)&WB_isObjectInOldGen  },
1691   {CC"getHeapOopSize",                   CC"()I",                   (void*)&WB_GetHeapOopSize    },
1692   {CC"getVMPageSize",                    CC"()I",                   (void*)&WB_GetVMPageSize     },
1693   {CC"getVMAllocationGranularity",       CC"()J",                   (void*)&WB_GetVMAllocationGranularity },
1694   {CC"getVMLargePageSize",               CC"()J",                   (void*)&WB_GetVMLargePageSize},
1695   {CC"getHeapSpaceAlignment",            CC"()J",                   (void*)&WB_GetHeapSpaceAlignment},

1696   {CC"isClassAlive0",                    CC"(Ljava/lang/String;)Z", (void*)&WB_IsClassAlive      },
1697   {CC"parseCommandLine0",
1698       CC"(Ljava/lang/String;C[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;",
1699       (void*) &WB_ParseCommandLine
1700   },
1701   {CC"addToBootstrapClassLoaderSearch0", CC"(Ljava/lang/String;)V",
1702                                                       (void*)&WB_AddToBootstrapClassLoaderSearch},
1703   {CC"addToSystemClassLoaderSearch0",    CC"(Ljava/lang/String;)V",
1704                                                       (void*)&WB_AddToSystemClassLoaderSearch},
1705   {CC"getCompressedOopsMaxHeapSize", CC"()J",
1706       (void*)&WB_GetCompressedOopsMaxHeapSize},
1707   {CC"printHeapSizes",     CC"()V",                   (void*)&WB_PrintHeapSizes    },
1708   {CC"runMemoryUnitTests", CC"()V",                   (void*)&WB_RunMemoryUnitTests},
1709   {CC"readFromNoaccessArea",CC"()V",                  (void*)&WB_ReadFromNoaccessArea},
1710   {CC"stressVirtualSpaceResize",CC"(JJJ)I",           (void*)&WB_StressVirtualSpaceResize},
1711 #if INCLUDE_ALL_GCS
1712   {CC"g1InConcurrentMark", CC"()Z",                   (void*)&WB_G1InConcurrentMark},
1713   {CC"g1IsHumongous0",      CC"(Ljava/lang/Object;)Z", (void*)&WB_G1IsHumongous     },
1714   {CC"g1BelongsToHumongousRegion0", CC"(J)Z",         (void*)&WB_G1BelongsToHumongousRegion},
1715   {CC"g1BelongsToFreeRegion0", CC"(J)Z",              (void*)&WB_G1BelongsToFreeRegion},




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


 389 
 390 WB_ENTRY(jboolean, WB_G1InConcurrentMark(JNIEnv* env, jobject o))
 391   G1CollectedHeap* g1h = G1CollectedHeap::heap();
 392   return g1h->concurrent_mark()->cmThread()->during_cycle();
 393 WB_END
 394 
 395 WB_ENTRY(jboolean, WB_G1StartMarkCycle(JNIEnv* env, jobject o))
 396   G1CollectedHeap* g1h = G1CollectedHeap::heap();
 397   if (!g1h->concurrent_mark()->cmThread()->during_cycle()) {
 398     g1h->collect(GCCause::_wb_conc_mark);
 399     return true;
 400   }
 401   return false;
 402 WB_END
 403 
 404 WB_ENTRY(jint, WB_G1RegionSize(JNIEnv* env, jobject o))
 405   return (jint)HeapRegion::GrainBytes;
 406 WB_END
 407 
 408 WB_ENTRY(jlong, WB_PSVirtualSpaceAlignment(JNIEnv* env, jobject o))
 409 #if INCLUDE_ALL_GCS
 410   if (UseParallelGC) {
 411     return ParallelScavengeHeap::heap()->gens()->virtual_spaces()->alignment();
 412   }
 413 #endif // INCLUDE_ALL_GCS
 414   THROW_MSG_0(vmSymbols::java_lang_RuntimeException(), "WB_PSVirtualSpaceAlignment: Parallel GC is not enabled");
 415 WB_END
 416 
 417 WB_ENTRY(jlong, WB_PSHeapGenerationAlignment(JNIEnv* env, jobject o))
 418 #if INCLUDE_ALL_GCS
 419   if (UseParallelGC) {
 420     return ParallelScavengeHeap::heap()->generation_alignment();
 421   }
 422 #endif // INCLUDE_ALL_GCS
 423   THROW_MSG_0(vmSymbols::java_lang_RuntimeException(), "WB_PSHeapGenerationAlignment: Parallel GC is not enabled");
 424 WB_END
 425 
 426 WB_ENTRY(jobject, WB_G1AuxiliaryMemoryUsage(JNIEnv* env))
 427   ResourceMark rm(THREAD);
 428   G1CollectedHeap* g1h = G1CollectedHeap::heap();
 429   MemoryUsage usage = g1h->get_auxiliary_data_memory_usage();
 430   Handle h = MemoryService::create_MemoryUsage_obj(usage, CHECK_NULL);
 431   return JNIHandles::make_local(env, h());
 432 WB_END
 433 
 434 class OldRegionsLivenessClosure: public HeapRegionClosure {
 435 
 436  private:
 437   const int _liveness;
 438   size_t _total_count;
 439   size_t _total_memory;
 440   size_t _total_memory_to_free;
 441 
 442  public:
 443   OldRegionsLivenessClosure(int liveness) :


1688     ret = 0;
1689   }
1690   return (jint) ret;
1691 WB_END
1692 
1693 WB_ENTRY(void, WB_RemoveCompilerDirective(JNIEnv* env, jobject o, jint count))
1694   DirectivesStack::pop(count);
1695 WB_END
1696 
1697 #define CC (char*)
1698 
1699 static JNINativeMethod methods[] = {
1700   {CC"getObjectAddress0",                CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectAddress  },
1701   {CC"getObjectSize0",                   CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectSize     },
1702   {CC"isObjectInOldGen0",                CC"(Ljava/lang/Object;)Z", (void*)&WB_isObjectInOldGen  },
1703   {CC"getHeapOopSize",                   CC"()I",                   (void*)&WB_GetHeapOopSize    },
1704   {CC"getVMPageSize",                    CC"()I",                   (void*)&WB_GetVMPageSize     },
1705   {CC"getVMAllocationGranularity",       CC"()J",                   (void*)&WB_GetVMAllocationGranularity },
1706   {CC"getVMLargePageSize",               CC"()J",                   (void*)&WB_GetVMLargePageSize},
1707   {CC"getHeapSpaceAlignment",            CC"()J",                   (void*)&WB_GetHeapSpaceAlignment},
1708   {CC"getHeapAlignment",                 CC"()J",                   (void*)&WB_GetHeapAlignment},
1709   {CC"isClassAlive0",                    CC"(Ljava/lang/String;)Z", (void*)&WB_IsClassAlive      },
1710   {CC"parseCommandLine0",
1711       CC"(Ljava/lang/String;C[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;",
1712       (void*) &WB_ParseCommandLine
1713   },
1714   {CC"addToBootstrapClassLoaderSearch0", CC"(Ljava/lang/String;)V",
1715                                                       (void*)&WB_AddToBootstrapClassLoaderSearch},
1716   {CC"addToSystemClassLoaderSearch0",    CC"(Ljava/lang/String;)V",
1717                                                       (void*)&WB_AddToSystemClassLoaderSearch},
1718   {CC"getCompressedOopsMaxHeapSize", CC"()J",
1719       (void*)&WB_GetCompressedOopsMaxHeapSize},
1720   {CC"printHeapSizes",     CC"()V",                   (void*)&WB_PrintHeapSizes    },
1721   {CC"runMemoryUnitTests", CC"()V",                   (void*)&WB_RunMemoryUnitTests},
1722   {CC"readFromNoaccessArea",CC"()V",                  (void*)&WB_ReadFromNoaccessArea},
1723   {CC"stressVirtualSpaceResize",CC"(JJJ)I",           (void*)&WB_StressVirtualSpaceResize},
1724 #if INCLUDE_ALL_GCS
1725   {CC"g1InConcurrentMark", CC"()Z",                   (void*)&WB_G1InConcurrentMark},
1726   {CC"g1IsHumongous0",      CC"(Ljava/lang/Object;)Z", (void*)&WB_G1IsHumongous     },
1727   {CC"g1BelongsToHumongousRegion0", CC"(J)Z",         (void*)&WB_G1BelongsToHumongousRegion},
1728   {CC"g1BelongsToFreeRegion0", CC"(J)Z",              (void*)&WB_G1BelongsToFreeRegion},


< prev index next >