Add stack map fast path for GC.
Test: test-art-host-gtest-stack_map_test
Change-Id: Ia04a07b560fcce2fb955d66d1924ee224dec420d
diff --git a/runtime/thread.cc b/runtime/thread.cc
index 69ac01e..0703a07 100644
--- a/runtime/thread.cc
+++ b/runtime/thread.cc
@@ -3604,7 +3604,9 @@
StackReference<mirror::Object>* vreg_base = reinterpret_cast<StackReference<mirror::Object>*>(
reinterpret_cast<uintptr_t>(cur_quick_frame));
uintptr_t native_pc_offset = method_header->NativeQuickPcOffset(GetCurrentQuickFramePc());
- CodeInfo code_info(method_header);
+ CodeInfo code_info(method_header, kPrecise
+ ? CodeInfo::DecodeFlags::Default // We will need dex register maps.
+ : CodeInfo::DecodeFlags::GcMasksOnly);
StackMap map = code_info.GetStackMapForNativePcOffset(native_pc_offset);
DCHECK(map.IsValid());
@@ -3621,7 +3623,7 @@
vreg_info.VisitStack(&new_ref, i, this);
if (ref != new_ref) {
ref_addr->Assign(new_ref);
- }
+ }
}
}
}