From 6624d58c11b43a10c802037bf1c5754ca276156c Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Tue, 1 Sep 2020 15:02:00 +0100 Subject: 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 --- runtime/quick_exception_handler.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'runtime/quick_exception_handler.cc') diff --git a/runtime/quick_exception_handler.cc b/runtime/quick_exception_handler.cc index 8c68c5c627..5f497af46a 100644 --- a/runtime/quick_exception_handler.cc +++ b/runtime/quick_exception_handler.cc @@ -504,7 +504,7 @@ class DeoptimizeStackVisitor final : public StackVisitor { 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) { -- cgit v1.2.3-59-g8ed1b