< prev index next >

src/hotspot/share/prims/unsafe.cpp

Print this page




 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:


< prev index next >