1373 if (inc > max_size_t) {
1374 THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
1375 err_msg("WB_IncMetaspaceCapacityUntilGC: inc does not fit in size_t: " JLONG_FORMAT, inc));
1376 }
1377
1378 size_t new_cap_until_GC = 0;
1379 size_t aligned_inc = align_size_down((size_t) inc, Metaspace::commit_alignment());
1380 bool success = MetaspaceGC::inc_capacity_until_GC(aligned_inc, &new_cap_until_GC);
1381 if (!success) {
1382 THROW_MSG_0(vmSymbols::java_lang_IllegalStateException(),
1383 "WB_IncMetaspaceCapacityUntilGC: could not increase capacity until GC "
1384 "due to contention with another thread");
1385 }
1386 return (jlong) new_cap_until_GC;
1387 WB_END
1388
1389 WB_ENTRY(jlong, WB_MetaspaceCapacityUntilGC(JNIEnv* env, jobject wb))
1390 return (jlong) MetaspaceGC::capacity_until_GC();
1391 WB_END
1392
1393
1394 WB_ENTRY(void, WB_AssertMatchingSafepointCalls(JNIEnv* env, jobject o, jboolean mutexSafepointValue, jboolean attemptedNoSafepointValue))
1395 Monitor::SafepointCheckRequired sfpt_check_required = mutexSafepointValue ?
1396 Monitor::_safepoint_check_always :
1397 Monitor::_safepoint_check_never;
1398 MutexLockerEx ml(new Mutex(Mutex::leaf, "SFPT_Test_lock", true, sfpt_check_required),
1399 attemptedNoSafepointValue == JNI_TRUE);
1400 WB_END
1401
1402 WB_ENTRY(jboolean, WB_IsMonitorInflated(JNIEnv* env, jobject wb, jobject obj))
1403 oop obj_oop = JNIHandles::resolve(obj);
1404 return (jboolean) obj_oop->mark()->has_monitor();
1405 WB_END
1406
1407 WB_ENTRY(void, WB_ForceSafepoint(JNIEnv* env, jobject wb))
1408 VM_ForceSafepoint force_safepoint_op;
1409 VMThread::execute(&force_safepoint_op);
1410 WB_END
1411
1412 WB_ENTRY(jlong, WB_GetConstantPool(JNIEnv* env, jobject wb, jclass klass))
1753 {CC"getUintxVMFlag", CC"(Ljava/lang/String;)Ljava/lang/Long;",
1754 (void*)&WB_GetUintxVMFlag},
1755 {CC"getUint64VMFlag", CC"(Ljava/lang/String;)Ljava/lang/Long;",
1756 (void*)&WB_GetUint64VMFlag},
1757 {CC"getSizeTVMFlag", CC"(Ljava/lang/String;)Ljava/lang/Long;",
1758 (void*)&WB_GetSizeTVMFlag},
1759 {CC"getDoubleVMFlag", CC"(Ljava/lang/String;)Ljava/lang/Double;",
1760 (void*)&WB_GetDoubleVMFlag},
1761 {CC"getStringVMFlag", CC"(Ljava/lang/String;)Ljava/lang/String;",
1762 (void*)&WB_GetStringVMFlag},
1763 {CC"isInStringTable", CC"(Ljava/lang/String;)Z", (void*)&WB_IsInStringTable },
1764 {CC"fullGC", CC"()V", (void*)&WB_FullGC },
1765 {CC"youngGC", CC"()V", (void*)&WB_YoungGC },
1766 {CC"readReservedMemory", CC"()V", (void*)&WB_ReadReservedMemory },
1767 {CC"allocateMetaspace",
1768 CC"(Ljava/lang/ClassLoader;J)J", (void*)&WB_AllocateMetaspace },
1769 {CC"freeMetaspace",
1770 CC"(Ljava/lang/ClassLoader;JJ)V", (void*)&WB_FreeMetaspace },
1771 {CC"incMetaspaceCapacityUntilGC", CC"(J)J", (void*)&WB_IncMetaspaceCapacityUntilGC },
1772 {CC"metaspaceCapacityUntilGC", CC"()J", (void*)&WB_MetaspaceCapacityUntilGC },
1773 {CC"getCPUFeatures", CC"()Ljava/lang/String;", (void*)&WB_GetCPUFeatures },
1774 {CC"getNMethod0", CC"(Ljava/lang/reflect/Executable;Z)[Ljava/lang/Object;",
1775 (void*)&WB_GetNMethod },
1776 {CC"forceNMethodSweep", CC"()V", (void*)&WB_ForceNMethodSweep },
1777 {CC"allocateCodeBlob", CC"(II)J", (void*)&WB_AllocateCodeBlob },
1778 {CC"freeCodeBlob", CC"(J)V", (void*)&WB_FreeCodeBlob },
1779 {CC"getCodeHeapEntries", CC"(I)[Ljava/lang/Object;",(void*)&WB_GetCodeHeapEntries },
1780 {CC"getCompilationActivityMode",
1781 CC"()I", (void*)&WB_GetCompilationActivityMode},
1782 {CC"getMethodData0", CC"(Ljava/lang/reflect/Executable;)J",
1783 (void*)&WB_GetMethodData },
1784 {CC"getCodeBlob", CC"(J)[Ljava/lang/Object;",(void*)&WB_GetCodeBlob },
1785 {CC"getThreadStackSize", CC"()J", (void*)&WB_GetThreadStackSize },
1786 {CC"getThreadRemainingStackSize", CC"()J", (void*)&WB_GetThreadRemainingStackSize },
1787 {CC"DefineModule", CC"(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V",
1788 (void*)&WB_DefineModule },
1789 {CC"AddModuleExports", CC"(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V",
1790 (void*)&WB_AddModuleExports },
1791 {CC"AddReadsModule", CC"(Ljava/lang/Object;Ljava/lang/Object;)V",
1792 (void*)&WB_AddReadsModule },
|
1373 if (inc > max_size_t) {
1374 THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
1375 err_msg("WB_IncMetaspaceCapacityUntilGC: inc does not fit in size_t: " JLONG_FORMAT, inc));
1376 }
1377
1378 size_t new_cap_until_GC = 0;
1379 size_t aligned_inc = align_size_down((size_t) inc, Metaspace::commit_alignment());
1380 bool success = MetaspaceGC::inc_capacity_until_GC(aligned_inc, &new_cap_until_GC);
1381 if (!success) {
1382 THROW_MSG_0(vmSymbols::java_lang_IllegalStateException(),
1383 "WB_IncMetaspaceCapacityUntilGC: could not increase capacity until GC "
1384 "due to contention with another thread");
1385 }
1386 return (jlong) new_cap_until_GC;
1387 WB_END
1388
1389 WB_ENTRY(jlong, WB_MetaspaceCapacityUntilGC(JNIEnv* env, jobject wb))
1390 return (jlong) MetaspaceGC::capacity_until_GC();
1391 WB_END
1392
1393 WB_ENTRY(jboolean, WB_MetaspaceShouldConcurrentCollect(JNIEnv* env, jobject wb))
1394 return MetaspaceGC::should_concurrent_collect();
1395 WB_END
1396
1397
1398 WB_ENTRY(void, WB_AssertMatchingSafepointCalls(JNIEnv* env, jobject o, jboolean mutexSafepointValue, jboolean attemptedNoSafepointValue))
1399 Monitor::SafepointCheckRequired sfpt_check_required = mutexSafepointValue ?
1400 Monitor::_safepoint_check_always :
1401 Monitor::_safepoint_check_never;
1402 MutexLockerEx ml(new Mutex(Mutex::leaf, "SFPT_Test_lock", true, sfpt_check_required),
1403 attemptedNoSafepointValue == JNI_TRUE);
1404 WB_END
1405
1406 WB_ENTRY(jboolean, WB_IsMonitorInflated(JNIEnv* env, jobject wb, jobject obj))
1407 oop obj_oop = JNIHandles::resolve(obj);
1408 return (jboolean) obj_oop->mark()->has_monitor();
1409 WB_END
1410
1411 WB_ENTRY(void, WB_ForceSafepoint(JNIEnv* env, jobject wb))
1412 VM_ForceSafepoint force_safepoint_op;
1413 VMThread::execute(&force_safepoint_op);
1414 WB_END
1415
1416 WB_ENTRY(jlong, WB_GetConstantPool(JNIEnv* env, jobject wb, jclass klass))
1757 {CC"getUintxVMFlag", CC"(Ljava/lang/String;)Ljava/lang/Long;",
1758 (void*)&WB_GetUintxVMFlag},
1759 {CC"getUint64VMFlag", CC"(Ljava/lang/String;)Ljava/lang/Long;",
1760 (void*)&WB_GetUint64VMFlag},
1761 {CC"getSizeTVMFlag", CC"(Ljava/lang/String;)Ljava/lang/Long;",
1762 (void*)&WB_GetSizeTVMFlag},
1763 {CC"getDoubleVMFlag", CC"(Ljava/lang/String;)Ljava/lang/Double;",
1764 (void*)&WB_GetDoubleVMFlag},
1765 {CC"getStringVMFlag", CC"(Ljava/lang/String;)Ljava/lang/String;",
1766 (void*)&WB_GetStringVMFlag},
1767 {CC"isInStringTable", CC"(Ljava/lang/String;)Z", (void*)&WB_IsInStringTable },
1768 {CC"fullGC", CC"()V", (void*)&WB_FullGC },
1769 {CC"youngGC", CC"()V", (void*)&WB_YoungGC },
1770 {CC"readReservedMemory", CC"()V", (void*)&WB_ReadReservedMemory },
1771 {CC"allocateMetaspace",
1772 CC"(Ljava/lang/ClassLoader;J)J", (void*)&WB_AllocateMetaspace },
1773 {CC"freeMetaspace",
1774 CC"(Ljava/lang/ClassLoader;JJ)V", (void*)&WB_FreeMetaspace },
1775 {CC"incMetaspaceCapacityUntilGC", CC"(J)J", (void*)&WB_IncMetaspaceCapacityUntilGC },
1776 {CC"metaspaceCapacityUntilGC", CC"()J", (void*)&WB_MetaspaceCapacityUntilGC },
1777 {CC"metaspaceShouldConcurrentCollect", CC"()Z", (void*)&WB_MetaspaceShouldConcurrentCollect },
1778 {CC"getCPUFeatures", CC"()Ljava/lang/String;", (void*)&WB_GetCPUFeatures },
1779 {CC"getNMethod0", CC"(Ljava/lang/reflect/Executable;Z)[Ljava/lang/Object;",
1780 (void*)&WB_GetNMethod },
1781 {CC"forceNMethodSweep", CC"()V", (void*)&WB_ForceNMethodSweep },
1782 {CC"allocateCodeBlob", CC"(II)J", (void*)&WB_AllocateCodeBlob },
1783 {CC"freeCodeBlob", CC"(J)V", (void*)&WB_FreeCodeBlob },
1784 {CC"getCodeHeapEntries", CC"(I)[Ljava/lang/Object;",(void*)&WB_GetCodeHeapEntries },
1785 {CC"getCompilationActivityMode",
1786 CC"()I", (void*)&WB_GetCompilationActivityMode},
1787 {CC"getMethodData0", CC"(Ljava/lang/reflect/Executable;)J",
1788 (void*)&WB_GetMethodData },
1789 {CC"getCodeBlob", CC"(J)[Ljava/lang/Object;",(void*)&WB_GetCodeBlob },
1790 {CC"getThreadStackSize", CC"()J", (void*)&WB_GetThreadStackSize },
1791 {CC"getThreadRemainingStackSize", CC"()J", (void*)&WB_GetThreadRemainingStackSize },
1792 {CC"DefineModule", CC"(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V",
1793 (void*)&WB_DefineModule },
1794 {CC"AddModuleExports", CC"(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V",
1795 (void*)&WB_AddModuleExports },
1796 {CC"AddReadsModule", CC"(Ljava/lang/Object;Ljava/lang/Object;)V",
1797 (void*)&WB_AddReadsModule },
|