816 ClassLoaderData* cld = class_loader_oop != NULL |
816 ClassLoaderData* cld = class_loader_oop != NULL |
817 ? java_lang_ClassLoader::loader_data(class_loader_oop) |
817 ? java_lang_ClassLoader::loader_data(class_loader_oop) |
818 : ClassLoaderData::the_null_class_loader_data(); |
818 : ClassLoaderData::the_null_class_loader_data(); |
819 |
819 |
820 MetadataFactory::free_array(cld, (Array<u1>*)(uintptr_t)addr); |
820 MetadataFactory::free_array(cld, (Array<u1>*)(uintptr_t)addr); |
|
821 WB_END |
|
822 |
|
823 WB_ENTRY(jlong, WB_IncMetaspaceCapacityUntilGC(JNIEnv* env, jobject wb, jlong inc)) |
|
824 if (inc < 0) { |
|
825 THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), |
|
826 err_msg("WB_IncMetaspaceCapacityUntilGC: inc is negative: " JLONG_FORMAT, inc)); |
|
827 } |
|
828 |
|
829 jlong max_size_t = (jlong) ((size_t) -1); |
|
830 if (inc > max_size_t) { |
|
831 THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), |
|
832 err_msg("WB_IncMetaspaceCapacityUntilGC: inc does not fit in size_t: " JLONG_FORMAT, inc)); |
|
833 } |
|
834 |
|
835 size_t new_cap_until_GC = 0; |
|
836 size_t aligned_inc = align_size_down((size_t) inc, Metaspace::commit_alignment()); |
|
837 bool success = MetaspaceGC::inc_capacity_until_GC(aligned_inc, &new_cap_until_GC); |
|
838 if (!success) { |
|
839 THROW_MSG_0(vmSymbols::java_lang_IllegalStateException(), |
|
840 "WB_IncMetaspaceCapacityUntilGC: could not increase capacity until GC " |
|
841 "due to contention with another thread"); |
|
842 } |
|
843 return (jlong) new_cap_until_GC; |
|
844 WB_END |
|
845 |
|
846 WB_ENTRY(jlong, WB_MetaspaceCapacityUntilGC(JNIEnv* env, jobject wb)) |
|
847 return (jlong) MetaspaceGC::capacity_until_GC(); |
821 WB_END |
848 WB_END |
822 |
849 |
823 //Some convenience methods to deal with objects from java |
850 //Some convenience methods to deal with objects from java |
824 int WhiteBox::offset_for_field(const char* field_name, oop object, |
851 int WhiteBox::offset_for_field(const char* field_name, oop object, |
825 Symbol* signature_symbol) { |
852 Symbol* signature_symbol) { |
989 {CC"readReservedMemory", CC"()V", (void*)&WB_ReadReservedMemory }, |
1016 {CC"readReservedMemory", CC"()V", (void*)&WB_ReadReservedMemory }, |
990 {CC"allocateMetaspace", |
1017 {CC"allocateMetaspace", |
991 CC"(Ljava/lang/ClassLoader;J)J", (void*)&WB_AllocateMetaspace }, |
1018 CC"(Ljava/lang/ClassLoader;J)J", (void*)&WB_AllocateMetaspace }, |
992 {CC"freeMetaspace", |
1019 {CC"freeMetaspace", |
993 CC"(Ljava/lang/ClassLoader;JJ)V", (void*)&WB_FreeMetaspace }, |
1020 CC"(Ljava/lang/ClassLoader;JJ)V", (void*)&WB_FreeMetaspace }, |
|
1021 {CC"incMetaspaceCapacityUntilGC", CC"(J)J", (void*)&WB_IncMetaspaceCapacityUntilGC }, |
|
1022 {CC"metaspaceCapacityUntilGC", CC"()J", (void*)&WB_MetaspaceCapacityUntilGC }, |
994 {CC"getCPUFeatures", CC"()Ljava/lang/String;", (void*)&WB_GetCPUFeatures }, |
1023 {CC"getCPUFeatures", CC"()Ljava/lang/String;", (void*)&WB_GetCPUFeatures }, |
995 {CC"getNMethod", CC"(Ljava/lang/reflect/Executable;Z)[Ljava/lang/Object;", |
1024 {CC"getNMethod", CC"(Ljava/lang/reflect/Executable;Z)[Ljava/lang/Object;", |
996 (void*)&WB_GetNMethod }, |
1025 (void*)&WB_GetNMethod }, |
997 {CC"getThreadStackSize", CC"()J", (void*)&WB_GetThreadStackSize }, |
1026 {CC"getThreadStackSize", CC"()J", (void*)&WB_GetThreadStackSize }, |
998 {CC"getThreadRemainingStackSize", CC"()J", (void*)&WB_GetThreadRemainingStackSize }, |
1027 {CC"getThreadRemainingStackSize", CC"()J", (void*)&WB_GetThreadRemainingStackSize }, |