< prev index next >

src/share/vm/prims/whitebox.cpp

Print this page


1436   JavaThread* t = JavaThread::current();
1437   return (jlong) t->stack_available(os::current_stack_pointer()) - (jlong)JavaThread::stack_shadow_zone_size();
1438 WB_END
1439 
1440 
1441 int WhiteBox::array_bytes_to_length(size_t bytes) {
1442   return Array<u1>::bytes_to_length(bytes);
1443 }
1444 
1445 WB_ENTRY(jlong, WB_AllocateMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong size))
1446   if (size < 0) {
1447     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
1448         err_msg("WB_AllocateMetaspace: size is negative: " JLONG_FORMAT, size));
1449   }
1450 
1451   oop class_loader_oop = JNIHandles::resolve(class_loader);
1452   ClassLoaderData* cld = class_loader_oop != NULL
1453       ? java_lang_ClassLoader::loader_data(class_loader_oop)
1454       : ClassLoaderData::the_null_class_loader_data();
1455 
1456   void* metadata = MetadataFactory::new_writeable_array<u1>(cld, WhiteBox::array_bytes_to_length((size_t)size), thread);
1457 
1458   return (jlong)(uintptr_t)metadata;
1459 WB_END
1460 
1461 WB_ENTRY(void, WB_FreeMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong addr, jlong size))
1462   oop class_loader_oop = JNIHandles::resolve(class_loader);
1463   ClassLoaderData* cld = class_loader_oop != NULL
1464       ? java_lang_ClassLoader::loader_data(class_loader_oop)
1465       : ClassLoaderData::the_null_class_loader_data();
1466 
1467   MetadataFactory::free_array(cld, (Array<u1>*)(uintptr_t)addr);
1468 WB_END
1469 
1470 WB_ENTRY(void, WB_DefineModule(JNIEnv* env, jobject o, jobject module, jboolean is_open,
1471                                 jstring version, jstring location, jobjectArray packages))
1472   ResourceMark rm(THREAD);
1473 
1474   objArrayOop packages_oop = objArrayOop(JNIHandles::resolve(packages));
1475   objArrayHandle packages_h(THREAD, packages_oop);
1476   int num_packages = (packages_h == NULL ? 0 : packages_h->length());


1544 
1545   size_t new_cap_until_GC = 0;
1546   size_t aligned_inc = align_size_down((size_t) inc, Metaspace::commit_alignment());
1547   bool success = MetaspaceGC::inc_capacity_until_GC(aligned_inc, &new_cap_until_GC);
1548   if (!success) {
1549     THROW_MSG_0(vmSymbols::java_lang_IllegalStateException(),
1550                 "WB_IncMetaspaceCapacityUntilGC: could not increase capacity until GC "
1551                 "due to contention with another thread");
1552   }
1553   return (jlong) new_cap_until_GC;
1554 WB_END
1555 
1556 WB_ENTRY(jlong, WB_MetaspaceCapacityUntilGC(JNIEnv* env, jobject wb))
1557   return (jlong) MetaspaceGC::capacity_until_GC();
1558 WB_END
1559 
1560 WB_ENTRY(jboolean, WB_MetaspaceShouldConcurrentCollect(JNIEnv* env, jobject wb))
1561   return MetaspaceGC::should_concurrent_collect();
1562 WB_END
1563 



1564 
1565 WB_ENTRY(void, WB_AssertMatchingSafepointCalls(JNIEnv* env, jobject o, jboolean mutexSafepointValue, jboolean attemptedNoSafepointValue))
1566   Monitor::SafepointCheckRequired sfpt_check_required = mutexSafepointValue ?
1567                                            Monitor::_safepoint_check_always :
1568                                            Monitor::_safepoint_check_never;
1569   MutexLockerEx ml(new Mutex(Mutex::leaf, "SFPT_Test_lock", true, sfpt_check_required),
1570                    attemptedNoSafepointValue == JNI_TRUE);
1571 WB_END
1572 
1573 WB_ENTRY(jboolean, WB_IsMonitorInflated(JNIEnv* env, jobject wb, jobject obj))
1574   oop obj_oop = JNIHandles::resolve(obj);
1575   return (jboolean) obj_oop->mark()->has_monitor();
1576 WB_END
1577 
1578 WB_ENTRY(void, WB_ForceSafepoint(JNIEnv* env, jobject wb))
1579   VM_ForceSafepoint force_safepoint_op;
1580   VMThread::execute(&force_safepoint_op);
1581 WB_END
1582 
1583 WB_ENTRY(jlong, WB_GetConstantPool(JNIEnv* env, jobject wb, jclass klass))


