1450
1451 oop class_loader_oop = JNIHandles::resolve(class_loader);
1452 ClassLoaderData* cld = class_loader_oop != NULL
1453 ? java_lang_ClassLoader::loader_data(class_loader_oop)
1454 : ClassLoaderData::the_null_class_loader_data();
1455
1456 void* metadata = MetadataFactory::new_writeable_array<u1>(cld, WhiteBox::array_bytes_to_length((size_t)size), thread);
1457
1458 return (jlong)(uintptr_t)metadata;
1459 WB_END
1460
1461 WB_ENTRY(void, WB_FreeMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong addr, jlong size))
1462 oop class_loader_oop = JNIHandles::resolve(class_loader);
1463 ClassLoaderData* cld = class_loader_oop != NULL
1464 ? java_lang_ClassLoader::loader_data(class_loader_oop)
1465 : ClassLoaderData::the_null_class_loader_data();
1466
1467 MetadataFactory::free_array(cld, (Array<u1>*)(uintptr_t)addr);
1468 WB_END
1469
1470 WB_ENTRY(void, WB_DefineModule(JNIEnv* env, jobject o, jobject module, jstring version, jstring location,
1471 jobjectArray packages))
1472 ResourceMark rm(THREAD);
1473
1474 objArrayOop packages_oop = objArrayOop(JNIHandles::resolve(packages));
1475 objArrayHandle packages_h(THREAD, packages_oop);
1476 int num_packages = (packages_h == NULL ? 0 : packages_h->length());
1477
1478 char** pkgs = NULL;
1479 if (num_packages > 0) {
1480 pkgs = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char*, num_packages);
1481 for (int x = 0; x < num_packages; x++) {
1482 oop pkg_str = packages_h->obj_at(x);
1483 if (pkg_str == NULL || !pkg_str->is_a(SystemDictionary::String_klass())) {
1484 THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
1485 err_msg("Bad package name"));
1486 }
1487 pkgs[x] = java_lang_String::as_utf8_string(pkg_str);
1488 }
1489 }
1490 Modules::define_module(module, version, location, (const char* const*)pkgs, num_packages, CHECK);
1491 WB_END
1492
1493 WB_ENTRY(void, WB_AddModuleExports(JNIEnv* env, jobject o, jobject from_module, jstring package, jobject to_module))
1494 ResourceMark rm(THREAD);
1495 char* package_name = NULL;
1496 if (package != NULL) {
1497 package_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(package));
1498 }
1499 Modules::add_module_exports_qualified(from_module, package_name, to_module, CHECK);
1500 WB_END
1501
1502 WB_ENTRY(void, WB_AddModuleExportsToAllUnnamed(JNIEnv* env, jobject o, jclass module, jstring package))
1503 ResourceMark rm(THREAD);
1504 char* package_name = NULL;
1505 if (package != NULL) {
1506 package_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(package));
1507 }
1508 Modules::add_module_exports_to_all_unnamed(module, package_name, CHECK);
1509 WB_END
1510
1942 CC"(Ljava/lang/ClassLoader;J)J", (void*)&WB_AllocateMetaspace },
1943 {CC"freeMetaspace",
1944 CC"(Ljava/lang/ClassLoader;JJ)V", (void*)&WB_FreeMetaspace },
1945 {CC"incMetaspaceCapacityUntilGC", CC"(J)J", (void*)&WB_IncMetaspaceCapacityUntilGC },
1946 {CC"metaspaceCapacityUntilGC", CC"()J", (void*)&WB_MetaspaceCapacityUntilGC },
1947 {CC"metaspaceShouldConcurrentCollect", CC"()Z", (void*)&WB_MetaspaceShouldConcurrentCollect },
1948 {CC"getCPUFeatures", CC"()Ljava/lang/String;", (void*)&WB_GetCPUFeatures },
1949 {CC"getNMethod0", CC"(Ljava/lang/reflect/Executable;Z)[Ljava/lang/Object;",
1950 (void*)&WB_GetNMethod },
1951 {CC"forceNMethodSweep", CC"()V", (void*)&WB_ForceNMethodSweep },
1952 {CC"allocateCodeBlob", CC"(II)J", (void*)&WB_AllocateCodeBlob },
1953 {CC"freeCodeBlob", CC"(J)V", (void*)&WB_FreeCodeBlob },
1954 {CC"getCodeHeapEntries", CC"(I)[Ljava/lang/Object;",(void*)&WB_GetCodeHeapEntries },
1955 {CC"getCompilationActivityMode",
1956 CC"()I", (void*)&WB_GetCompilationActivityMode},
1957 {CC"getMethodData0", CC"(Ljava/lang/reflect/Executable;)J",
1958 (void*)&WB_GetMethodData },
1959 {CC"getCodeBlob", CC"(J)[Ljava/lang/Object;",(void*)&WB_GetCodeBlob },
1960 {CC"getThreadStackSize", CC"()J", (void*)&WB_GetThreadStackSize },
1961 {CC"getThreadRemainingStackSize", CC"()J", (void*)&WB_GetThreadRemainingStackSize },
1962 {CC"DefineModule", CC"(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V",
1963 (void*)&WB_DefineModule },
1964 {CC"AddModuleExports", CC"(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V",
1965 (void*)&WB_AddModuleExports },
1966 {CC"AddReadsModule", CC"(Ljava/lang/Object;Ljava/lang/Object;)V",
1967 (void*)&WB_AddReadsModule },
1968 {CC"AddModulePackage", CC"(Ljava/lang/Object;Ljava/lang/String;)V",
1969 (void*)&WB_AddModulePackage },
1970 {CC"AddModuleExportsToAllUnnamed", CC"(Ljava/lang/Object;Ljava/lang/String;)V",
1971 (void*)&WB_AddModuleExportsToAllUnnamed },
1972 {CC"AddModuleExportsToAll", CC"(Ljava/lang/Object;Ljava/lang/String;)V",
1973 (void*)&WB_AddModuleExportsToAll },
1974 {CC"assertMatchingSafepointCalls", CC"(ZZ)V", (void*)&WB_AssertMatchingSafepointCalls },
1975 {CC"isMonitorInflated0", CC"(Ljava/lang/Object;)Z", (void*)&WB_IsMonitorInflated },
1976 {CC"forceSafepoint", CC"()V", (void*)&WB_ForceSafepoint },
1977 {CC"getConstantPool0", CC"(Ljava/lang/Class;)J", (void*)&WB_GetConstantPool },
1978 {CC"getConstantPoolCacheIndexTag0", CC"()I", (void*)&WB_GetConstantPoolCacheIndexTag},
1979 {CC"getConstantPoolCacheLength0", CC"(Ljava/lang/Class;)I", (void*)&WB_GetConstantPoolCacheLength},
1980 {CC"remapInstructionOperandFromCPCache0",
1981 CC"(Ljava/lang/Class;I)I", (void*)&WB_ConstantPoolRemapInstructionOperandFromCache},
1982 {CC"encodeConstantPoolIndyIndex0",
|
1450
1451 oop class_loader_oop = JNIHandles::resolve(class_loader);
1452 ClassLoaderData* cld = class_loader_oop != NULL
1453 ? java_lang_ClassLoader::loader_data(class_loader_oop)
1454 : ClassLoaderData::the_null_class_loader_data();
1455
1456 void* metadata = MetadataFactory::new_writeable_array<u1>(cld, WhiteBox::array_bytes_to_length((size_t)size), thread);
1457
1458 return (jlong)(uintptr_t)metadata;
1459 WB_END
1460
1461 WB_ENTRY(void, WB_FreeMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong addr, jlong size))
1462 oop class_loader_oop = JNIHandles::resolve(class_loader);
1463 ClassLoaderData* cld = class_loader_oop != NULL
1464 ? java_lang_ClassLoader::loader_data(class_loader_oop)
1465 : ClassLoaderData::the_null_class_loader_data();
1466
1467 MetadataFactory::free_array(cld, (Array<u1>*)(uintptr_t)addr);
1468 WB_END
1469
1470 WB_ENTRY(void, WB_DefineModule(JNIEnv* env, jobject o, jobject module, jboolean is_open,
1471 jstring version, jstring location, jobjectArray packages))
1472 ResourceMark rm(THREAD);
1473
1474 objArrayOop packages_oop = objArrayOop(JNIHandles::resolve(packages));
1475 objArrayHandle packages_h(THREAD, packages_oop);
1476 int num_packages = (packages_h == NULL ? 0 : packages_h->length());
1477
1478 char** pkgs = NULL;
1479 if (num_packages > 0) {
1480 pkgs = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char*, num_packages);
1481 for (int x = 0; x < num_packages; x++) {
1482 oop pkg_str = packages_h->obj_at(x);
1483 if (pkg_str == NULL || !pkg_str->is_a(SystemDictionary::String_klass())) {
1484 THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
1485 err_msg("Bad package name"));
1486 }
1487 pkgs[x] = java_lang_String::as_utf8_string(pkg_str);
1488 }
1489 }
1490 Modules::define_module(module, is_open, version, location, (const char* const*)pkgs, num_packages, CHECK);
1491 WB_END
1492
1493 WB_ENTRY(void, WB_AddModuleExports(JNIEnv* env, jobject o, jobject from_module, jstring package, jobject to_module))
1494 ResourceMark rm(THREAD);
1495 char* package_name = NULL;
1496 if (package != NULL) {
1497 package_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(package));
1498 }
1499 Modules::add_module_exports_qualified(from_module, package_name, to_module, CHECK);
1500 WB_END
1501
1502 WB_ENTRY(void, WB_AddModuleExportsToAllUnnamed(JNIEnv* env, jobject o, jclass module, jstring package))
1503 ResourceMark rm(THREAD);
1504 char* package_name = NULL;
1505 if (package != NULL) {
1506 package_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(package));
1507 }
1508 Modules::add_module_exports_to_all_unnamed(module, package_name, CHECK);
1509 WB_END
1510
1942 CC"(Ljava/lang/ClassLoader;J)J", (void*)&WB_AllocateMetaspace },
1943 {CC"freeMetaspace",
1944 CC"(Ljava/lang/ClassLoader;JJ)V", (void*)&WB_FreeMetaspace },
1945 {CC"incMetaspaceCapacityUntilGC", CC"(J)J", (void*)&WB_IncMetaspaceCapacityUntilGC },
1946 {CC"metaspaceCapacityUntilGC", CC"()J", (void*)&WB_MetaspaceCapacityUntilGC },
1947 {CC"metaspaceShouldConcurrentCollect", CC"()Z", (void*)&WB_MetaspaceShouldConcurrentCollect },
1948 {CC"getCPUFeatures", CC"()Ljava/lang/String;", (void*)&WB_GetCPUFeatures },
1949 {CC"getNMethod0", CC"(Ljava/lang/reflect/Executable;Z)[Ljava/lang/Object;",
1950 (void*)&WB_GetNMethod },
1951 {CC"forceNMethodSweep", CC"()V", (void*)&WB_ForceNMethodSweep },
1952 {CC"allocateCodeBlob", CC"(II)J", (void*)&WB_AllocateCodeBlob },
1953 {CC"freeCodeBlob", CC"(J)V", (void*)&WB_FreeCodeBlob },
1954 {CC"getCodeHeapEntries", CC"(I)[Ljava/lang/Object;",(void*)&WB_GetCodeHeapEntries },
1955 {CC"getCompilationActivityMode",
1956 CC"()I", (void*)&WB_GetCompilationActivityMode},
1957 {CC"getMethodData0", CC"(Ljava/lang/reflect/Executable;)J",
1958 (void*)&WB_GetMethodData },
1959 {CC"getCodeBlob", CC"(J)[Ljava/lang/Object;",(void*)&WB_GetCodeBlob },
1960 {CC"getThreadStackSize", CC"()J", (void*)&WB_GetThreadStackSize },
1961 {CC"getThreadRemainingStackSize", CC"()J", (void*)&WB_GetThreadRemainingStackSize },
1962 {CC"DefineModule", CC"(Ljava/lang/Object;ZLjava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V",
1963 (void*)&WB_DefineModule },
1964 {CC"AddModuleExports", CC"(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V",
1965 (void*)&WB_AddModuleExports },
1966 {CC"AddReadsModule", CC"(Ljava/lang/Object;Ljava/lang/Object;)V",
1967 (void*)&WB_AddReadsModule },
1968 {CC"AddModulePackage", CC"(Ljava/lang/Object;Ljava/lang/String;)V",
1969 (void*)&WB_AddModulePackage },
1970 {CC"AddModuleExportsToAllUnnamed", CC"(Ljava/lang/Object;Ljava/lang/String;)V",
1971 (void*)&WB_AddModuleExportsToAllUnnamed },
1972 {CC"AddModuleExportsToAll", CC"(Ljava/lang/Object;Ljava/lang/String;)V",
1973 (void*)&WB_AddModuleExportsToAll },
1974 {CC"assertMatchingSafepointCalls", CC"(ZZ)V", (void*)&WB_AssertMatchingSafepointCalls },
1975 {CC"isMonitorInflated0", CC"(Ljava/lang/Object;)Z", (void*)&WB_IsMonitorInflated },
1976 {CC"forceSafepoint", CC"()V", (void*)&WB_ForceSafepoint },
1977 {CC"getConstantPool0", CC"(Ljava/lang/Class;)J", (void*)&WB_GetConstantPool },
1978 {CC"getConstantPoolCacheIndexTag0", CC"()I", (void*)&WB_GetConstantPoolCacheIndexTag},
1979 {CC"getConstantPoolCacheLength0", CC"(Ljava/lang/Class;)I", (void*)&WB_GetConstantPoolCacheLength},
1980 {CC"remapInstructionOperandFromCPCache0",
1981 CC"(Ljava/lang/Class;I)I", (void*)&WB_ConstantPoolRemapInstructionOperandFromCache},
1982 {CC"encodeConstantPoolIndyIndex0",
|