hotspot/src/share/vm/prims/jvmtiEnv.cpp
changeset 42307 cefc81dc1d52
parent 42057 6a5b8ebcd3f2
child 43964 2f5e556a6037
equal deleted inserted replaced
42142:6d23d5e6b916 42307:cefc81dc1d52
   225   *module_ptr = module;
   225   *module_ptr = module;
   226   return JVMTI_ERROR_NONE;
   226   return JVMTI_ERROR_NONE;
   227 } /* end GetNamedModule */
   227 } /* end GetNamedModule */
   228 
   228 
   229 
   229 
       
   230 // module - pre-checked for NULL
       
   231 // to_module - pre-checked for NULL
       
   232 jvmtiError
       
   233 JvmtiEnv::AddModuleReads(jobject module, jobject to_module) {
       
   234   JavaThread* THREAD = JavaThread::current();
       
   235 
       
   236   // check module
       
   237   Handle h_module(THREAD, JNIHandles::resolve(module));
       
   238   if (!java_lang_reflect_Module::is_instance(h_module())) {
       
   239     return JVMTI_ERROR_INVALID_MODULE;
       
   240   }
       
   241   // check to_module
       
   242   Handle h_to_module(THREAD, JNIHandles::resolve(to_module));
       
   243   if (!java_lang_reflect_Module::is_instance(h_to_module())) {
       
   244     return JVMTI_ERROR_INVALID_MODULE;
       
   245   }
       
   246   return JvmtiExport::add_module_reads(h_module, h_to_module, THREAD);
       
   247 } /* end AddModuleReads */
       
   248 
       
   249 
       
   250 // module - pre-checked for NULL
       
   251 // pkg_name - pre-checked for NULL
       
   252 // to_module - pre-checked for NULL
       
   253 jvmtiError
       
   254 JvmtiEnv::AddModuleExports(jobject module, const char* pkg_name, jobject to_module) {
       
   255   JavaThread* THREAD = JavaThread::current();
       
   256   Handle h_pkg = java_lang_String::create_from_str(pkg_name, THREAD);
       
   257 
       
   258   // check module
       
   259   Handle h_module(THREAD, JNIHandles::resolve(module));
       
   260   if (!java_lang_reflect_Module::is_instance(h_module())) {
       
   261     return JVMTI_ERROR_INVALID_MODULE;
       
   262   }
       
   263   // check to_module
       
   264   Handle h_to_module(THREAD, JNIHandles::resolve(to_module));
       
   265   if (!java_lang_reflect_Module::is_instance(h_to_module())) {
       
   266     return JVMTI_ERROR_INVALID_MODULE;
       
   267   }
       
   268   return JvmtiExport::add_module_exports(h_module, h_pkg, h_to_module, THREAD);
       
   269 } /* end AddModuleExports */
       
   270 
       
   271 
       
   272 // module - pre-checked for NULL
       
   273 // pkg_name - pre-checked for NULL
       
   274 // to_module - pre-checked for NULL
       
   275 jvmtiError
       
   276 JvmtiEnv::AddModuleOpens(jobject module, const char* pkg_name, jobject to_module) {
       
   277   JavaThread* THREAD = JavaThread::current();
       
   278   Handle h_pkg = java_lang_String::create_from_str(pkg_name, THREAD);
       
   279 
       
   280   // check module
       
   281   Handle h_module(THREAD, JNIHandles::resolve(module));
       
   282   if (!java_lang_reflect_Module::is_instance(h_module())) {
       
   283     return JVMTI_ERROR_INVALID_MODULE;
       
   284   }
       
   285   // check to_module
       
   286   Handle h_to_module(THREAD, JNIHandles::resolve(to_module));
       
   287   if (!java_lang_reflect_Module::is_instance(h_to_module())) {
       
   288     return JVMTI_ERROR_INVALID_MODULE;
       
   289   }
       
   290   return JvmtiExport::add_module_opens(h_module, h_pkg, h_to_module, THREAD);
       
   291 } /* end AddModuleOpens */
       
   292 
       
   293 
       
   294 // module - pre-checked for NULL
       
   295 // service - pre-checked for NULL
       
   296 jvmtiError
       
   297 JvmtiEnv::AddModuleUses(jobject module, jclass service) {
       
   298   JavaThread* THREAD = JavaThread::current();
       
   299 
       
   300   // check module
       
   301   Handle h_module(THREAD, JNIHandles::resolve(module));
       
   302   if (!java_lang_reflect_Module::is_instance(h_module())) {
       
   303     return JVMTI_ERROR_INVALID_MODULE;
       
   304   }
       
   305   // check service
       
   306   Handle h_service(THREAD, JNIHandles::resolve_external_guard(service));
       
   307   if (!java_lang_Class::is_instance(h_service()) ||
       
   308       java_lang_Class::is_primitive(h_service())) {
       
   309     return JVMTI_ERROR_INVALID_CLASS;
       
   310   }
       
   311   return JvmtiExport::add_module_uses(h_module, h_service, THREAD);
       
   312 } /* end AddModuleUses */
       
   313 
       
   314 
       
   315 // module - pre-checked for NULL
       
   316 // service - pre-checked for NULL
       
   317 // impl_class - pre-checked for NULL
       
   318 jvmtiError
       
   319 JvmtiEnv::AddModuleProvides(jobject module, jclass service, jclass impl_class) {
       
   320   JavaThread* THREAD = JavaThread::current();
       
   321 
       
   322   // check module
       
   323   Handle h_module(THREAD, JNIHandles::resolve(module));
       
   324   if (!java_lang_reflect_Module::is_instance(h_module())) {
       
   325     return JVMTI_ERROR_INVALID_MODULE;
       
   326   }
       
   327   // check service
       
   328   Handle h_service(THREAD, JNIHandles::resolve_external_guard(service));
       
   329   if (!java_lang_Class::is_instance(h_service()) ||
       
   330       java_lang_Class::is_primitive(h_service())) {
       
   331     return JVMTI_ERROR_INVALID_CLASS;
       
   332   }
       
   333   // check impl_class
       
   334   Handle h_impl_class(THREAD, JNIHandles::resolve_external_guard(impl_class));
       
   335   if (!java_lang_Class::is_instance(h_impl_class()) ||
       
   336       java_lang_Class::is_primitive(h_impl_class())) {
       
   337     return JVMTI_ERROR_INVALID_CLASS;
       
   338   }
       
   339   return JvmtiExport::add_module_provides(h_module, h_service, h_impl_class, THREAD);
       
   340 } /* end AddModuleProvides */
       
   341 
       
   342 
   230   //
   343   //
   231   // Class functions
   344   // Class functions
   232   //
   345   //
   233 
   346 
   234 // class_count_ptr - pre-checked for NULL
   347 // class_count_ptr - pre-checked for NULL