1928                                                       (void*)&WB_GetUintxVMFlag},
1929   {CC"getUint64VMFlag",    CC"(Ljava/lang/String;)Ljava/lang/Long;",
1930                                                       (void*)&WB_GetUint64VMFlag},
1931   {CC"getSizeTVMFlag",     CC"(Ljava/lang/String;)Ljava/lang/Long;",
1932                                                       (void*)&WB_GetSizeTVMFlag},
1933   {CC"getDoubleVMFlag",    CC"(Ljava/lang/String;)Ljava/lang/Double;",
1934                                                       (void*)&WB_GetDoubleVMFlag},
1935   {CC"getStringVMFlag",    CC"(Ljava/lang/String;)Ljava/lang/String;",
1936                                                       (void*)&WB_GetStringVMFlag},
1937   {CC"isInStringTable",    CC"(Ljava/lang/String;)Z", (void*)&WB_IsInStringTable  },
1938   {CC"fullGC",   CC"()V",                             (void*)&WB_FullGC },
1939   {CC"youngGC",  CC"()V",                             (void*)&WB_YoungGC },
1940   {CC"readReservedMemory", CC"()V",                   (void*)&WB_ReadReservedMemory },
1941   {CC"allocateMetaspace",
1942      CC"(Ljava/lang/ClassLoader;J)J",                 (void*)&WB_AllocateMetaspace },
1943   {CC"freeMetaspace",
1944      CC"(Ljava/lang/ClassLoader;JJ)V",                (void*)&WB_FreeMetaspace },
1945   {CC"incMetaspaceCapacityUntilGC", CC"(J)J",         (void*)&WB_IncMetaspaceCapacityUntilGC },
1946   {CC"metaspaceCapacityUntilGC", CC"()J",             (void*)&WB_MetaspaceCapacityUntilGC },
1947   {CC"metaspaceShouldConcurrentCollect", CC"()Z",     (void*)&WB_MetaspaceShouldConcurrentCollect },

1948   {CC"getCPUFeatures",     CC"()Ljava/lang/String;",  (void*)&WB_GetCPUFeatures     },
1949   {CC"getNMethod0",         CC"(Ljava/lang/reflect/Executable;Z)[Ljava/lang/Object;",
1950                                                       (void*)&WB_GetNMethod         },
1951   {CC"forceNMethodSweep",  CC"()V",                   (void*)&WB_ForceNMethodSweep  },
1952   {CC"allocateCodeBlob",   CC"(II)J",                 (void*)&WB_AllocateCodeBlob   },
1953   {CC"freeCodeBlob",       CC"(J)V",                  (void*)&WB_FreeCodeBlob       },
1954   {CC"getCodeHeapEntries", CC"(I)[Ljava/lang/Object;",(void*)&WB_GetCodeHeapEntries },
1955   {CC"getCompilationActivityMode",
1956                            CC"()I",                   (void*)&WB_GetCompilationActivityMode},
1957   {CC"getMethodData0",     CC"(Ljava/lang/reflect/Executable;)J",
1958                                                       (void*)&WB_GetMethodData      },
1959   {CC"getCodeBlob",        CC"(J)[Ljava/lang/Object;",(void*)&WB_GetCodeBlob        },
1960   {CC"getThreadStackSize", CC"()J",                   (void*)&WB_GetThreadStackSize },
1961   {CC"getThreadRemainingStackSize", CC"()J",          (void*)&WB_GetThreadRemainingStackSize },
1962   {CC"DefineModule",       CC"(Ljava/lang/Object;ZLjava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V",
1963                                                       (void*)&WB_DefineModule },
1964   {CC"AddModuleExports",   CC"(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V",
1965                                                       (void*)&WB_AddModuleExports },
1966   {CC"AddReadsModule",     CC"(Ljava/lang/Object;Ljava/lang/Object;)V",
1967                                                       (void*)&WB_AddReadsModule },




