diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2020-09-01 15:02:00 +0100 |
---|---|---|
committer | Nicolas Geoffray <ngeoffray@google.com> | 2020-09-02 13:10:42 +0000 |
commit | 6624d58c11b43a10c802037bf1c5754ca276156c (patch) | |
tree | 11e6ae686e70c091d50893f1169131c4c31081ad /runtime/quick_exception_handler.cc | |
parent | f9dbb97a1625b61a395406351e042921f9cfb455 (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.cc | 2 |
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) { |