804 if (cp_patches == NULL) {
805 cp_patches = new GrowableArray<Handle>(i+1, i+1, Handle());
806 }
807
808 cp_patches->at_put(i, patch);
809 }
810 }
811 }
812
813 ClassFileStream st(class_bytes, class_bytes_length, host_source, ClassFileStream::verify);
814
815 Symbol* no_class_name = NULL;
816 Klass* anonk = SystemDictionary::parse_stream(no_class_name,
817 host_loader,
818 host_domain,
819 &st,
820 InstanceKlass::cast(host_klass),
821 cp_patches,
822 false, // is_nonfindable
823 false, // is_weak
824 CHECK_NULL);
825 if (anonk == NULL) {
826 return NULL;
827 }
828
829 return InstanceKlass::cast(anonk);
830 }
831
832 UNSAFE_ENTRY(jclass, Unsafe_DefineAnonymousClass0(JNIEnv *env, jobject unsafe, jclass host_class, jbyteArray data, jobjectArray cp_patches_jh)) {
833 ResourceMark rm(THREAD);
834
835 jobject res_jh = NULL;
836 u1* temp_alloc = NULL;
837
838 InstanceKlass* anon_klass = Unsafe_DefineAnonymousClass_impl(env, host_class, data, cp_patches_jh, &temp_alloc, THREAD);
839 if (anon_klass != NULL) {
840 res_jh = JNIHandles::make_local(env, anon_klass->java_mirror());
841 }
842
843 // try/finally clause:
|
804 if (cp_patches == NULL) {
805 cp_patches = new GrowableArray<Handle>(i+1, i+1, Handle());
806 }
807
808 cp_patches->at_put(i, patch);
809 }
810 }
811 }
812
813 ClassFileStream st(class_bytes, class_bytes_length, host_source, ClassFileStream::verify);
814
815 Symbol* no_class_name = NULL;
816 Klass* anonk = SystemDictionary::parse_stream(no_class_name,
817 host_loader,
818 host_domain,
819 &st,
820 InstanceKlass::cast(host_klass),
821 cp_patches,
822 false, // is_nonfindable
823 false, // is_weak
824 false, // can_access_vm_annotations
825 CHECK_NULL);
826 if (anonk == NULL) {
827 return NULL;
828 }
829
830 return InstanceKlass::cast(anonk);
831 }
832
833 UNSAFE_ENTRY(jclass, Unsafe_DefineAnonymousClass0(JNIEnv *env, jobject unsafe, jclass host_class, jbyteArray data, jobjectArray cp_patches_jh)) {
834 ResourceMark rm(THREAD);
835
836 jobject res_jh = NULL;
837 u1* temp_alloc = NULL;
838
839 InstanceKlass* anon_klass = Unsafe_DefineAnonymousClass_impl(env, host_class, data, cp_patches_jh, &temp_alloc, THREAD);
840 if (anon_klass != NULL) {
841 res_jh = JNIHandles::make_local(env, anon_klass->java_mirror());
842 }
843
844 // try/finally clause:
|