1436   JavaThread* t = JavaThread::current();
1437   return (jlong) t->stack_available(os::current_stack_pointer()) - (jlong)JavaThread::stack_shadow_zone_size();
1438 WB_END
1439 
1440 
1441 int WhiteBox::array_bytes_to_length(size_t bytes) {
1442   return Array<u1>::bytes_to_length(bytes);
1443 }
1444 
1445 WB_ENTRY(jlong, WB_AllocateMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong size))
1446   if (size < 0) {
1447     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
1448         err_msg("WB_AllocateMetaspace: size is negative: " JLONG_FORMAT, size));
1449   }
1450 
1451   oop class_loader_oop = JNIHandles::resolve(class_loader);
1452   ClassLoaderData* cld = class_loader_oop != NULL
1453       ? java_lang_ClassLoader::loader_data(class_loader_oop)
1454       : ClassLoaderData::the_null_class_loader_data();
1455 
1456   void* metadata = MetadataFactory::new_array<u1>(cld, WhiteBox::array_bytes_to_length((size_t)size), thread);
1457 
1458   return (jlong)(uintptr_t)metadata;
1459 WB_END
1460 
1461 WB_ENTRY(void, WB_FreeMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong addr, jlong size))
1462   oop class_loader_oop = JNIHandles::resolve(class_loader);
1463   ClassLoaderData* cld = class_loader_oop != NULL
1464       ? java_lang_ClassLoader::loader_data(class_loader_oop)
1465       : ClassLoaderData::the_null_class_loader_data();
1466 
1467   MetadataFactory::free_array(cld, (Array<u1>*)(uintptr_t)addr);
1468 WB_END
1469 
1470 WB_ENTRY(void, WB_DefineModule(JNIEnv* env, jobject o, jobject module, jboolean is_open,
1471                                 jstring version, jstring location, jobjectArray packages))
1472   ResourceMark rm(THREAD);
1473 
1474   objArrayOop packages_oop = objArrayOop(JNIHandles::resolve(packages));
1475   objArrayHandle packages_h(THREAD, packages_oop);
1476   int num_packages = (packages_h == NULL ? 0 : packages_h->length());


1544 
1545   size_t new_cap_until_GC = 0;
1546   size_t aligned_inc = align_size_down((size_t) inc, Metaspace::commit_alignment());
1547   bool success = MetaspaceGC::inc_capacity_until_GC(aligned_inc, &new_cap_until_GC);
1548   if (!success) {
1549     THROW_MSG_0(vmSymbols::java_lang_IllegalStateException(),
1550                 "WB_IncMetaspaceCapacityUntilGC: could not increase capacity until GC "
1551                 "due to contention with another thread");
1552   }
1553   return (jlong) new_cap_until_GC;
1554 WB_END
1555 
1556 WB_ENTRY(jlong, WB_MetaspaceCapacityUntilGC(JNIEnv* env, jobject wb))
1557   return (jlong) MetaspaceGC::capacity_until_GC();
1558 WB_END
1559 
1560 WB_ENTRY(jboolean, WB_MetaspaceShouldConcurrentCollect(JNIEnv* env, jobject wb))
1561   return MetaspaceGC::should_concurrent_collect();
1562 WB_END
1563 
1564 WB_ENTRY(jlong, WB_MetaspaceReserveAlignment(JNIEnv* env, jobject wb))
1565   return (jlong)Metaspace::reserve_alignment();
1566 WB_END
1567 
1568 WB_ENTRY(void, WB_AssertMatchingSafepointCalls(JNIEnv* env, jobject o, jboolean mutexSafepointValue, jboolean attemptedNoSafepointValue))
1569   Monitor::SafepointCheckRequired sfpt_check_required = mutexSafepointValue ?
1570                                            Monitor::_safepoint_check_always :
1571                                            Monitor::_safepoint_check_never;
1572   MutexLockerEx ml(new Mutex(Mutex::leaf, "SFPT_Test_lock", true, sfpt_check_required),
1573                    attemptedNoSafepointValue == JNI_TRUE);
1574 WB_END
1575 
1576 WB_ENTRY(jboolean, WB_IsMonitorInflated(JNIEnv* env, jobject wb, jobject obj))
1577   oop obj_oop = JNIHandles::resolve(obj);
1578   return (jboolean) obj_oop->mark()->has_monitor();
1579 WB_END
1580 
1581 WB_ENTRY(void, WB_ForceSafepoint(JNIEnv* env, jobject wb))
1582   VM_ForceSafepoint force_safepoint_op;
1583   VMThread::execute(&force_safepoint_op);
1584 WB_END
1585 
1586 WB_ENTRY(jlong, WB_GetConstantPool(JNIEnv* env, jobject wb, jclass klass))


