comparison src/share/vm/prims/jni.cpp @ 657:715dceaa89b7

6603316: Improve instrumentation for classes loaded at startup Reviewed-by: xlu, mchung
author acorn
date Wed, 25 Mar 2009 13:09:28 -0400
parents 0fbdb4381b99
children ad6585fd4087
comparison
equal deleted inserted replaced
655:60bfce711da4 657:715dceaa89b7
299 } 299 }
300 } 300 }
301 klassOop k = SystemDictionary::resolve_from_stream(class_name, class_loader, 301 klassOop k = SystemDictionary::resolve_from_stream(class_name, class_loader,
302 Handle(), &st, CHECK_NULL); 302 Handle(), &st, CHECK_NULL);
303 303
304 if (TraceClassResolution && k != NULL) {
305 trace_class_resolution(k);
306 }
307
304 cls = (jclass)JNIHandles::make_local( 308 cls = (jclass)JNIHandles::make_local(
305 env, Klass::cast(k)->java_mirror()); 309 env, Klass::cast(k)->java_mirror());
306 return cls; 310 return cls;
307 JNI_END 311 JNI_END
308 312
362 } 366 }
363 367
364 symbolHandle sym = oopFactory::new_symbol_handle(name, CHECK_NULL); 368 symbolHandle sym = oopFactory::new_symbol_handle(name, CHECK_NULL);
365 result = find_class_from_class_loader(env, sym, true, loader, 369 result = find_class_from_class_loader(env, sym, true, loader,
366 protection_domain, true, thread); 370 protection_domain, true, thread);
371
372 if (TraceClassResolution && result != NULL) {
373 trace_class_resolution(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(result)));
374 }
367 375
368 // If we were the first invocation of jni_FindClass, we enable compilation again 376 // If we were the first invocation of jni_FindClass, we enable compilation again
369 // rather than just allowing invocation counter to overflow and decay. 377 // rather than just allowing invocation counter to overflow and decay.
370 // Controlled by flag DelayCompilationDuringStartup. 378 // Controlled by flag DelayCompilationDuringStartup.
371 if (first_time && !CompileTheWorld) 379 if (first_time && !CompileTheWorld)
2644 static jclass lookupOne(JNIEnv* env, const char* name, TRAPS) { 2652 static jclass lookupOne(JNIEnv* env, const char* name, TRAPS) {
2645 Handle loader; // null (bootstrap) loader 2653 Handle loader; // null (bootstrap) loader
2646 Handle protection_domain; // null protection domain 2654 Handle protection_domain; // null protection domain
2647 2655
2648 symbolHandle sym = oopFactory::new_symbol_handle(name, CHECK_NULL); 2656 symbolHandle sym = oopFactory::new_symbol_handle(name, CHECK_NULL);
2649 return find_class_from_class_loader(env, sym, true, loader, protection_domain, true, CHECK_NULL); 2657 jclass result = find_class_from_class_loader(env, sym, true, loader, protection_domain, true, CHECK_NULL);
2658
2659 if (TraceClassResolution && result != NULL) {
2660 trace_class_resolution(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(result)));
2661 }
2662 return result;
2650 } 2663 }
2651 2664
2652 // These lookups are done with the NULL (bootstrap) ClassLoader to 2665 // These lookups are done with the NULL (bootstrap) ClassLoader to
2653 // circumvent any security checks that would be done by jni_FindClass. 2666 // circumvent any security checks that would be done by jni_FindClass.
2654 JNI_ENTRY(bool, lookupDirectBufferClasses(JNIEnv* env)) 2667 JNI_ENTRY(bool, lookupDirectBufferClasses(JNIEnv* env))