< prev index next >
src/hotspot/share/prims/whitebox.cpp
Print this page
rev 60538 : imported patch jep387-all.patch
*** 44,53 ****
--- 44,54 ----
#include "logging/log.hpp"
#include "memory/filemap.hpp"
#include "memory/heapShared.inline.hpp"
#include "memory/metaspaceShared.hpp"
#include "memory/metadataFactory.hpp"
+ #include "memory/metaspace/metaspace_test.hpp"
#include "memory/iterator.hpp"
#include "memory/resourceArea.hpp"
#include "memory/universe.hpp"
#include "memory/oopFactory.hpp"
#include "oops/array.hpp"
*** 82,91 ****
--- 83,93 ----
#include "utilities/align.hpp"
#include "utilities/debug.hpp"
#include "utilities/elfFile.hpp"
#include "utilities/exceptions.hpp"
#include "utilities/macros.hpp"
+ #include "utilities/ostream.hpp"
#if INCLUDE_CDS
#include "prims/cdsoffsets.hpp"
#endif // INCLUDE_CDS
#if INCLUDE_G1GC
#include "gc/g1/g1Arguments.hpp"
*** 1688,1697 ****
--- 1690,1758 ----
int WhiteBox::array_bytes_to_length(size_t bytes) {
return Array<u1>::bytes_to_length(bytes);
}
+ ///////////////
+ // MetaspaceTestContext and MetaspaceTestArena
+ WB_ENTRY(jlong, WB_CreateMetaspaceTestContext(JNIEnv* env, jobject wb, jlong commit_limit, jlong reserve_limit))
+ metaspace::MetaspaceTestContext* context =
+ new metaspace::MetaspaceTestContext("whitebox-metaspace-context", (size_t) commit_limit, (size_t) reserve_limit);
+ return (jlong)p2i(context);
+ WB_END
+
+ WB_ENTRY(void, WB_DestroyMetaspaceTestContext(JNIEnv* env, jobject wb, jlong context))
+ delete (metaspace::MetaspaceTestContext*) context;
+ WB_END
+
+ WB_ENTRY(void, WB_PurgeMetaspaceTestContext(JNIEnv* env, jobject wb, jlong context))
+ metaspace::MetaspaceTestContext* context0 = (metaspace::MetaspaceTestContext*) context;
+ context0->purge_area();
+ WB_END
+
+ WB_ENTRY(void, WB_PrintMetaspaceTestContext(JNIEnv* env, jobject wb, jlong context))
+ metaspace::MetaspaceTestContext* context0 = (metaspace::MetaspaceTestContext*) context;
+ context0->print_on(tty);
+ WB_END
+
+ WB_ENTRY(jlong, WB_GetTotalCommittedWordsInMetaspaceTestContext(JNIEnv* env, jobject wb, jlong context))
+ metaspace::MetaspaceTestContext* context0 = (metaspace::MetaspaceTestContext*) context;
+ return context0->committed_words();
+ WB_END
+
+ WB_ENTRY(jlong, WB_GetTotalUsedWordsInMetaspaceTestContext(JNIEnv* env, jobject wb, jlong context))
+ metaspace::MetaspaceTestContext* context0 = (metaspace::MetaspaceTestContext*) context;
+ return context0->used_words();
+ WB_END
+
+ WB_ENTRY(jlong, WB_CreateArenaInTestContext(JNIEnv* env, jobject wb, jlong context, jboolean is_micro))
+ const Metaspace::MetaspaceType type = is_micro ? Metaspace::ReflectionMetaspaceType : Metaspace::StandardMetaspaceType;
+ metaspace::MetaspaceTestContext* context0 = (metaspace::MetaspaceTestContext*) context;
+ return (jlong)p2i(context0->create_arena(type));
+ WB_END
+
+ WB_ENTRY(void, WB_DestroyMetaspaceTestArena(JNIEnv* env, jobject wb, jlong arena))
+ delete (metaspace::MetaspaceTestArena*) arena;
+ WB_END
+
+ WB_ENTRY(jlong, WB_AllocateFromMetaspaceTestArena(JNIEnv* env, jobject wb, jlong arena, jlong word_size))
+ metaspace::MetaspaceTestArena* arena0 = (metaspace::MetaspaceTestArena*) arena;
+ MetaWord* p = arena0->allocate((size_t) word_size);
+ return (jlong)p2i(p);
+ WB_END
+
+ WB_ENTRY(void, WB_DeallocateToMetaspaceTestArena(JNIEnv* env, jobject wb, jlong arena, jlong p, jlong word_size))
+ metaspace::MetaspaceTestArena* arena0 = (metaspace::MetaspaceTestArena*) arena;
+ arena0->deallocate((MetaWord*)p, (size_t) word_size);
+ WB_END
+
+ WB_ENTRY(jlong, WB_GetMaxMetaspaceAllocationSize(JNIEnv* env, jobject wb))
+ return (jlong) Metaspace::max_allocation_word_size() * BytesPerWord;
+ WB_END
+
+ //////////////
+
WB_ENTRY(jlong, WB_AllocateMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong size))
if (size < 0) {
THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
err_msg("WB_AllocateMetaspace: size is negative: " JLONG_FORMAT, size));
}
*** 1704,1722 ****
void* metadata = MetadataFactory::new_array<u1>(cld, WhiteBox::array_bytes_to_length((size_t)size), thread);
return (jlong)(uintptr_t)metadata;
WB_END
- WB_ENTRY(void, WB_FreeMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong addr, jlong size))
- oop class_loader_oop = JNIHandles::resolve(class_loader);
- ClassLoaderData* cld = class_loader_oop != NULL
- ? java_lang_ClassLoader::loader_data_acquire(class_loader_oop)
- : ClassLoaderData::the_null_class_loader_data();
-
- MetadataFactory::free_array(cld, (Array<u1>*)(uintptr_t)addr);
- WB_END
-
WB_ENTRY(void, WB_DefineModule(JNIEnv* env, jobject o, jobject module, jboolean is_open,
jstring version, jstring location, jobjectArray packages))
Modules::define_module(module, is_open, version, location, packages, CHECK);
WB_END
--- 1765,1774 ----
*** 2433,2444 ****
{CC"fullGC", CC"()V", (void*)&WB_FullGC },
{CC"youngGC", CC"()V", (void*)&WB_YoungGC },
{CC"readReservedMemory", CC"()V", (void*)&WB_ReadReservedMemory },
{CC"allocateMetaspace",
CC"(Ljava/lang/ClassLoader;J)J", (void*)&WB_AllocateMetaspace },
- {CC"freeMetaspace",
- CC"(Ljava/lang/ClassLoader;JJ)V", (void*)&WB_FreeMetaspace },
{CC"incMetaspaceCapacityUntilGC", CC"(J)J", (void*)&WB_IncMetaspaceCapacityUntilGC },
{CC"metaspaceCapacityUntilGC", CC"()J", (void*)&WB_MetaspaceCapacityUntilGC },
{CC"metaspaceReserveAlignment", CC"()J", (void*)&WB_MetaspaceReserveAlignment },
{CC"getCPUFeatures", CC"()Ljava/lang/String;", (void*)&WB_GetCPUFeatures },
{CC"getNMethod0", CC"(Ljava/lang/reflect/Executable;Z)[Ljava/lang/Object;",
--- 2485,2494 ----
*** 2531,2540 ****
--- 2581,2603 ----
{CC"disableElfSectionCache", CC"()V", (void*)&WB_DisableElfSectionCache },
{CC"resolvedMethodItemsCount", CC"()J", (void*)&WB_ResolvedMethodItemsCount },
{CC"protectionDomainRemovedCount", CC"()I", (void*)&WB_ProtectionDomainRemovedCount },
{CC"aotLibrariesCount", CC"()I", (void*)&WB_AotLibrariesCount },
{CC"getKlassMetadataSize", CC"(Ljava/lang/Class;)I",(void*)&WB_GetKlassMetadataSize},
+
+ {CC"createMetaspaceTestContext", CC"(JJ)J", (void*)&WB_CreateMetaspaceTestContext},
+ {CC"destroyMetaspaceTestContext", CC"(J)V", (void*)&WB_DestroyMetaspaceTestContext},
+ {CC"purgeMetaspaceTestContext", CC"(J)V", (void*)&WB_PurgeMetaspaceTestContext},
+ {CC"printMetaspaceTestContext", CC"(J)V", (void*)&WB_PrintMetaspaceTestContext},
+ {CC"getTotalCommittedWordsInMetaspaceTestContext", CC"(J)J",(void*)&WB_GetTotalCommittedWordsInMetaspaceTestContext},
+ {CC"getTotalUsedWordsInMetaspaceTestContext", CC"(J)J", (void*)&WB_GetTotalUsedWordsInMetaspaceTestContext},
+ {CC"createArenaInTestContext", CC"(JZ)J", (void*)&WB_CreateArenaInTestContext},
+ {CC"destroyMetaspaceTestArena", CC"(J)V", (void*)&WB_DestroyMetaspaceTestArena},
+ {CC"allocateFromMetaspaceTestArena", CC"(JJ)J", (void*)&WB_AllocateFromMetaspaceTestArena},
+ {CC"deallocateToMetaspaceTestArena", CC"(JJJ)V", (void*)&WB_DeallocateToMetaspaceTestArena},
+ {CC"maxMetaspaceAllocationSize", CC"()J", (void*)&WB_GetMaxMetaspaceAllocationSize},
+
};
#undef CC
< prev index next >