1931                                                       (void*)&WB_GetUintxVMFlag},
1932   {CC"getUint64VMFlag",    CC"(Ljava/lang/String;)Ljava/lang/Long;",
1933                                                       (void*)&WB_GetUint64VMFlag},
1934   {CC"getSizeTVMFlag",     CC"(Ljava/lang/String;)Ljava/lang/Long;",
1935                                                       (void*)&WB_GetSizeTVMFlag},
1936   {CC"getDoubleVMFlag",    CC"(Ljava/lang/String;)Ljava/lang/Double;",
1937                                                       (void*)&WB_GetDoubleVMFlag},
1938   {CC"getStringVMFlag",    CC"(Ljava/lang/String;)Ljava/lang/String;",
1939                                                       (void*)&WB_GetStringVMFlag},
1940   {CC"isInStringTable",    CC"(Ljava/lang/String;)Z", (void*)&WB_IsInStringTable  },
1941   {CC"fullGC",   CC"()V",                             (void*)&WB_FullGC },
1942   {CC"youngGC",  CC"()V",                             (void*)&WB_YoungGC },
1943   {CC"readReservedMemory", CC"()V",                   (void*)&WB_ReadReservedMemory },
1944   {CC"allocateMetaspace",
1945      CC"(Ljava/lang/ClassLoader;J)J",                 (void*)&WB_AllocateMetaspace },
1946   {CC"freeMetaspace",
1947      CC"(Ljava/lang/ClassLoader;JJ)V",                (void*)&WB_FreeMetaspace },
1948   {CC"incMetaspaceCapacityUntilGC", CC"(J)J",         (void*)&WB_IncMetaspaceCapacityUntilGC },
1949   {CC"metaspaceCapacityUntilGC", CC"()J",             (void*)&WB_MetaspaceCapacityUntilGC },
1950   {CC"metaspaceShouldConcurrentCollect", CC"()Z",     (void*)&WB_MetaspaceShouldConcurrentCollect },
1951   {CC"metaspaceReserveAlignment", CC"()J",            (void*)&WB_MetaspaceReserveAlignment },
1952   {CC"getCPUFeatures",     CC"()Ljava/lang/String;",  (void*)&WB_GetCPUFeatures     },
1953   {CC"getNMethod0",         CC"(Ljava/lang/reflect/Executable;Z)[Ljava/lang/Object;",
1954                                                       (void*)&WB_GetNMethod         },
1955   {CC"forceNMethodSweep",  CC"()V",                   (void*)&WB_ForceNMethodSweep  },
1956   {CC"allocateCodeBlob",   CC"(II)J",                 (void*)&WB_AllocateCodeBlob   },
1957   {CC"freeCodeBlob",       CC"(J)V",                  (void*)&WB_FreeCodeBlob       },
1958   {CC"getCodeHeapEntries", CC"(I)[Ljava/lang/Object;",(void*)&WB_GetCodeHeapEntries },
1959   {CC"getCompilationActivityMode",
1960                            CC"()I",                   (void*)&WB_GetCompilationActivityMode},
1961   {CC"getMethodData0",     CC"(Ljava/lang/reflect/Executable;)J",
1962                                                       (void*)&WB_GetMethodData      },
1963   {CC"getCodeBlob",        CC"(J)[Ljava/lang/Object;",(void*)&WB_GetCodeBlob        },
1964   {CC"getThreadStackSize", CC"()J",                   (void*)&WB_GetThreadStackSize },
1965   {CC"getThreadRemainingStackSize", CC"()J",          (void*)&WB_GetThreadRemainingStackSize },
1966   {CC"DefineModule",       CC"(Ljava/lang/Object;ZLjava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V",
1967                                                       (void*)&WB_DefineModule },
1968   {CC"AddModuleExports",   CC"(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V",
1969                                                       (void*)&WB_AddModuleExports },
1970   {CC"AddReadsModule",     CC"(Ljava/lang/Object;Ljava/lang/Object;)V",
1971                                                       (void*)&WB_AddReadsModule },


< prev index next >