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 }
|