src/share/vm/jvmci/jvmciCompilerToVM.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/jvmci

src/share/vm/jvmci/jvmciCompilerToVM.cpp

Print this page




 830 
 831 C2V_VMENTRY(void, doNotInlineOrCompile,(JNIEnv *, jobject,  jobject jvmci_method))
 832   methodHandle method = CompilerToVM::asMethod(jvmci_method);
 833   method->set_not_c1_compilable();
 834   method->set_not_c2_compilable();
 835   method->set_dont_inline(true);
 836 C2V_END
 837 
 838 C2V_VMENTRY(jint, installCode, (JNIEnv *jniEnv, jobject, jobject target, jobject compiled_code, jobject installed_code, jobject speculation_log))
 839   ResourceMark rm;
 840   HandleMark hm;
 841   Handle target_handle = JNIHandles::resolve(target);
 842   Handle compiled_code_handle = JNIHandles::resolve(compiled_code);
 843   CodeBlob* cb = NULL;
 844   Handle installed_code_handle = JNIHandles::resolve(installed_code);
 845   Handle speculation_log_handle = JNIHandles::resolve(speculation_log);
 846 
 847   JVMCICompiler* compiler = JVMCICompiler::instance(CHECK_JNI_ERR);
 848 
 849   TraceTime install_time("installCode", JVMCICompiler::codeInstallTimer());
 850   CodeInstaller installer;

 851   JVMCIEnv::CodeInstallResult result = installer.install(compiler, target_handle, compiled_code_handle, cb, installed_code_handle, speculation_log_handle, CHECK_0);
 852 
 853   if (PrintCodeCacheOnCompilation) {
 854     stringStream s;
 855     // Dump code cache  into a buffer before locking the tty,
 856     {
 857       MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
 858       CodeCache::print_summary(&s, false);
 859     }
 860     ttyLocker ttyl;
 861     tty->print_raw_cr(s.as_string());
 862   }
 863 
 864   if (result != JVMCIEnv::ok) {
 865     assert(cb == NULL, "should be");
 866   } else {
 867     if (!installed_code_handle.is_null()) {
 868       assert(installed_code_handle->is_a(InstalledCode::klass()), "wrong type");
 869       nmethod::invalidate_installed_code(installed_code_handle, CHECK_0);
 870       {


 888         assert(nm->detect_scavenge_root_oops(), "nm should be scavengable if installed_code is scavengable");
 889         if (!UseG1GC) {
 890           assert(nm->on_scavenge_root_list(), "nm should be on scavengable list");
 891         }
 892       }
 893     }
 894   }
 895   return result;
 896 C2V_END
 897 
 898 C2V_VMENTRY(jint, getMetadata, (JNIEnv *jniEnv, jobject, jobject target, jobject compiled_code, jobject metadata))
 899   ResourceMark rm;
 900   HandleMark hm;
 901 
 902   Handle target_handle = JNIHandles::resolve(target);
 903   Handle compiled_code_handle = JNIHandles::resolve(compiled_code);
 904   Handle metadata_handle = JNIHandles::resolve(metadata);
 905 
 906   CodeMetadata code_metadata;
 907   CodeBlob *cb = NULL;
 908   CodeInstaller installer;
 909 
 910   JVMCIEnv::CodeInstallResult result = installer.gather_metadata(target_handle, compiled_code_handle, code_metadata, CHECK_0);
 911   if (result != JVMCIEnv::ok) {
 912     return result;
 913   }
 914 
 915   if (code_metadata.get_nr_pc_desc() > 0) {
 916     typeArrayHandle pcArrayOop = oopFactory::new_byteArray(sizeof(PcDesc) * code_metadata.get_nr_pc_desc(), CHECK_(JVMCIEnv::cache_full));
 917     memcpy(pcArrayOop->byte_at_addr(0), code_metadata.get_pc_desc(), sizeof(PcDesc) * code_metadata.get_nr_pc_desc());
 918     HotSpotMetaData::set_pcDescBytes(metadata_handle, pcArrayOop());
 919   }
 920 
 921   if (code_metadata.get_scopes_size() > 0) {
 922     typeArrayHandle scopesArrayOop = oopFactory::new_byteArray(code_metadata.get_scopes_size(), CHECK_(JVMCIEnv::cache_full));
 923     memcpy(scopesArrayOop->byte_at_addr(0), code_metadata.get_scopes_desc(), code_metadata.get_scopes_size());
 924     HotSpotMetaData::set_scopesDescBytes(metadata_handle, scopesArrayOop());
 925   }
 926 
 927   RelocBuffer* reloc_buffer = code_metadata.get_reloc_buffer();
 928   typeArrayHandle relocArrayOop = oopFactory::new_byteArray((int) reloc_buffer->size(), CHECK_(JVMCIEnv::cache_full));
 929   if (reloc_buffer->size() > 0) {
 930     memcpy(relocArrayOop->byte_at_addr(0), reloc_buffer->begin(), reloc_buffer->size());
 931   }
 932   HotSpotMetaData::set_relocBytes(metadata_handle, relocArrayOop());
 933 
 934   const OopMapSet* oopMapSet = installer.oopMapSet();
 935   {
 936     ResourceMark mark;
 937     ImmutableOopMapBuilder builder(oopMapSet);
 938     int oopmap_size = builder.heap_size();
 939     typeArrayHandle oopMapArrayHandle = oopFactory::new_byteArray(oopmap_size, CHECK_(JVMCIEnv::cache_full));
 940     builder.generate_into((address) oopMapArrayHandle->byte_at_addr(0));
 941     HotSpotMetaData::set_oopMaps(metadata_handle, oopMapArrayHandle());
 942   }
 943 
 944   HotSpotMetaData::set_metadata(metadata_handle, NULL);









 945 
 946   ExceptionHandlerTable* handler = code_metadata.get_exception_table();
 947   int table_size = handler->size_in_bytes();
 948   typeArrayHandle exceptionArrayOop = oopFactory::new_byteArray(table_size, CHECK_(JVMCIEnv::cache_full));
 949 
 950   if (table_size > 0) {
 951     handler->copy_bytes_to((address) exceptionArrayOop->byte_at_addr(0));
 952   }
 953   HotSpotMetaData::set_exceptionBytes(metadata_handle, exceptionArrayOop());
 954 
 955   return result;
 956 C2V_END
 957 
 958 C2V_VMENTRY(void, resetCompilationStatistics, (JNIEnv *jniEnv, jobject))
 959   JVMCICompiler* compiler = JVMCICompiler::instance(CHECK);
 960   CompilerStatistics* stats = compiler->stats();
 961   stats->_standard.reset();
 962   stats->_osr.reset();
 963 C2V_END
 964 


