< prev index next >

src/java.base/share/native/libjava/Module.c

Print this page




  56         utf_str = buf;
  57     }
  58     (*env)->GetStringUTFRegion(env, pkg, 0, unicode_len, utf_str);
  59 
  60     p = utf_str;
  61     while (*p != '\0') {
  62         if (*p == '.') {
  63             *p = '/';
  64         }
  65         p++;
  66     }
  67     return utf_str;
  68 }
  69 
  70 JNIEXPORT void JNICALL
  71 Java_java_lang_reflect_Module_defineModule0(JNIEnv *env, jclass cls, jobject module,
  72                                             jboolean is_open, jstring version,
  73                                             jstring location, jobjectArray packages)
  74 {
  75     char** pkgs = NULL;
  76     jsize idx;
  77     jsize num_packages = (*env)->GetArrayLength(env, packages);
  78 
  79     if (num_packages != 0 && (pkgs = calloc(num_packages, sizeof(char*))) == NULL) {
  80         JNU_ThrowOutOfMemoryError(env, NULL);
  81         return;
  82     } else {
  83         int valid = 1;

  84         for (idx = 0; idx < num_packages; idx++) {
  85             jstring pkg = (*env)->GetObjectArrayElement(env, packages, idx);
  86             pkgs[idx] = GetInternalPackageName(env, pkg, NULL, 0);
  87             if (pkgs[idx] == NULL) {
  88                 valid = 0;


  89                 break;
  90             }
  91         }
  92 
  93         if (valid != 0) {
  94             JVM_DefineModule(env, module, is_open, version, location,
  95                     (const char* const*)pkgs, num_packages);
  96         }
  97     }
  98 
  99     if (num_packages > 0) {

 100         for (idx = 0; idx < num_packages; idx++) {
 101             if (pkgs[idx] != NULL) {
 102                 free(pkgs[idx]);
 103             }
 104         }
 105         free(pkgs);
 106     }
 107 }
 108 
 109 JNIEXPORT void JNICALL
 110 Java_java_lang_reflect_Module_addReads0(JNIEnv *env, jclass cls, jobject from, jobject to)
 111 {
 112     JVM_AddReadsModule(env, from, to);
 113 }
 114 
 115 JNIEXPORT void JNICALL
 116 Java_java_lang_reflect_Module_addExports0(JNIEnv *env, jclass cls, jobject from,
 117                                           jstring pkg, jobject to)
 118 {
 119     char buf[128];




  56         utf_str = buf;
  57     }
  58     (*env)->GetStringUTFRegion(env, pkg, 0, unicode_len, utf_str);
  59 
  60     p = utf_str;
  61     while (*p != '\0') {
  62         if (*p == '.') {
  63             *p = '/';
  64         }
  65         p++;
  66     }
  67     return utf_str;
  68 }
  69 
  70 JNIEXPORT void JNICALL
  71 Java_java_lang_reflect_Module_defineModule0(JNIEnv *env, jclass cls, jobject module,
  72                                             jboolean is_open, jstring version,
  73                                             jstring location, jobjectArray packages)
  74 {
  75     char** pkgs = NULL;

  76     jsize num_packages = (*env)->GetArrayLength(env, packages);
  77 
  78     if (num_packages != 0 && (pkgs = calloc(num_packages, sizeof(char*))) == NULL) {
  79         JNU_ThrowOutOfMemoryError(env, NULL);
  80         return;
  81     } else if ((*env)->EnsureLocalCapacity(env, (jint)num_packages) == 0) {
  82         jboolean failed = JNI_FALSE;
  83         int idx;
  84         for (idx = 0; idx < num_packages; idx++) {
  85             jstring pkg = (*env)->GetObjectArrayElement(env, packages, idx);
  86             char* name = GetInternalPackageName(env, pkg, NULL, 0);
  87             if (name != NULL) {
  88                 pkgs[idx] = name;
  89             } else {
  90                 failed = JNI_TRUE;
  91                 break;
  92             }
  93         }
  94         if (!failed) {

  95             JVM_DefineModule(env, module, is_open, version, location,
  96                              (const char* const*)pkgs, num_packages);
  97         }
  98     }
  99 
 100     if (num_packages > 0) {
 101         int idx;
 102         for (idx = 0; idx < num_packages; idx++) {
 103             if (pkgs[idx] != NULL) {
 104                 free(pkgs[idx]);
 105             }
 106         }
 107         free(pkgs);
 108     }
 109 }
 110 
 111 JNIEXPORT void JNICALL
 112 Java_java_lang_reflect_Module_addReads0(JNIEnv *env, jclass cls, jobject from, jobject to)
 113 {
 114     JVM_AddReadsModule(env, from, to);
 115 }
 116 
 117 JNIEXPORT void JNICALL
 118 Java_java_lang_reflect_Module_addExports0(JNIEnv *env, jclass cls, jobject from,
 119                                           jstring pkg, jobject to)
 120 {
 121     char buf[128];


< prev index next >