From c6df1e3cbfa7313007ee5fd4a5a6657a28627313 Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Mon, 4 Jul 2016 10:15:47 +0100 Subject: Never go to resolution while inspecting inlined frames. Instead, do a manual inspection and decoding of the invoke with the dex cache. Also update oatdump to dump types in the dex cache. bug:27858645 Change-Id: I7c0b612ee96e6865fa438c3a1d253686231337bd test:run-test --- runtime/stack.cc | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) (limited to 'runtime/stack.cc') diff --git a/runtime/stack.cc b/runtime/stack.cc index a5ca527aa2..1d913f2222 100644 --- a/runtime/stack.cc +++ b/runtime/stack.cc @@ -131,16 +131,10 @@ ArtMethod* StackVisitor::GetMethod() const { const OatQuickMethodHeader* method_header = GetCurrentOatQuickMethodHeader(); CodeInfoEncoding encoding = method_header->GetOptimizedCodeInfo().ExtractEncoding(); DCHECK(walk_kind_ != StackWalkKind::kSkipInlinedFrames); - bool allow_resolve = walk_kind_ != StackWalkKind::kIncludeInlinedFramesNoResolve; - return allow_resolve - ? GetResolvedMethod(*GetCurrentQuickFrame(), - inline_info, - encoding.inline_info_encoding, - depth_in_stack_map) - : GetResolvedMethod(*GetCurrentQuickFrame(), - inline_info, - encoding.inline_info_encoding, - depth_in_stack_map); + return GetResolvedMethod(*GetCurrentQuickFrame(), + inline_info, + encoding.inline_info_encoding, + depth_in_stack_map); } else { return *cur_quick_frame_; } @@ -791,8 +785,7 @@ void StackVisitor::WalkStack(bool include_transitions) { cur_oat_quick_method_header_ = method->GetOatQuickMethodHeader(cur_quick_frame_pc_); SanityCheckFrame(); - if ((walk_kind_ == StackWalkKind::kIncludeInlinedFrames || - walk_kind_ == StackWalkKind::kIncludeInlinedFramesNoResolve) + if ((walk_kind_ == StackWalkKind::kIncludeInlinedFrames) && (cur_oat_quick_method_header_ != nullptr) && cur_oat_quick_method_header_->IsOptimized()) { CodeInfo code_info = cur_oat_quick_method_header_->GetOptimizedCodeInfo(); -- cgit v1.2.3-59-g8ed1b