< prev index next >

src/share/vm/jvmci/jvmciCompilerToVM.cpp

Print this page




 764       nmethod* nm = cb->as_nmethod_or_null();
 765       if (nm != NULL && installed_code_handle->is_scavengable()) {
 766         assert(nm->detect_scavenge_root_oops(), "nm should be scavengable if installed_code is scavengable");
 767         if (!UseG1GC) {
 768           assert(nm->on_scavenge_root_list(), "nm should be on scavengable list");
 769         }
 770       }
 771     }
 772   }
 773   return result;
 774 C2V_END
 775 
 776 C2V_VMENTRY(jint, getMetadata, (JNIEnv *jniEnv, jobject, jobject target, jobject compiled_code, jobject metadata))
 777   ResourceMark rm;
 778   HandleMark hm;
 779 
 780   Handle target_handle = JNIHandles::resolve(target);
 781   Handle compiled_code_handle = JNIHandles::resolve(compiled_code);
 782   Handle metadata_handle = JNIHandles::resolve(metadata);
 783 
 784   HotSpotOopMap::klass()->initialize(thread);
 785 
 786   CodeMetadata code_metadata;
 787   CodeBlob *cb = NULL;
 788   CodeInstaller installer;
 789 
 790   JVMCIEnv::CodeInstallResult result = installer.gather_metadata(target_handle, compiled_code_handle, code_metadata, CHECK_0); //cb, pc_descs, nr_pc_descs, scopes_descs, scopes_size, reloc_buffer);
 791   if (result != JVMCIEnv::ok) {
 792     return result;
 793   }
 794 
 795   if (code_metadata.get_nr_pc_desc() > 0) {
 796     typeArrayHandle pcArrayOop = oopFactory::new_byteArray(sizeof(PcDesc) * code_metadata.get_nr_pc_desc(), CHECK_(JVMCIEnv::cache_full));
 797     memcpy(pcArrayOop->byte_at_addr(0), code_metadata.get_pc_desc(), sizeof(PcDesc) * code_metadata.get_nr_pc_desc());
 798     HotSpotMetaData::set_pcDescBytes(metadata_handle, pcArrayOop());
 799   }
 800 
 801   if (code_metadata.get_scopes_size() > 0) {
 802     typeArrayHandle scopesArrayOop = oopFactory::new_byteArray(code_metadata.get_scopes_size(), CHECK_(JVMCIEnv::cache_full));
 803     memcpy(scopesArrayOop->byte_at_addr(0), code_metadata.get_scopes_desc(), code_metadata.get_scopes_size());
 804     HotSpotMetaData::set_scopesDescBytes(metadata_handle, scopesArrayOop());
 805   }
 806 
 807   RelocBuffer* reloc_buffer = code_metadata.get_reloc_buffer();
 808   typeArrayHandle relocArrayOop = oopFactory::new_byteArray((int) reloc_buffer->size(), CHECK_(JVMCIEnv::cache_full));
 809   if (reloc_buffer->size() > 0) {
 810     memcpy(relocArrayOop->byte_at_addr(0), reloc_buffer->begin(), reloc_buffer->size());




 764       nmethod* nm = cb->as_nmethod_or_null();
 765       if (nm != NULL && installed_code_handle->is_scavengable()) {
 766         assert(nm->detect_scavenge_root_oops(), "nm should be scavengable if installed_code is scavengable");
 767         if (!UseG1GC) {
 768           assert(nm->on_scavenge_root_list(), "nm should be on scavengable list");
 769         }
 770       }
 771     }
 772   }
 773   return result;
 774 C2V_END
 775 
 776 C2V_VMENTRY(jint, getMetadata, (JNIEnv *jniEnv, jobject, jobject target, jobject compiled_code, jobject metadata))
 777   ResourceMark rm;
 778   HandleMark hm;
 779 
 780   Handle target_handle = JNIHandles::resolve(target);
 781   Handle compiled_code_handle = JNIHandles::resolve(compiled_code);
 782   Handle metadata_handle = JNIHandles::resolve(metadata);
 783 


 784   CodeMetadata code_metadata;
 785   CodeBlob *cb = NULL;
 786   CodeInstaller installer;
 787 
 788   JVMCIEnv::CodeInstallResult result = installer.gather_metadata(target_handle, compiled_code_handle, code_metadata, CHECK_0);
 789   if (result != JVMCIEnv::ok) {
 790     return result;
 791   }
 792 
 793   if (code_metadata.get_nr_pc_desc() > 0) {
 794     typeArrayHandle pcArrayOop = oopFactory::new_byteArray(sizeof(PcDesc) * code_metadata.get_nr_pc_desc(), CHECK_(JVMCIEnv::cache_full));
 795     memcpy(pcArrayOop->byte_at_addr(0), code_metadata.get_pc_desc(), sizeof(PcDesc) * code_metadata.get_nr_pc_desc());
 796     HotSpotMetaData::set_pcDescBytes(metadata_handle, pcArrayOop());
 797   }
 798 
 799   if (code_metadata.get_scopes_size() > 0) {
 800     typeArrayHandle scopesArrayOop = oopFactory::new_byteArray(code_metadata.get_scopes_size(), CHECK_(JVMCIEnv::cache_full));
 801     memcpy(scopesArrayOop->byte_at_addr(0), code_metadata.get_scopes_desc(), code_metadata.get_scopes_size());
 802     HotSpotMetaData::set_scopesDescBytes(metadata_handle, scopesArrayOop());
 803   }
 804 
 805   RelocBuffer* reloc_buffer = code_metadata.get_reloc_buffer();
 806   typeArrayHandle relocArrayOop = oopFactory::new_byteArray((int) reloc_buffer->size(), CHECK_(JVMCIEnv::cache_full));
 807   if (reloc_buffer->size() > 0) {
 808     memcpy(relocArrayOop->byte_at_addr(0), reloc_buffer->begin(), reloc_buffer->size());


< prev index next >