More stack map dumping.
Change-Id: I1f734c0c9eabda1cc6adaf32579e4c3be4a45c9a
diff --git a/runtime/stack_map.cc b/runtime/stack_map.cc
index f8fc2a9..741cd90 100644
--- a/runtime/stack_map.cc
+++ b/runtime/stack_map.cc
@@ -19,6 +19,7 @@
#include <stdint.h>
#include "indenter.h"
+#include "invoke_type.h"
namespace art {
@@ -207,6 +208,13 @@
*this, encoding, number_of_dex_registers);
dex_register_map.Dump(os, code_info, number_of_dex_registers);
}
+ if (HasInlineInfo(encoding)) {
+ InlineInfo inline_info = code_info.GetInlineInfoOf(*this, encoding);
+ // We do not know the length of the dex register maps of inlined frames
+ // at this level, so we just pass null to `InlineInfo::Dump` to tell
+ // it not to look at these maps.
+ inline_info.Dump(os, code_info, nullptr);
+ }
}
void InlineInfo::Dump(std::ostream& os,
@@ -220,9 +228,11 @@
indented_os << " At depth " << i
<< std::hex
<< " (dex_pc=0x" << GetDexPcAtDepth(i)
- << ", method_index=0x" << GetMethodIndexAtDepth(i)
+ << std::dec
+ << ", method_index=" << GetMethodIndexAtDepth(i)
+ << ", invoke_type=" << static_cast<InvokeType>(GetInvokeTypeAtDepth(i))
<< ")\n";
- if (HasDexRegisterMapAtDepth(i)) {
+ if (HasDexRegisterMapAtDepth(i) && (number_of_dex_registers != nullptr)) {
StackMapEncoding encoding = code_info.ExtractEncoding();
DexRegisterMap dex_register_map =
code_info.GetDexRegisterMapAtDepth(i, *this, encoding, number_of_dex_registers[i]);