1699 ClassLoaderData* cld = class_loader_oop != NULL
1700 ? java_lang_ClassLoader::loader_data_acquire(class_loader_oop)
1701 : ClassLoaderData::the_null_class_loader_data();
1702
1703 void* metadata = MetadataFactory::new_array<u1>(cld, WhiteBox::array_bytes_to_length((size_t)size), thread);
1704
1705 return (jlong)(uintptr_t)metadata;
1706 WB_END
1707
1708 WB_ENTRY(void, WB_FreeMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong addr, jlong size))
1709 oop class_loader_oop = JNIHandles::resolve(class_loader);
1710 ClassLoaderData* cld = class_loader_oop != NULL
1711 ? java_lang_ClassLoader::loader_data_acquire(class_loader_oop)
1712 : ClassLoaderData::the_null_class_loader_data();
1713
1714 MetadataFactory::free_array(cld, (Array<u1>*)(uintptr_t)addr);
1715 WB_END
1716
1717 WB_ENTRY(void, WB_DefineModule(JNIEnv* env, jobject o, jobject module, jboolean is_open,
1718 jstring version, jstring location, jobjectArray packages))
1719 ResourceMark rm(THREAD);
1720
1721 objArrayOop packages_oop = objArrayOop(JNIHandles::resolve(packages));
1722 objArrayHandle packages_h(THREAD, packages_oop);
1723 int num_packages = (packages_h == NULL ? 0 : packages_h->length());
1724
1725 char** pkgs = NULL;
1726 if (num_packages > 0) {
1727 pkgs = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char*, num_packages);
1728 for (int x = 0; x < num_packages; x++) {
1729 oop pkg_str = packages_h->obj_at(x);
1730 if (pkg_str == NULL || !pkg_str->is_a(SystemDictionary::String_klass())) {
1731 THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
1732 err_msg("Bad package name"));
1733 }
1734 pkgs[x] = java_lang_String::as_utf8_string(pkg_str);
1735 }
1736 }
1737 Modules::define_module(module, is_open, version, location, (const char* const*)pkgs, num_packages, CHECK);
1738 WB_END
1739
1740 WB_ENTRY(void, WB_AddModuleExports(JNIEnv* env, jobject o, jobject from_module, jstring package, jobject to_module))
1741 ResourceMark rm(THREAD);
1742 char* package_name = NULL;
1743 if (package != NULL) {
1744 package_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(package));
1745 }
1746 Modules::add_module_exports_qualified(from_module, package_name, to_module, CHECK);
1747 WB_END
1748
1749 WB_ENTRY(void, WB_AddModuleExportsToAllUnnamed(JNIEnv* env, jobject o, jclass module, jstring package))
1750 ResourceMark rm(THREAD);
1751 char* package_name = NULL;
1752 if (package != NULL) {
1753 package_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(package));
1754 }
1755 Modules::add_module_exports_to_all_unnamed(module, package_name, CHECK);
1756 WB_END
1757
1758 WB_ENTRY(void, WB_AddModuleExportsToAll(JNIEnv* env, jobject o, jclass module, jstring package))
1759 ResourceMark rm(THREAD);
1760 char* package_name = NULL;
1761 if (package != NULL) {
1762 package_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(package));
1763 }
1764 Modules::add_module_exports(module, package_name, NULL, CHECK);
1765 WB_END
1766
1767 WB_ENTRY(void, WB_AddReadsModule(JNIEnv* env, jobject o, jobject from_module, jobject source_module))
1768 Modules::add_reads_module(from_module, source_module, CHECK);
1769 WB_END
1770
1771 WB_ENTRY(jlong, WB_IncMetaspaceCapacityUntilGC(JNIEnv* env, jobject wb, jlong inc))
1772 if (inc < 0) {
1773 THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
1774 err_msg("WB_IncMetaspaceCapacityUntilGC: inc is negative: " JLONG_FORMAT, inc));
1775 }
1776
1777 jlong max_size_t = (jlong) ((size_t) -1);
1778 if (inc > max_size_t) {
1779 THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
1780 err_msg("WB_IncMetaspaceCapacityUntilGC: inc does not fit in size_t: " JLONG_FORMAT, inc));
1781 }
1782
1783 size_t new_cap_until_GC = 0;
1784 size_t aligned_inc = align_down((size_t) inc, Metaspace::commit_alignment());
|
1699 ClassLoaderData* cld = class_loader_oop != NULL
1700 ? java_lang_ClassLoader::loader_data_acquire(class_loader_oop)
1701 : ClassLoaderData::the_null_class_loader_data();
1702
1703 void* metadata = MetadataFactory::new_array<u1>(cld, WhiteBox::array_bytes_to_length((size_t)size), thread);
1704
1705 return (jlong)(uintptr_t)metadata;
1706 WB_END
1707
1708 WB_ENTRY(void, WB_FreeMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong addr, jlong size))
1709 oop class_loader_oop = JNIHandles::resolve(class_loader);
1710 ClassLoaderData* cld = class_loader_oop != NULL
1711 ? java_lang_ClassLoader::loader_data_acquire(class_loader_oop)
1712 : ClassLoaderData::the_null_class_loader_data();
1713
1714 MetadataFactory::free_array(cld, (Array<u1>*)(uintptr_t)addr);
1715 WB_END
1716
1717 WB_ENTRY(void, WB_DefineModule(JNIEnv* env, jobject o, jobject module, jboolean is_open,
1718 jstring version, jstring location, jobjectArray packages))
1719 Modules::define_module(module, is_open, version, location, packages, CHECK);
1720 WB_END
1721
1722 WB_ENTRY(void, WB_AddModuleExports(JNIEnv* env, jobject o, jobject from_module, jstring package, jobject to_module))
1723 Modules::add_module_exports_qualified(from_module, package, to_module, CHECK);
1724 WB_END
1725
1726 WB_ENTRY(void, WB_AddModuleExportsToAllUnnamed(JNIEnv* env, jobject o, jclass module, jstring package))
1727 Modules::add_module_exports_to_all_unnamed(module, package, CHECK);
1728 WB_END
1729
1730 WB_ENTRY(void, WB_AddModuleExportsToAll(JNIEnv* env, jobject o, jclass module, jstring package))
1731 Modules::add_module_exports(module, package, NULL, CHECK);
1732 WB_END
1733
1734 WB_ENTRY(void, WB_AddReadsModule(JNIEnv* env, jobject o, jobject from_module, jobject source_module))
1735 Modules::add_reads_module(from_module, source_module, CHECK);
1736 WB_END
1737
1738 WB_ENTRY(jlong, WB_IncMetaspaceCapacityUntilGC(JNIEnv* env, jobject wb, jlong inc))
1739 if (inc < 0) {
1740 THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
1741 err_msg("WB_IncMetaspaceCapacityUntilGC: inc is negative: " JLONG_FORMAT, inc));
1742 }
1743
1744 jlong max_size_t = (jlong) ((size_t) -1);
1745 if (inc > max_size_t) {
1746 THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
1747 err_msg("WB_IncMetaspaceCapacityUntilGC: inc does not fit in size_t: " JLONG_FORMAT, inc));
1748 }
1749
1750 size_t new_cap_until_GC = 0;
1751 size_t aligned_inc = align_down((size_t) inc, Metaspace::commit_alignment());
|