22 * |
22 * |
23 */ |
23 */ |
24 |
24 |
25 #include "precompiled.hpp" |
25 #include "precompiled.hpp" |
26 #include "classfile/classLoaderExt.hpp" |
26 #include "classfile/classLoaderExt.hpp" |
|
27 #include "classfile/modules.hpp" |
27 #include "classfile/systemDictionary.hpp" |
28 #include "classfile/systemDictionary.hpp" |
28 #include "classfile/vmSymbols.hpp" |
29 #include "classfile/vmSymbols.hpp" |
29 #include "interpreter/bytecodeStream.hpp" |
30 #include "interpreter/bytecodeStream.hpp" |
30 #include "interpreter/interpreter.hpp" |
31 #include "interpreter/interpreter.hpp" |
31 #include "jvmtifiles/jvmtiEnv.hpp" |
32 #include "jvmtifiles/jvmtiEnv.hpp" |
199 |
200 |
200 return jmc.get_all_modules(this, module_count_ptr, modules_ptr); |
201 return jmc.get_all_modules(this, module_count_ptr, modules_ptr); |
201 } /* end GetAllModules */ |
202 } /* end GetAllModules */ |
202 |
203 |
203 |
204 |
|
205 // class_loader - NULL is a valid value, must be pre-checked |
|
206 // package_name - pre-checked for NULL |
|
207 // module_ptr - pre-checked for NULL |
|
208 jvmtiError |
|
209 JvmtiEnv::GetNamedModule(jobject class_loader, const char* package_name, jobject* module_ptr) { |
|
210 JavaThread* THREAD = JavaThread::current(); // pass to macros |
|
211 ResourceMark rm(THREAD); |
|
212 |
|
213 Handle h_loader (THREAD, JNIHandles::resolve(class_loader)); |
|
214 // Check that loader is a subclass of java.lang.ClassLoader. |
|
215 if (h_loader.not_null() && !java_lang_ClassLoader::is_subclass(h_loader->klass())) { |
|
216 return JVMTI_ERROR_ILLEGAL_ARGUMENT; |
|
217 } |
|
218 jobject module = Modules::get_named_module(h_loader, package_name, THREAD); |
|
219 if (HAS_PENDING_EXCEPTION) { |
|
220 CLEAR_PENDING_EXCEPTION; |
|
221 return JVMTI_ERROR_INTERNAL; // unexpected exception |
|
222 } |
|
223 *module_ptr = module; |
|
224 return JVMTI_ERROR_NONE; |
|
225 } /* end GetNamedModule */ |
|
226 |
204 // |
227 // |
205 // Class functions |
228 // Class functions |
206 // |
229 // |
207 |
230 |
208 // class_count_ptr - pre-checked for NULL |
231 // class_count_ptr - pre-checked for NULL |