hotspot/src/share/vm/prims/whitebox.cpp
changeset 43466 add500644443
parent 43455 96560cffef4d
child 43473 3beee3e324cf
equal deleted inserted replaced
43465:033b9f74b930 43466:add500644443
    38 #include "memory/iterator.hpp"
    38 #include "memory/iterator.hpp"
    39 #include "memory/resourceArea.hpp"
    39 #include "memory/resourceArea.hpp"
    40 #include "memory/universe.hpp"
    40 #include "memory/universe.hpp"
    41 #include "memory/oopFactory.hpp"
    41 #include "memory/oopFactory.hpp"
    42 #include "oops/constantPool.hpp"
    42 #include "oops/constantPool.hpp"
       
    43 #include "oops/objArrayKlass.hpp"
       
    44 #include "oops/objArrayOop.inline.hpp"
    43 #include "oops/oop.inline.hpp"
    45 #include "oops/oop.inline.hpp"
    44 #include "prims/wbtestmethods/parserTests.hpp"
    46 #include "prims/wbtestmethods/parserTests.hpp"
    45 #include "prims/whitebox.hpp"
    47 #include "prims/whitebox.hpp"
    46 #include "runtime/arguments.hpp"
    48 #include "runtime/arguments.hpp"
    47 #include "runtime/compilationPolicy.hpp"
    49 #include "runtime/compilationPolicy.hpp"
  1401   MetadataFactory::free_array(cld, (Array<u1>*)(uintptr_t)addr);
  1403   MetadataFactory::free_array(cld, (Array<u1>*)(uintptr_t)addr);
  1402 WB_END
  1404 WB_END
  1403 
  1405 
  1404 WB_ENTRY(void, WB_DefineModule(JNIEnv* env, jobject o, jobject module, jstring version, jstring location,
  1406 WB_ENTRY(void, WB_DefineModule(JNIEnv* env, jobject o, jobject module, jstring version, jstring location,
  1405                                 jobjectArray packages))
  1407                                 jobjectArray packages))
  1406   Modules::define_module(module, version, location, packages, CHECK);
  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);
  1407 WB_END
  1427 WB_END
  1408 
  1428 
  1409 WB_ENTRY(void, WB_AddModuleExports(JNIEnv* env, jobject o, jobject from_module, jstring package, jobject to_module))
  1429 WB_ENTRY(void, WB_AddModuleExports(JNIEnv* env, jobject o, jobject from_module, jstring package, jobject to_module))
  1410   Modules::add_module_exports_qualified(from_module, package, to_module, CHECK);
  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);
  1411 WB_END
  1436 WB_END
  1412 
  1437 
  1413 WB_ENTRY(void, WB_AddModuleExportsToAllUnnamed(JNIEnv* env, jobject o, jclass module, jstring package))
  1438 WB_ENTRY(void, WB_AddModuleExportsToAllUnnamed(JNIEnv* env, jobject o, jclass module, jstring package))
  1414   Modules::add_module_exports_to_all_unnamed(module, package, CHECK);
  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);
  1415 WB_END
  1445 WB_END
  1416 
  1446 
  1417 WB_ENTRY(void, WB_AddModuleExportsToAll(JNIEnv* env, jobject o, jclass module, jstring package))
  1447 WB_ENTRY(void, WB_AddModuleExportsToAll(JNIEnv* env, jobject o, jclass module, jstring package))
  1418   Modules::add_module_exports(module, package, NULL, CHECK);
  1448   ResourceMark rm(THREAD);
       
  1449   char* package_name = NULL;
       
  1450   if (package != NULL) {
       
  1451       package_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(package));
       
  1452   }
       
  1453   Modules::add_module_exports(module, package_name, NULL, CHECK);
  1419 WB_END
  1454 WB_END
  1420 
  1455 
  1421 WB_ENTRY(void, WB_AddReadsModule(JNIEnv* env, jobject o, jobject from_module, jobject source_module))
  1456 WB_ENTRY(void, WB_AddReadsModule(JNIEnv* env, jobject o, jobject from_module, jobject source_module))
  1422   Modules::add_reads_module(from_module, source_module, CHECK);
  1457   Modules::add_reads_module(from_module, source_module, CHECK);
  1423 WB_END
  1458 WB_END
  1424 
  1459 
  1425 WB_ENTRY(void, WB_AddModulePackage(JNIEnv* env, jobject o, jclass module, jstring package))
  1460 WB_ENTRY(void, WB_AddModulePackage(JNIEnv* env, jobject o, jclass module, jstring package))
  1426   Modules::add_module_package(module, package, CHECK);
  1461   ResourceMark rm(THREAD);
       
  1462   char* package_name = NULL;
       
  1463   if (package != NULL) {
       
  1464       package_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(package));
       
  1465   }
       
  1466   Modules::add_module_package(module, package_name, CHECK);
  1427 WB_END
  1467 WB_END
  1428 
  1468 
  1429 WB_ENTRY(jobject, WB_GetModuleByPackageName(JNIEnv* env, jobject o, jobject loader, jstring package))
  1469 WB_ENTRY(jobject, WB_GetModuleByPackageName(JNIEnv* env, jobject o, jobject loader, jstring package))
  1430   return Modules::get_module_by_package_name(loader, package, THREAD);
  1470   ResourceMark rm(THREAD);
       
  1471   char* package_name = NULL;
       
  1472   if (package != NULL) {
       
  1473       package_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(package));
       
  1474   }
       
  1475   return Modules::get_module_by_package_name(loader, package_name, THREAD);
  1431 WB_END
  1476 WB_END
  1432 
  1477 
  1433 WB_ENTRY(jlong, WB_IncMetaspaceCapacityUntilGC(JNIEnv* env, jobject wb, jlong inc))
  1478 WB_ENTRY(jlong, WB_IncMetaspaceCapacityUntilGC(JNIEnv* env, jobject wb, jlong inc))
  1434   if (inc < 0) {
  1479   if (inc < 0) {
  1435     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
  1480     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),