summaryrefslogtreecommitdiff
path: root/runtime/quick_exception_handler.cc
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2020-09-01 15:02:00 +0100
committerNicolas Geoffray <ngeoffray@google.com>2020-09-02 13:10:42 +0000
commit6624d58c11b43a10c802037bf1c5754ca276156c (patch)
tree11e6ae686e70c091d50893f1169131c4c31081ad /runtime/quick_exception_handler.cc
parentf9dbb97a1625b61a395406351e042921f9cfb455 (diff)
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
Diffstat (limited to 'runtime/quick_exception_handler.cc')
-rw-r--r--runtime/quick_exception_handler.cc2
1 files changed, 1 insertions, 1 deletions
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) {