< prev index next >
src/java.base/share/native/libjava/Module.c
Print this page
rev 58870 : 8242452: During module definition, move conversion of packages from native to VM
8242290: Pointless verification in get_package_entry_by_name
Reviewed-by: lfoltan, alanb, iklam
@@ -29,85 +29,16 @@
#include "jni_util.h"
#include "jvm.h"
#include "java_lang_Module.h"
-/*
- * Gets the UTF-8 chars for the string and translates '.' to '/'. Does no
- * further validation, assumption being that both calling code in
- * java.lang.Module and VM will do deeper validation.
- */
-static char*
-GetInternalPackageName(JNIEnv *env, jstring pkg, char* buf, jsize buf_size)
-{
- jsize len;
- jsize unicode_len;
- char* p;
- char* utf_str;
-
- len = (*env)->GetStringUTFLength(env, pkg);
- unicode_len = (*env)->GetStringLength(env, pkg);
- if (len >= buf_size) {
- utf_str = malloc(len + 1);
- if (utf_str == NULL) {
- JNU_ThrowOutOfMemoryError(env, NULL);
- return NULL;
- }
- } else {
- utf_str = buf;
- }
- (*env)->GetStringUTFRegion(env, pkg, 0, unicode_len, utf_str);
-
- p = utf_str;
- while (*p != '\0') {
- if (*p == '.') {
- *p = '/';
- }
- p++;
- }
- return utf_str;
-}
-
JNIEXPORT void JNICALL
Java_java_lang_Module_defineModule0(JNIEnv *env, jclass cls, jobject module,
jboolean is_open, jstring version,
jstring location, jobjectArray packages)
{
- char** pkgs = NULL;
- jsize num_packages = (*env)->GetArrayLength(env, packages);
-
- if (num_packages != 0 && (pkgs = calloc(num_packages, sizeof(char*))) == NULL) {
- JNU_ThrowOutOfMemoryError(env, NULL);
- return;
- } else if ((*env)->EnsureLocalCapacity(env, (jint)num_packages) == 0) {
- jboolean failed = JNI_FALSE;
- int idx;
- for (idx = 0; idx < num_packages; idx++) {
- jstring pkg = (*env)->GetObjectArrayElement(env, packages, idx);
- char* name = GetInternalPackageName(env, pkg, NULL, 0);
- if (name != NULL) {
- pkgs[idx] = name;
- } else {
- failed = JNI_TRUE;
- break;
- }
- }
- if (!failed) {
- JVM_DefineModule(env, module, is_open, version, location,
- (const char* const*)pkgs, num_packages);
- }
- }
-
- if (num_packages > 0) {
- int idx;
- for (idx = 0; idx < num_packages; idx++) {
- if (pkgs[idx] != NULL) {
- free(pkgs[idx]);
- }
- }
- free(pkgs);
- }
+ JVM_DefineModule(env, module, is_open, version, location, packages);
}
JNIEXPORT void JNICALL
Java_java_lang_Module_addReads0(JNIEnv *env, jclass cls, jobject from, jobject to)
{
@@ -116,63 +47,21 @@
JNIEXPORT void JNICALL
Java_java_lang_Module_addExports0(JNIEnv *env, jclass cls, jobject from,
jstring pkg, jobject to)
{
- char buf[128];
- char* pkg_name;
-
- if (pkg == NULL) {
- JNU_ThrowNullPointerException(env, "package is null");
- return;
- }
-
- pkg_name = GetInternalPackageName(env, pkg, buf, (jsize)sizeof(buf));
- if (pkg_name != NULL) {
- JVM_AddModuleExports(env, from, pkg_name, to);
- if (pkg_name != buf) {
- free(pkg_name);
- }
- }
+ JVM_AddModuleExports(env, from, pkg, to);
}
JNIEXPORT void JNICALL
Java_java_lang_Module_addExportsToAll0(JNIEnv *env, jclass cls, jobject from,
jstring pkg)
{
- char buf[128];
- char* pkg_name;
-
- if (pkg == NULL) {
- JNU_ThrowNullPointerException(env, "package is null");
- return;
- }
-
- pkg_name = GetInternalPackageName(env, pkg, buf, (jsize)sizeof(buf));
- if (pkg_name != NULL) {
- JVM_AddModuleExportsToAll(env, from, pkg_name);
- if (pkg_name != buf) {
- free(pkg_name);
- }
- }
+ JVM_AddModuleExportsToAll(env, from, pkg);
}
JNIEXPORT void JNICALL
Java_java_lang_Module_addExportsToAllUnnamed0(JNIEnv *env, jclass cls,
jobject from, jstring pkg)
{
- char buf[128];
- char* pkg_name;
-
- if (pkg == NULL) {
- JNU_ThrowNullPointerException(env, "package is null");
- return;
- }
-
- pkg_name = GetInternalPackageName(env, pkg, buf, (jsize)sizeof(buf));
- if (pkg_name != NULL) {
- JVM_AddModuleExportsToAllUnnamed(env, from, pkg_name);
- if (pkg_name != buf) {
- free(pkg_name);
- }
- }
+ JVM_AddModuleExportsToAllUnnamed(env, from, pkg);
}
< prev index next >