1476 
1477 C2V_VMENTRY(int, methodDataProfileDataSize, (JNIEnv*, jobject, jlong metaspace_method_data, jint position))
1478   ResourceMark rm;
1479   MethodData* mdo = CompilerToVM::asMethodData(metaspace_method_data);
1480   ProfileData* profile_data = mdo->data_at(position);
1481   if (mdo->is_valid(profile_data)) {
1482     return profile_data->size_in_bytes();
1483   }
1484   DataLayout* data    = mdo->extra_data_base();
1485   DataLayout* end   = mdo->extra_data_limit();
1486   for (;; data = mdo->next_extra(data)) {
1487     assert(data < end, "moved past end of extra data");
1488     profile_data = data->data_in();
1489     if (mdo->dp_to_di(profile_data->dp()) == position) {
1490       return profile_data->size_in_bytes();
1491     }
1492   }
1493   THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), err_msg("Invalid profile data position %d", position));
1494 C2V_END
1495 









1496 C2V_VMENTRY(int, interpreterFrameSize, (JNIEnv*, jobject, jobject bytecode_frame_handle))
1497   if (bytecode_frame_handle == NULL) {
1498     THROW_0(vmSymbols::java_lang_NullPointerException());
1499   }
1500 
1501   oop top_bytecode_frame = JNIHandles::resolve_non_null(bytecode_frame_handle);
1502   oop bytecode_frame = top_bytecode_frame;
1503   int size = 0;
1504   int callee_parameters = 0;
1505   int callee_locals = 0;
1506   Method* method = getMethodFromHotSpotMethod(BytecodePosition::method(bytecode_frame));
1507   int extra_args = method->max_stack() - BytecodeFrame::numStack(bytecode_frame);
1508 
1509   while (bytecode_frame != NULL) {
1510     int locks = BytecodeFrame::numLocks(bytecode_frame);
1511     int temps = BytecodeFrame::numStack(bytecode_frame);
1512     bool is_top_frame = (bytecode_frame == top_bytecode_frame);
1513     Method* method = getMethodFromHotSpotMethod(BytecodePosition::method(bytecode_frame));
1514 
1515     int frame_size = BytesPerWord * Interpreter::size_activation(method->max_stack(),


1604   {CC "getMetadata",                                  CC "(" TARGET_DESCRIPTION HS_COMPILED_CODE HS_METADATA ")I",                          FN_PTR(getMetadata)},
1605   {CC "resetCompilationStatistics",                   CC "()V",                                                                             FN_PTR(resetCompilationStatistics)},
1606   {CC "disassembleCodeBlob",                          CC "(" INSTALLED_CODE ")" STRING,                                                     FN_PTR(disassembleCodeBlob)},
1607   {CC "executeInstalledCode",                         CC "([" OBJECT INSTALLED_CODE ")" OBJECT,                                             FN_PTR(executeInstalledCode)},
1608   {CC "getLineNumberTable",                           CC "(" HS_RESOLVED_METHOD ")[J",                                                      FN_PTR(getLineNumberTable)},
1609   {CC "getLocalVariableTableStart",                   CC "(" HS_RESOLVED_METHOD ")J",                                                       FN_PTR(getLocalVariableTableStart)},
1610   {CC "getLocalVariableTableLength",                  CC "(" HS_RESOLVED_METHOD ")I",                                                       FN_PTR(getLocalVariableTableLength)},
1611   {CC "reprofile",                                    CC "(" HS_RESOLVED_METHOD ")V",                                                       FN_PTR(reprofile)},
1612   {CC "invalidateInstalledCode",                      CC "(" INSTALLED_CODE ")V",                                                           FN_PTR(invalidateInstalledCode)},
1613   {CC "collectCounters",                              CC "()[J",                                                                            FN_PTR(collectCounters)},
1614   {CC "allocateCompileId",                            CC "(" HS_RESOLVED_METHOD "I)I",                                                      FN_PTR(allocateCompileId)},
1615   {CC "isMature",                                     CC "(" METASPACE_METHOD_DATA ")Z",                                                    FN_PTR(isMature)},
1616   {CC "hasCompiledCodeForOSR",                        CC "(" HS_RESOLVED_METHOD "II)Z",                                                     FN_PTR(hasCompiledCodeForOSR)},
1617   {CC "getSymbol",                                    CC "(J)" STRING,                                                                      FN_PTR(getSymbol)},
1618   {CC "getNextStackFrame",                            CC "(" HS_STACK_FRAME_REF "[" RESOLVED_METHOD "I)" HS_STACK_FRAME_REF,                FN_PTR(getNextStackFrame)},
1619   {CC "materializeVirtualObjects",                    CC "(" HS_STACK_FRAME_REF "Z)V",                                                      FN_PTR(materializeVirtualObjects)},
1620   {CC "shouldDebugNonSafepoints",                     CC "()Z",                                                                             FN_PTR(shouldDebugNonSafepoints)},
1621   {CC "writeDebugOutput",                             CC "([BII)V",                                                                         FN_PTR(writeDebugOutput)},
1622   {CC "flushDebugOutput",                             CC "()V",                                                                             FN_PTR(flushDebugOutput)},
1623   {CC "methodDataProfileDataSize",                    CC "(JI)I",                                                                           FN_PTR(methodDataProfileDataSize)},

1624   {CC "interpreterFrameSize",                         CC "(" BYTECODE_FRAME ")I",                                                           FN_PTR(interpreterFrameSize)},
1625   {CC "compileToBytecode",                            CC "(" OBJECT ")V",                                                                   FN_PTR(compileToBytecode)},
1626 };
1627 
1628 int CompilerToVM::methods_count() {
1629   return sizeof(methods) / sizeof(JNINativeMethod);
1630 }


 830 
 831 C2V_VMENTRY(void, doNotInlineOrCompile,(JNIEnv *, jobject,  jobject jvmci_method))
 832   methodHandle method = CompilerToVM::asMethod(jvmci_method);
 833   method->set_not_c1_compilable();
 834   method->set_not_c2_compilable();
 835   method->set_dont_inline(true);
 836 C2V_END
 837 
 838 C2V_VMENTRY(jint, installCode, (JNIEnv *jniEnv, jobject, jobject target, jobject compiled_code, jobject installed_code, jobject speculation_log))
 839   ResourceMark rm;
 840   HandleMark hm;
 841   Handle target_handle = JNIHandles::resolve(target);
 842   Handle compiled_code_handle = JNIHandles::resolve(compiled_code);
 843   CodeBlob* cb = NULL;
 844   Handle installed_code_handle = JNIHandles::resolve(installed_code);
 845   Handle speculation_log_handle = JNIHandles::resolve(speculation_log);
 846 
 847   JVMCICompiler* compiler = JVMCICompiler::instance(CHECK_JNI_ERR);
 848 
 849   TraceTime install_time("installCode", JVMCICompiler::codeInstallTimer());
 850   bool is_immutable_PIC = HotSpotCompiledCode::isImmutablePIC(compiled_code_handle) > 0;
 851   CodeInstaller installer(is_immutable_PIC);
 852   JVMCIEnv::CodeInstallResult result = installer.install(compiler, target_handle, compiled_code_handle, cb, installed_code_handle, speculation_log_handle, CHECK_0);
 853 
 854   if (PrintCodeCacheOnCompilation) {
 855     stringStream s;
 856     // Dump code cache  into a buffer before locking the tty,
 857     {
 858       MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
 859       CodeCache::print_summary(&s, false);
 860     }
 861     ttyLocker ttyl;
 862     tty->print_raw_cr(s.as_string());
 863   }
 864 
 865   if (result != JVMCIEnv::ok) {
 866     assert(cb == NULL, "should be");
 867   } else {
 868     if (!installed_code_handle.is_null()) {
 869       assert(installed_code_handle->is_a(InstalledCode::klass()), "wrong type");
 870       nmethod::invalidate_installed_code(installed_code_handle, CHECK_0);
 871       {


 889         assert(nm->detect_scavenge_root_oops(), "nm should be scavengable if installed_code is scavengable");
 890         if (!UseG1GC) {
 891           assert(nm->on_scavenge_root_list(), "nm should be on scavengable list");
 892         }
 893       }
 894     }
 895   }
 896   return result;
 897 C2V_END
 898 
 899 C2V_VMENTRY(jint, getMetadata, (JNIEnv *jniEnv, jobject, jobject target, jobject compiled_code, jobject metadata))
 900   ResourceMark rm;
 901   HandleMark hm;
 902 
 903   Handle target_handle = JNIHandles::resolve(target);
 904   Handle compiled_code_handle = JNIHandles::resolve(compiled_code);
 905   Handle metadata_handle = JNIHandles::resolve(metadata);
 906 
 907   CodeMetadata code_metadata;
 908   CodeBlob *cb = NULL;
 909   CodeInstaller installer(true /* immutable PIC compilation */);
 910 
 911   JVMCIEnv::CodeInstallResult result = installer.gather_metadata(target_handle, compiled_code_handle, code_metadata, CHECK_0);
 912   if (result != JVMCIEnv::ok) {
 913     return result;
 914   }
 915 
 916   if (code_metadata.get_nr_pc_desc() > 0) {
 917     typeArrayHandle pcArrayOop = oopFactory::new_byteArray(sizeof(PcDesc) * code_metadata.get_nr_pc_desc(), CHECK_(JVMCIEnv::cache_full));
 918     memcpy(pcArrayOop->byte_at_addr(0), code_metadata.get_pc_desc(), sizeof(PcDesc) * code_metadata.get_nr_pc_desc());
 919     HotSpotMetaData::set_pcDescBytes(metadata_handle, pcArrayOop());
 920   }
 921 
 922   if (code_metadata.get_scopes_size() > 0) {
 923     typeArrayHandle scopesArrayOop = oopFactory::new_byteArray(code_metadata.get_scopes_size(), CHECK_(JVMCIEnv::cache_full));
 924     memcpy(scopesArrayOop->byte_at_addr(0), code_metadata.get_scopes_desc(), code_metadata.get_scopes_size());
 925     HotSpotMetaData::set_scopesDescBytes(metadata_handle, scopesArrayOop());
 926   }
 927 
 928   RelocBuffer* reloc_buffer = code_metadata.get_reloc_buffer();
 929   typeArrayHandle relocArrayOop = oopFactory::new_byteArray((int) reloc_buffer->size(), CHECK_(JVMCIEnv::cache_full));
 930   if (reloc_buffer->size() > 0) {
 931     memcpy(relocArrayOop->byte_at_addr(0), reloc_buffer->begin(), reloc_buffer->size());
 932   }
 933   HotSpotMetaData::set_relocBytes(metadata_handle, relocArrayOop());
 934 
 935   const OopMapSet* oopMapSet = installer.oopMapSet();
 936   {
 937     ResourceMark mark;
 938     ImmutableOopMapBuilder builder(oopMapSet);
 939     int oopmap_size = builder.heap_size();
 940     typeArrayHandle oopMapArrayHandle = oopFactory::new_byteArray(oopmap_size, CHECK_(JVMCIEnv::cache_full));
 941     builder.generate_into((address) oopMapArrayHandle->byte_at_addr(0));
 942     HotSpotMetaData::set_oopMaps(metadata_handle, oopMapArrayHandle());
 943   }
 944 
 945   AOTOopRecorder* recorder = code_metadata.get_oop_recorder();
 946 
 947   int nr_meta_strings = recorder->nr_meta_strings();
 948   objArrayHandle metadataArrayHandle = oopFactory::new_objectArray(nr_meta_strings, CHECK_(JVMCIEnv::cache_full));
 949   for (int i = 0; i < nr_meta_strings; ++i) {
 950     const char* element = recorder->meta_element(i);
 951     Handle java_string = java_lang_String::create_from_str(element, CHECK_(JVMCIEnv::cache_full));
 952     metadataArrayHandle->obj_at_put(i, java_string());
 953   }
 954   HotSpotMetaData::set_metadata(metadata_handle, metadataArrayHandle());
 955 
 956   ExceptionHandlerTable* handler = code_metadata.get_exception_table();
 957   int table_size = handler->size_in_bytes();
 958   typeArrayHandle exceptionArrayOop = oopFactory::new_byteArray(table_size, CHECK_(JVMCIEnv::cache_full));
 959 
 960   if (table_size > 0) {
 961     handler->copy_bytes_to((address) exceptionArrayOop->byte_at_addr(0));
 962   }
 963   HotSpotMetaData::set_exceptionBytes(metadata_handle, exceptionArrayOop());
 964 
 965   return result;
 966 C2V_END
 967 
 968 C2V_VMENTRY(void, resetCompilationStatistics, (JNIEnv *jniEnv, jobject))
 969   JVMCICompiler* compiler = JVMCICompiler::instance(CHECK);
 970   CompilerStatistics* stats = compiler->stats();
 971   stats->_standard.reset();
 972   stats->_osr.reset();
 973 C2V_END
 974 


1486 
1487 C2V_VMENTRY(int, methodDataProfileDataSize, (JNIEnv*, jobject, jlong metaspace_method_data, jint position))
1488   ResourceMark rm;
1489   MethodData* mdo = CompilerToVM::asMethodData(metaspace_method_data);
1490   ProfileData* profile_data = mdo->data_at(position);
1491   if (mdo->is_valid(profile_data)) {
1492     return profile_data->size_in_bytes();
1493   }
1494   DataLayout* data    = mdo->extra_data_base();
1495   DataLayout* end   = mdo->extra_data_limit();
1496   for (;; data = mdo->next_extra(data)) {
1497     assert(data < end, "moved past end of extra data");
1498     profile_data = data->data_in();
1499     if (mdo->dp_to_di(profile_data->dp()) == position) {
1500       return profile_data->size_in_bytes();
1501     }
1502   }
1503   THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), err_msg("Invalid profile data position %d", position));
1504 C2V_END
1505 
1506 C2V_VMENTRY(jlong, getFingerprint, (JNIEnv*, jobject, jlong metaspace_klass))
1507   Klass *k = CompilerToVM::asKlass(metaspace_klass);
1508   if (k->is_instance_klass()) {
1509     return InstanceKlass::cast(k)->get_stored_fingerprint();
1510   } else {
1511     return 0;
1512   }
1513 C2V_END
1514 
1515 C2V_VMENTRY(int, interpreterFrameSize, (JNIEnv*, jobject, jobject bytecode_frame_handle))
1516   if (bytecode_frame_handle == NULL) {
1517     THROW_0(vmSymbols::java_lang_NullPointerException());
1518   }
1519 
1520   oop top_bytecode_frame = JNIHandles::resolve_non_null(bytecode_frame_handle);
1521   oop bytecode_frame = top_bytecode_frame;
1522   int size = 0;
1523   int callee_parameters = 0;
1524   int callee_locals = 0;
1525   Method* method = getMethodFromHotSpotMethod(BytecodePosition::method(bytecode_frame));
1526   int extra_args = method->max_stack() - BytecodeFrame::numStack(bytecode_frame);
1527 
1528   while (bytecode_frame != NULL) {
1529     int locks = BytecodeFrame::numLocks(bytecode_frame);
1530     int temps = BytecodeFrame::numStack(bytecode_frame);
1531     bool is_top_frame = (bytecode_frame == top_bytecode_frame);
1532     Method* method = getMethodFromHotSpotMethod(BytecodePosition::method(bytecode_frame));
1533 
1534     int frame_size = BytesPerWord * Interpreter::size_activation(method->max_stack(),


1623   {CC "getMetadata",                                  CC "(" TARGET_DESCRIPTION HS_COMPILED_CODE HS_METADATA ")I",                          FN_PTR(getMetadata)},
1624   {CC "resetCompilationStatistics",                   CC "()V",                                                                             FN_PTR(resetCompilationStatistics)},
1625   {CC "disassembleCodeBlob",                          CC "(" INSTALLED_CODE ")" STRING,                                                     FN_PTR(disassembleCodeBlob)},
1626   {CC "executeInstalledCode",                         CC "([" OBJECT INSTALLED_CODE ")" OBJECT,                                             FN_PTR(executeInstalledCode)},
1627   {CC "getLineNumberTable",                           CC "(" HS_RESOLVED_METHOD ")[J",                                                      FN_PTR(getLineNumberTable)},
1628   {CC "getLocalVariableTableStart",                   CC "(" HS_RESOLVED_METHOD ")J",                                                       FN_PTR(getLocalVariableTableStart)},
1629   {CC "getLocalVariableTableLength",                  CC "(" HS_RESOLVED_METHOD ")I",                                                       FN_PTR(getLocalVariableTableLength)},
1630   {CC "reprofile",                                    CC "(" HS_RESOLVED_METHOD ")V",                                                       FN_PTR(reprofile)},
1631   {CC "invalidateInstalledCode",                      CC "(" INSTALLED_CODE ")V",                                                           FN_PTR(invalidateInstalledCode)},
1632   {CC "collectCounters",                              CC "()[J",                                                                            FN_PTR(collectCounters)},
1633   {CC "allocateCompileId",                            CC "(" HS_RESOLVED_METHOD "I)I",                                                      FN_PTR(allocateCompileId)},
1634   {CC "isMature",                                     CC "(" METASPACE_METHOD_DATA ")Z",                                                    FN_PTR(isMature)},
1635   {CC "hasCompiledCodeForOSR",                        CC "(" HS_RESOLVED_METHOD "II)Z",                                                     FN_PTR(hasCompiledCodeForOSR)},
1636   {CC "getSymbol",                                    CC "(J)" STRING,                                                                      FN_PTR(getSymbol)},
1637   {CC "getNextStackFrame",                            CC "(" HS_STACK_FRAME_REF "[" RESOLVED_METHOD "I)" HS_STACK_FRAME_REF,                FN_PTR(getNextStackFrame)},
1638   {CC "materializeVirtualObjects",                    CC "(" HS_STACK_FRAME_REF "Z)V",                                                      FN_PTR(materializeVirtualObjects)},
1639   {CC "shouldDebugNonSafepoints",                     CC "()Z",                                                                             FN_PTR(shouldDebugNonSafepoints)},
1640   {CC "writeDebugOutput",                             CC "([BII)V",                                                                         FN_PTR(writeDebugOutput)},
1641   {CC "flushDebugOutput",                             CC "()V",                                                                             FN_PTR(flushDebugOutput)},
1642   {CC "methodDataProfileDataSize",                    CC "(JI)I",                                                                           FN_PTR(methodDataProfileDataSize)},
1643   {CC "getFingerprint",                               CC "(J)J",                                                                            FN_PTR(getFingerprint)},
1644   {CC "interpreterFrameSize",                         CC "(" BYTECODE_FRAME ")I",                                                           FN_PTR(interpreterFrameSize)},
1645   {CC "compileToBytecode",                            CC "(" OBJECT ")V",                                                                   FN_PTR(compileToBytecode)},
1646 };
1647 
1648 int CompilerToVM::methods_count() {
1649   return sizeof(methods) / sizeof(JNINativeMethod);
1650 }
src/share/vm/jvmci/jvmciCompilerToVM.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File