1 /*
2 * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
1386
1387 oop class_loader_oop = JNIHandles::resolve(class_loader);
1388 ClassLoaderData* cld = class_loader_oop != NULL
1389 ? java_lang_ClassLoader::loader_data(class_loader_oop)
1390 : ClassLoaderData::the_null_class_loader_data();
1391
1392 void* metadata = MetadataFactory::new_writeable_array<u1>(cld, WhiteBox::array_bytes_to_length((size_t)size), thread);
1393
1394 return (jlong)(uintptr_t)metadata;
1395 WB_END
1396
1397 WB_ENTRY(void, WB_FreeMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong addr, jlong size))
1398 oop class_loader_oop = JNIHandles::resolve(class_loader);
1399 ClassLoaderData* cld = class_loader_oop != NULL
1400 ? java_lang_ClassLoader::loader_data(class_loader_oop)
1401 : ClassLoaderData::the_null_class_loader_data();
1402
1403 MetadataFactory::free_array(cld, (Array<u1>*)(uintptr_t)addr);
1404 WB_END
1405
1406 WB_ENTRY(void, WB_DefineModule(JNIEnv* env, jobject o, jobject module, jstring version, jstring location,
1407 jobjectArray packages))
1408 ResourceMark rm(THREAD);
1409
1410 objArrayOop packages_oop = objArrayOop(JNIHandles::resolve(packages));
1411 objArrayHandle packages_h(THREAD, packages_oop);
1412 int num_packages = (packages_h == NULL ? 0 : packages_h->length());
1413
1414 char** pkgs = NULL;
1415 if (num_packages > 0) {
1416 pkgs = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char*, num_packages);
1417 for (int x = 0; x < num_packages; x++) {
1418 oop pkg_str = packages_h->obj_at(x);
1419 if (pkg_str == NULL || !pkg_str->is_a(SystemDictionary::String_klass())) {
1420 THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
1421 err_msg("Bad package name"));
1422 }
1423 pkgs[x] = java_lang_String::as_utf8_string(pkg_str);
1424 }
1425 }
1426 Modules::define_module(module, version, location, (const char* const*)pkgs, num_packages, CHECK);
1427 WB_END
1428
1429 WB_ENTRY(void, WB_AddModuleExports(JNIEnv* env, jobject o, jobject from_module, jstring package, jobject to_module))
1430 ResourceMark rm(THREAD);
1431 char* package_name = NULL;
1432 if (package != NULL) {
1433 package_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(package));
1434 }
1435 Modules::add_module_exports_qualified(from_module, package_name, to_module, CHECK);
1436 WB_END
1437
1438 WB_ENTRY(void, WB_AddModuleExportsToAllUnnamed(JNIEnv* env, jobject o, jclass module, jstring package))
1439 ResourceMark rm(THREAD);
1440 char* package_name = NULL;
1441 if (package != NULL) {
1442 package_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(package));
1443 }
1444 Modules::add_module_exports_to_all_unnamed(module, package_name, CHECK);
1445 WB_END
1446
1887 CC"(Ljava/lang/ClassLoader;J)J", (void*)&WB_AllocateMetaspace },
1888 {CC"freeMetaspace",
1889 CC"(Ljava/lang/ClassLoader;JJ)V", (void*)&WB_FreeMetaspace },
1890 {CC"incMetaspaceCapacityUntilGC", CC"(J)J", (void*)&WB_IncMetaspaceCapacityUntilGC },
1891 {CC"metaspaceCapacityUntilGC", CC"()J", (void*)&WB_MetaspaceCapacityUntilGC },
1892 {CC"metaspaceShouldConcurrentCollect", CC"()Z", (void*)&WB_MetaspaceShouldConcurrentCollect },
1893 {CC"getCPUFeatures", CC"()Ljava/lang/String;", (void*)&WB_GetCPUFeatures },
1894 {CC"getNMethod0", CC"(Ljava/lang/reflect/Executable;Z)[Ljava/lang/Object;",
1895 (void*)&WB_GetNMethod },
1896 {CC"forceNMethodSweep", CC"()V", (void*)&WB_ForceNMethodSweep },
1897 {CC"allocateCodeBlob", CC"(II)J", (void*)&WB_AllocateCodeBlob },
1898 {CC"freeCodeBlob", CC"(J)V", (void*)&WB_FreeCodeBlob },
1899 {CC"getCodeHeapEntries", CC"(I)[Ljava/lang/Object;",(void*)&WB_GetCodeHeapEntries },
1900 {CC"getCompilationActivityMode",
1901 CC"()I", (void*)&WB_GetCompilationActivityMode},
1902 {CC"getMethodData0", CC"(Ljava/lang/reflect/Executable;)J",
1903 (void*)&WB_GetMethodData },
1904 {CC"getCodeBlob", CC"(J)[Ljava/lang/Object;",(void*)&WB_GetCodeBlob },
1905 {CC"getThreadStackSize", CC"()J", (void*)&WB_GetThreadStackSize },
1906 {CC"getThreadRemainingStackSize", CC"()J", (void*)&WB_GetThreadRemainingStackSize },
1907 {CC"DefineModule", CC"(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V",
1908 (void*)&WB_DefineModule },
1909 {CC"AddModuleExports", CC"(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V",
1910 (void*)&WB_AddModuleExports },
1911 {CC"AddReadsModule", CC"(Ljava/lang/Object;Ljava/lang/Object;)V",
1912 (void*)&WB_AddReadsModule },
1913 {CC"AddModulePackage", CC"(Ljava/lang/Object;Ljava/lang/String;)V",
1914 (void*)&WB_AddModulePackage },
1915 {CC"GetModuleByPackageName", CC"(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;",
1916 (void*)&WB_GetModuleByPackageName },
1917 {CC"AddModuleExportsToAllUnnamed", CC"(Ljava/lang/Object;Ljava/lang/String;)V",
1918 (void*)&WB_AddModuleExportsToAllUnnamed },
1919 {CC"AddModuleExportsToAll", CC"(Ljava/lang/Object;Ljava/lang/String;)V",
1920 (void*)&WB_AddModuleExportsToAll },
1921 {CC"assertMatchingSafepointCalls", CC"(ZZ)V", (void*)&WB_AssertMatchingSafepointCalls },
1922 {CC"isMonitorInflated0", CC"(Ljava/lang/Object;)Z", (void*)&WB_IsMonitorInflated },
1923 {CC"forceSafepoint", CC"()V", (void*)&WB_ForceSafepoint },
1924 {CC"getConstantPool0", CC"(Ljava/lang/Class;)J", (void*)&WB_GetConstantPool },
1925 {CC"getConstantPoolCacheIndexTag0", CC"()I", (void*)&WB_GetConstantPoolCacheIndexTag},
1926 {CC"getConstantPoolCacheLength0", CC"(Ljava/lang/Class;)I", (void*)&WB_GetConstantPoolCacheLength},
1927 {CC"remapInstructionOperandFromCPCache0",
|
1 /*
2 * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
1386
1387 oop class_loader_oop = JNIHandles::resolve(class_loader);
1388 ClassLoaderData* cld = class_loader_oop != NULL
1389 ? java_lang_ClassLoader::loader_data(class_loader_oop)
1390 : ClassLoaderData::the_null_class_loader_data();
1391
1392 void* metadata = MetadataFactory::new_writeable_array<u1>(cld, WhiteBox::array_bytes_to_length((size_t)size), thread);
1393
1394 return (jlong)(uintptr_t)metadata;
1395 WB_END
1396
1397 WB_ENTRY(void, WB_FreeMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong addr, jlong size))
1398 oop class_loader_oop = JNIHandles::resolve(class_loader);
1399 ClassLoaderData* cld = class_loader_oop != NULL
1400 ? java_lang_ClassLoader::loader_data(class_loader_oop)
1401 : ClassLoaderData::the_null_class_loader_data();
1402
1403 MetadataFactory::free_array(cld, (Array<u1>*)(uintptr_t)addr);
1404 WB_END
1405
1406 WB_ENTRY(void, WB_DefineModule(JNIEnv* env, jobject o, jobject module, jboolean is_open,
1407 jstring version, jstring location, jobjectArray packages))
1408 ResourceMark rm(THREAD);
1409
1410 objArrayOop packages_oop = objArrayOop(JNIHandles::resolve(packages));
1411 objArrayHandle packages_h(THREAD, packages_oop);
1412 int num_packages = (packages_h == NULL ? 0 : packages_h->length());
1413
1414 char** pkgs = NULL;
1415 if (num_packages > 0) {
1416 pkgs = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char*, num_packages);
1417 for (int x = 0; x < num_packages; x++) {
1418 oop pkg_str = packages_h->obj_at(x);
1419 if (pkg_str == NULL || !pkg_str->is_a(SystemDictionary::String_klass())) {
1420 THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
1421 err_msg("Bad package name"));
1422 }
1423 pkgs[x] = java_lang_String::as_utf8_string(pkg_str);
1424 }
1425 }
1426 Modules::define_module(module, is_open, version, location, (const char* const*)pkgs, num_packages, CHECK);
1427 WB_END
1428
1429 WB_ENTRY(void, WB_AddModuleExports(JNIEnv* env, jobject o, jobject from_module, jstring package, jobject to_module))
1430 ResourceMark rm(THREAD);
1431 char* package_name = NULL;
1432 if (package != NULL) {
1433 package_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(package));
1434 }
1435 Modules::add_module_exports_qualified(from_module, package_name, to_module, CHECK);
1436 WB_END
1437
1438 WB_ENTRY(void, WB_AddModuleExportsToAllUnnamed(JNIEnv* env, jobject o, jclass module, jstring package))
1439 ResourceMark rm(THREAD);
1440 char* package_name = NULL;
1441 if (package != NULL) {
1442 package_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(package));
1443 }
1444 Modules::add_module_exports_to_all_unnamed(module, package_name, CHECK);
1445 WB_END
1446
1887 CC"(Ljava/lang/ClassLoader;J)J", (void*)&WB_AllocateMetaspace },
1888 {CC"freeMetaspace",
1889 CC"(Ljava/lang/ClassLoader;JJ)V", (void*)&WB_FreeMetaspace },
1890 {CC"incMetaspaceCapacityUntilGC", CC"(J)J", (void*)&WB_IncMetaspaceCapacityUntilGC },
1891 {CC"metaspaceCapacityUntilGC", CC"()J", (void*)&WB_MetaspaceCapacityUntilGC },
1892 {CC"metaspaceShouldConcurrentCollect", CC"()Z", (void*)&WB_MetaspaceShouldConcurrentCollect },
1893 {CC"getCPUFeatures", CC"()Ljava/lang/String;", (void*)&WB_GetCPUFeatures },
1894 {CC"getNMethod0", CC"(Ljava/lang/reflect/Executable;Z)[Ljava/lang/Object;",
1895 (void*)&WB_GetNMethod },
1896 {CC"forceNMethodSweep", CC"()V", (void*)&WB_ForceNMethodSweep },
1897 {CC"allocateCodeBlob", CC"(II)J", (void*)&WB_AllocateCodeBlob },
1898 {CC"freeCodeBlob", CC"(J)V", (void*)&WB_FreeCodeBlob },
1899 {CC"getCodeHeapEntries", CC"(I)[Ljava/lang/Object;",(void*)&WB_GetCodeHeapEntries },
1900 {CC"getCompilationActivityMode",
1901 CC"()I", (void*)&WB_GetCompilationActivityMode},
1902 {CC"getMethodData0", CC"(Ljava/lang/reflect/Executable;)J",
1903 (void*)&WB_GetMethodData },
1904 {CC"getCodeBlob", CC"(J)[Ljava/lang/Object;",(void*)&WB_GetCodeBlob },
1905 {CC"getThreadStackSize", CC"()J", (void*)&WB_GetThreadStackSize },
1906 {CC"getThreadRemainingStackSize", CC"()J", (void*)&WB_GetThreadRemainingStackSize },
1907 {CC"DefineModule", CC"(Ljava/lang/Object;ZLjava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V",
1908 (void*)&WB_DefineModule },
1909 {CC"AddModuleExports", CC"(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V",
1910 (void*)&WB_AddModuleExports },
1911 {CC"AddReadsModule", CC"(Ljava/lang/Object;Ljava/lang/Object;)V",
1912 (void*)&WB_AddReadsModule },
1913 {CC"AddModulePackage", CC"(Ljava/lang/Object;Ljava/lang/String;)V",
1914 (void*)&WB_AddModulePackage },
1915 {CC"GetModuleByPackageName", CC"(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;",
1916 (void*)&WB_GetModuleByPackageName },
1917 {CC"AddModuleExportsToAllUnnamed", CC"(Ljava/lang/Object;Ljava/lang/String;)V",
1918 (void*)&WB_AddModuleExportsToAllUnnamed },
1919 {CC"AddModuleExportsToAll", CC"(Ljava/lang/Object;Ljava/lang/String;)V",
1920 (void*)&WB_AddModuleExportsToAll },
1921 {CC"assertMatchingSafepointCalls", CC"(ZZ)V", (void*)&WB_AssertMatchingSafepointCalls },
1922 {CC"isMonitorInflated0", CC"(Ljava/lang/Object;)Z", (void*)&WB_IsMonitorInflated },
1923 {CC"forceSafepoint", CC"()V", (void*)&WB_ForceSafepoint },
1924 {CC"getConstantPool0", CC"(Ljava/lang/Class;)J", (void*)&WB_GetConstantPool },
1925 {CC"getConstantPoolCacheIndexTag0", CC"()I", (void*)&WB_GetConstantPoolCacheIndexTag},
1926 {CC"getConstantPoolCacheLength0", CC"(Ljava/lang/Class;)I", (void*)&WB_GetConstantPoolCacheLength},
1927 {CC"remapInstructionOperandFromCPCache0",
|