< prev index next >

src/share/vm/prims/whitebox.cpp

Print this page


   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",


< prev index next >