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 |