197 // Module functions
198 //
199
200 // module_count_ptr - pre-checked for NULL
201 // modules_ptr - pre-checked for NULL
202 jvmtiError
203 JvmtiEnv::GetAllModules(jint* module_count_ptr, jobject** modules_ptr) {
204 JvmtiModuleClosure jmc;
205
206 return jmc.get_all_modules(this, module_count_ptr, modules_ptr);
207 } /* end GetAllModules */
208
209
210 // class_loader - NULL is a valid value, must be pre-checked
211 // package_name - pre-checked for NULL
212 // module_ptr - pre-checked for NULL
213 jvmtiError
214 JvmtiEnv::GetNamedModule(jobject class_loader, const char* package_name, jobject* module_ptr) {
215 JavaThread* THREAD = JavaThread::current(); // pass to macros
216 ResourceMark rm(THREAD);
217
218 Handle h_loader (THREAD, JNIHandles::resolve(class_loader));
219 // Check that loader is a subclass of java.lang.ClassLoader.
220 if (h_loader.not_null() && !java_lang_ClassLoader::is_subclass(h_loader->klass())) {
221 return JVMTI_ERROR_ILLEGAL_ARGUMENT;
222 }
223 jobject module = Modules::get_named_module(h_loader, package_name, THREAD);
224 if (HAS_PENDING_EXCEPTION) {
225 CLEAR_PENDING_EXCEPTION;
226 return JVMTI_ERROR_INTERNAL; // unexpected exception
227 }
228 *module_ptr = module;
229 return JVMTI_ERROR_NONE;
230 } /* end GetNamedModule */
231
232
233 // module - pre-checked for NULL
234 // to_module - pre-checked for NULL
235 jvmtiError
236 JvmtiEnv::AddModuleReads(jobject module, jobject to_module) {
237 JavaThread* THREAD = JavaThread::current();
|
197 // Module functions
198 //
199
200 // module_count_ptr - pre-checked for NULL
201 // modules_ptr - pre-checked for NULL
202 jvmtiError
203 JvmtiEnv::GetAllModules(jint* module_count_ptr, jobject** modules_ptr) {
204 JvmtiModuleClosure jmc;
205
206 return jmc.get_all_modules(this, module_count_ptr, modules_ptr);
207 } /* end GetAllModules */
208
209
210 // class_loader - NULL is a valid value, must be pre-checked
211 // package_name - pre-checked for NULL
212 // module_ptr - pre-checked for NULL
213 jvmtiError
214 JvmtiEnv::GetNamedModule(jobject class_loader, const char* package_name, jobject* module_ptr) {
215 JavaThread* THREAD = JavaThread::current(); // pass to macros
216 ResourceMark rm(THREAD);
217 Handle h_loader (THREAD, JNIHandles::resolve(class_loader));
218 // Check that loader is a subclass of java.lang.ClassLoader.
219 if (h_loader.not_null() && !java_lang_ClassLoader::is_subclass(h_loader->klass())) {
220 return JVMTI_ERROR_ILLEGAL_ARGUMENT;
221 }
222 jobject module = Modules::get_named_module(h_loader, package_name, THREAD);
223 if (HAS_PENDING_EXCEPTION) {
224 CLEAR_PENDING_EXCEPTION;
225 return JVMTI_ERROR_INTERNAL; // unexpected exception
226 }
227 *module_ptr = module;
228 return JVMTI_ERROR_NONE;
229 } /* end GetNamedModule */
230
231
232 // module - pre-checked for NULL
233 // to_module - pre-checked for NULL
234 jvmtiError
235 JvmtiEnv::AddModuleReads(jobject module, jobject to_module) {
236 JavaThread* THREAD = JavaThread::current();
|