Fix bug in StackVisitor::GetVReg.
Floats can be stored in core registers within compiled code, so use the
representation returned by the stack maps to know which register to read
a value.
Bug: 147572335
Test: 457-regs
Change-Id: Ibe6642f2fae8206f2c230006ae85d73b47501c3b
diff --git a/runtime/quick_exception_handler.cc b/runtime/quick_exception_handler.cc
index 8c68c5c..5f497af 100644
--- a/runtime/quick_exception_handler.cc
+++ b/runtime/quick_exception_handler.cc
@@ -504,7 +504,7 @@
case DexRegisterLocation::Kind::kInFpuRegister:
case DexRegisterLocation::Kind::kInFpuRegisterHigh: {
uint32_t reg = vreg_map[vreg].GetMachineRegister();
- bool result = GetRegisterIfAccessible(reg, ToVRegKind(location), &value);
+ bool result = GetRegisterIfAccessible(reg, location, &value);
CHECK(result);
if (location == DexRegisterLocation::Kind::kInRegister) {
if (((1u << reg) & register_mask) != 0) {