comparison src/share/vm/prims/jvm.cpp @ 973:ad6585fd4087

6830542: Performance: JVM_DefineClass already verified. Reviewed-by: kamg, phh
author acorn
date Fri, 04 Sep 2009 12:53:02 -0400
parents abe076e3636f
children 389049f3f393
comparison
equal deleted inserted replaced
967:6918603297f7 973:ad6585fd4087
760 counter->inc(); 760 counter->inc();
761 } 761 }
762 } 762 }
763 763
764 // common code for JVM_DefineClass() and JVM_DefineClassWithSource() 764 // common code for JVM_DefineClass() and JVM_DefineClassWithSource()
765 static jclass jvm_define_class_common(JNIEnv *env, const char *name, jobject loader, const jbyte *buf, jsize len, jobject pd, const char *source, TRAPS) { 765 // and JVM_DefineClassWithSourceCond()
766 static jclass jvm_define_class_common(JNIEnv *env, const char *name,
767 jobject loader, const jbyte *buf,
768 jsize len, jobject pd, const char *source,
769 jboolean verify, TRAPS) {
766 if (source == NULL) source = "__JVM_DefineClass__"; 770 if (source == NULL) source = "__JVM_DefineClass__";
767 771
768 assert(THREAD->is_Java_thread(), "must be a JavaThread"); 772 assert(THREAD->is_Java_thread(), "must be a JavaThread");
769 JavaThread* jt = (JavaThread*) THREAD; 773 JavaThread* jt = (JavaThread*) THREAD;
770 774
801 THREAD); 805 THREAD);
802 } 806 }
803 Handle protection_domain (THREAD, JNIHandles::resolve(pd)); 807 Handle protection_domain (THREAD, JNIHandles::resolve(pd));
804 klassOop k = SystemDictionary::resolve_from_stream(class_name, class_loader, 808 klassOop k = SystemDictionary::resolve_from_stream(class_name, class_loader,
805 protection_domain, &st, 809 protection_domain, &st,
810 verify != 0,
806 CHECK_NULL); 811 CHECK_NULL);
807 812
808 if (TraceClassResolution && k != NULL) { 813 if (TraceClassResolution && k != NULL) {
809 trace_class_resolution(k); 814 trace_class_resolution(k);
810 } 815 }
814 819
815 820
816 JVM_ENTRY(jclass, JVM_DefineClass(JNIEnv *env, const char *name, jobject loader, const jbyte *buf, jsize len, jobject pd)) 821 JVM_ENTRY(jclass, JVM_DefineClass(JNIEnv *env, const char *name, jobject loader, const jbyte *buf, jsize len, jobject pd))
817 JVMWrapper2("JVM_DefineClass %s", name); 822 JVMWrapper2("JVM_DefineClass %s", name);
818 823
819 return jvm_define_class_common(env, name, loader, buf, len, pd, NULL, THREAD); 824 return jvm_define_class_common(env, name, loader, buf, len, pd, NULL, true, THREAD);
820 JVM_END 825 JVM_END
821 826
822 827
823 JVM_ENTRY(jclass, JVM_DefineClassWithSource(JNIEnv *env, const char *name, jobject loader, const jbyte *buf, jsize len, jobject pd, const char *source)) 828 JVM_ENTRY(jclass, JVM_DefineClassWithSource(JNIEnv *env, const char *name, jobject loader, const jbyte *buf, jsize len, jobject pd, const char *source))
824 JVMWrapper2("JVM_DefineClassWithSource %s", name); 829 JVMWrapper2("JVM_DefineClassWithSource %s", name);
825 830
826 return jvm_define_class_common(env, name, loader, buf, len, pd, source, THREAD); 831 return jvm_define_class_common(env, name, loader, buf, len, pd, source, true, THREAD);
827 JVM_END 832 JVM_END
828 833
834 JVM_ENTRY(jclass, JVM_DefineClassWithSourceCond(JNIEnv *env, const char *name,
835 jobject loader, const jbyte *buf,
836 jsize len, jobject pd,
837 const char *source, jboolean verify))
838 JVMWrapper2("JVM_DefineClassWithSourceCond %s", name);
839
840 return jvm_define_class_common(env, name, loader, buf, len, pd, source, verify, THREAD);
841 JVM_END
829 842
830 JVM_ENTRY(jclass, JVM_FindLoadedClass(JNIEnv *env, jobject loader, jstring name)) 843 JVM_ENTRY(jclass, JVM_FindLoadedClass(JNIEnv *env, jobject loader, jstring name))
831 JVMWrapper("JVM_FindLoadedClass"); 844 JVMWrapper("JVM_FindLoadedClass");
832 ResourceMark rm(THREAD); 845 ResourceMark rm(THREAD);
833 846