< prev index next >

src/share/vm/jvmci/jvmciCompilerToVM.cpp

Print this page




1675   DataLayout* end   = mdo->extra_data_limit();
1676   for (;; data = mdo->next_extra(data)) {
1677     assert(data < end, "moved past end of extra data");
1678     profile_data = data->data_in();
1679     if (mdo->dp_to_di(profile_data->dp()) == position) {
1680       return profile_data->size_in_bytes();
1681     }
1682   }
1683   THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), err_msg("Invalid profile data position %d", position));
1684 C2V_END
1685 
1686 C2V_VMENTRY(jlong, getFingerprint, (JNIEnv*, jobject, jlong metaspace_klass))
1687   Klass *k = CompilerToVM::asKlass(metaspace_klass);
1688   if (k->is_instance_klass()) {
1689     return InstanceKlass::cast(k)->get_stored_fingerprint();
1690   } else {
1691     return 0;
1692   }
1693 C2V_END
1694 







1695 C2V_VMENTRY(int, interpreterFrameSize, (JNIEnv*, jobject, jobject bytecode_frame_handle))
1696   if (bytecode_frame_handle == NULL) {
1697     THROW_0(vmSymbols::java_lang_NullPointerException());
1698   }
1699 
1700   oop top_bytecode_frame = JNIHandles::resolve_non_null(bytecode_frame_handle);
1701   oop bytecode_frame = top_bytecode_frame;
1702   int size = 0;
1703   int callee_parameters = 0;
1704   int callee_locals = 0;
1705   Method* method = getMethodFromHotSpotMethod(BytecodePosition::method(bytecode_frame));
1706   int extra_args = method->max_stack() - BytecodeFrame::numStack(bytecode_frame);
1707 
1708   while (bytecode_frame != NULL) {
1709     int locks = BytecodeFrame::numLocks(bytecode_frame);
1710     int temps = BytecodeFrame::numStack(bytecode_frame);
1711     bool is_top_frame = (bytecode_frame == top_bytecode_frame);
1712     Method* method = getMethodFromHotSpotMethod(BytecodePosition::method(bytecode_frame));
1713 
1714     int frame_size = BytesPerWord * Interpreter::size_activation(method->max_stack(),


1805   {CC "resetCompilationStatistics",                   CC "()V",                                                                             FN_PTR(resetCompilationStatistics)},
1806   {CC "disassembleCodeBlob",                          CC "(" INSTALLED_CODE ")" STRING,                                                     FN_PTR(disassembleCodeBlob)},
1807   {CC "executeInstalledCode",                         CC "([" OBJECT INSTALLED_CODE ")" OBJECT,                                             FN_PTR(executeInstalledCode)},
1808   {CC "getLineNumberTable",                           CC "(" HS_RESOLVED_METHOD ")[J",                                                      FN_PTR(getLineNumberTable)},
1809   {CC "getLocalVariableTableStart",                   CC "(" HS_RESOLVED_METHOD ")J",                                                       FN_PTR(getLocalVariableTableStart)},
1810   {CC "getLocalVariableTableLength",                  CC "(" HS_RESOLVED_METHOD ")I",                                                       FN_PTR(getLocalVariableTableLength)},
1811   {CC "reprofile",                                    CC "(" HS_RESOLVED_METHOD ")V",                                                       FN_PTR(reprofile)},
1812   {CC "invalidateInstalledCode",                      CC "(" INSTALLED_CODE ")V",                                                           FN_PTR(invalidateInstalledCode)},
1813   {CC "collectCounters",                              CC "()[J",                                                                            FN_PTR(collectCounters)},
1814   {CC "allocateCompileId",                            CC "(" HS_RESOLVED_METHOD "I)I",                                                      FN_PTR(allocateCompileId)},
1815   {CC "isMature",                                     CC "(" METASPACE_METHOD_DATA ")Z",                                                    FN_PTR(isMature)},
1816   {CC "hasCompiledCodeForOSR",                        CC "(" HS_RESOLVED_METHOD "II)Z",                                                     FN_PTR(hasCompiledCodeForOSR)},
1817   {CC "getSymbol",                                    CC "(J)" STRING,                                                                      FN_PTR(getSymbol)},
1818   {CC "getNextStackFrame",                            CC "(" HS_STACK_FRAME_REF "[" RESOLVED_METHOD "I)" HS_STACK_FRAME_REF,                FN_PTR(getNextStackFrame)},
1819   {CC "materializeVirtualObjects",                    CC "(" HS_STACK_FRAME_REF "Z)V",                                                      FN_PTR(materializeVirtualObjects)},
1820   {CC "shouldDebugNonSafepoints",                     CC "()Z",                                                                             FN_PTR(shouldDebugNonSafepoints)},
1821   {CC "writeDebugOutput",                             CC "([BII)V",                                                                         FN_PTR(writeDebugOutput)},
1822   {CC "flushDebugOutput",                             CC "()V",                                                                             FN_PTR(flushDebugOutput)},
1823   {CC "methodDataProfileDataSize",                    CC "(JI)I",                                                                           FN_PTR(methodDataProfileDataSize)},
1824   {CC "getFingerprint",                               CC "(J)J",                                                                            FN_PTR(getFingerprint)},

1825   {CC "interpreterFrameSize",                         CC "(" BYTECODE_FRAME ")I",                                                           FN_PTR(interpreterFrameSize)},
1826   {CC "compileToBytecode",                            CC "(" OBJECT ")V",                                                                   FN_PTR(compileToBytecode)},
1827   {CC "getFlagValue",                                 CC "(" STRING ")" OBJECT,                                                             FN_PTR(getFlagValue)},
1828 };
1829 
1830 int CompilerToVM::methods_count() {
1831   return sizeof(methods) / sizeof(JNINativeMethod);
1832 }


1675   DataLayout* end   = mdo->extra_data_limit();
1676   for (;; data = mdo->next_extra(data)) {
1677     assert(data < end, "moved past end of extra data");
1678     profile_data = data->data_in();
1679     if (mdo->dp_to_di(profile_data->dp()) == position) {
1680       return profile_data->size_in_bytes();
1681     }
1682   }
1683   THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), err_msg("Invalid profile data position %d", position));
1684 C2V_END
1685 
1686 C2V_VMENTRY(jlong, getFingerprint, (JNIEnv*, jobject, jlong metaspace_klass))
1687   Klass *k = CompilerToVM::asKlass(metaspace_klass);
1688   if (k->is_instance_klass()) {
1689     return InstanceKlass::cast(k)->get_stored_fingerprint();
1690   } else {
1691     return 0;
1692   }
1693 C2V_END
1694 
1695 C2V_VMENTRY(jobject, getHostClass, (JNIEnv*, jobject, jobject jvmci_type))
1696   InstanceKlass* k = InstanceKlass::cast(CompilerToVM::asKlass(jvmci_type));
1697   InstanceKlass* host = k->host_klass();
1698   oop result = CompilerToVM::get_jvmci_type(host, CHECK_NULL);
1699   return JNIHandles::make_local(THREAD, result);
1700 C2V_END
1701 
1702 C2V_VMENTRY(int, interpreterFrameSize, (JNIEnv*, jobject, jobject bytecode_frame_handle))
1703   if (bytecode_frame_handle == NULL) {
1704     THROW_0(vmSymbols::java_lang_NullPointerException());
1705   }
1706 
1707   oop top_bytecode_frame = JNIHandles::resolve_non_null(bytecode_frame_handle);
1708   oop bytecode_frame = top_bytecode_frame;
1709   int size = 0;
1710   int callee_parameters = 0;
1711   int callee_locals = 0;
1712   Method* method = getMethodFromHotSpotMethod(BytecodePosition::method(bytecode_frame));
1713   int extra_args = method->max_stack() - BytecodeFrame::numStack(bytecode_frame);
1714 
1715   while (bytecode_frame != NULL) {
1716     int locks = BytecodeFrame::numLocks(bytecode_frame);
1717     int temps = BytecodeFrame::numStack(bytecode_frame);
1718     bool is_top_frame = (bytecode_frame == top_bytecode_frame);
1719     Method* method = getMethodFromHotSpotMethod(BytecodePosition::method(bytecode_frame));
1720 
1721     int frame_size = BytesPerWord * Interpreter::size_activation(method->max_stack(),


1812   {CC "resetCompilationStatistics",                   CC "()V",                                                                             FN_PTR(resetCompilationStatistics)},
1813   {CC "disassembleCodeBlob",                          CC "(" INSTALLED_CODE ")" STRING,                                                     FN_PTR(disassembleCodeBlob)},
1814   {CC "executeInstalledCode",                         CC "([" OBJECT INSTALLED_CODE ")" OBJECT,                                             FN_PTR(executeInstalledCode)},
1815   {CC "getLineNumberTable",                           CC "(" HS_RESOLVED_METHOD ")[J",                                                      FN_PTR(getLineNumberTable)},
1816   {CC "getLocalVariableTableStart",                   CC "(" HS_RESOLVED_METHOD ")J",                                                       FN_PTR(getLocalVariableTableStart)},
1817   {CC "getLocalVariableTableLength",                  CC "(" HS_RESOLVED_METHOD ")I",                                                       FN_PTR(getLocalVariableTableLength)},
1818   {CC "reprofile",                                    CC "(" HS_RESOLVED_METHOD ")V",                                                       FN_PTR(reprofile)},
1819   {CC "invalidateInstalledCode",                      CC "(" INSTALLED_CODE ")V",                                                           FN_PTR(invalidateInstalledCode)},
1820   {CC "collectCounters",                              CC "()[J",                                                                            FN_PTR(collectCounters)},
1821   {CC "allocateCompileId",                            CC "(" HS_RESOLVED_METHOD "I)I",                                                      FN_PTR(allocateCompileId)},
1822   {CC "isMature",                                     CC "(" METASPACE_METHOD_DATA ")Z",                                                    FN_PTR(isMature)},
1823   {CC "hasCompiledCodeForOSR",                        CC "(" HS_RESOLVED_METHOD "II)Z",                                                     FN_PTR(hasCompiledCodeForOSR)},
1824   {CC "getSymbol",                                    CC "(J)" STRING,                                                                      FN_PTR(getSymbol)},
1825   {CC "getNextStackFrame",                            CC "(" HS_STACK_FRAME_REF "[" RESOLVED_METHOD "I)" HS_STACK_FRAME_REF,                FN_PTR(getNextStackFrame)},
1826   {CC "materializeVirtualObjects",                    CC "(" HS_STACK_FRAME_REF "Z)V",                                                      FN_PTR(materializeVirtualObjects)},
1827   {CC "shouldDebugNonSafepoints",                     CC "()Z",                                                                             FN_PTR(shouldDebugNonSafepoints)},
1828   {CC "writeDebugOutput",                             CC "([BII)V",                                                                         FN_PTR(writeDebugOutput)},
1829   {CC "flushDebugOutput",                             CC "()V",                                                                             FN_PTR(flushDebugOutput)},
1830   {CC "methodDataProfileDataSize",                    CC "(JI)I",                                                                           FN_PTR(methodDataProfileDataSize)},
1831   {CC "getFingerprint",                               CC "(J)J",                                                                            FN_PTR(getFingerprint)},
1832   {CC "getHostClass",                                 CC "(" HS_RESOLVED_KLASS ")" HS_RESOLVED_KLASS,                                       FN_PTR(getHostClass)},
1833   {CC "interpreterFrameSize",                         CC "(" BYTECODE_FRAME ")I",                                                           FN_PTR(interpreterFrameSize)},
1834   {CC "compileToBytecode",                            CC "(" OBJECT ")V",                                                                   FN_PTR(compileToBytecode)},
1835   {CC "getFlagValue",                                 CC "(" STRING ")" OBJECT,                                                             FN_PTR(getFlagValue)},
1836 };
1837 
1838 int CompilerToVM::methods_count() {
1839   return sizeof(methods) / sizeof(JNINativeMethod);
1840 }
< prev index next >