diff options
Diffstat (limited to 'runtime/thread.cc')
-rw-r--r-- | runtime/thread.cc | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/runtime/thread.cc b/runtime/thread.cc index 00a66d7e36..7ed0cb4ea9 100644 --- a/runtime/thread.cc +++ b/runtime/thread.cc @@ -55,6 +55,7 @@ #include "monitor.h" #include "object_utils.h" #include "quick_exception_handler.h" +#include "quick/quick_method_frame_info.h" #include "reflection.h" #include "runtime.h" #include "scoped_thread_state_change.h" @@ -2019,9 +2020,7 @@ class ReferenceMapVisitor : public StackVisitor { const uint8_t* reg_bitmap = map.FindBitMap(GetNativePcOffset()); DCHECK(reg_bitmap != nullptr); const VmapTable vmap_table(m->GetVmapTable()); - uint32_t core_spills = m->GetCoreSpillMask(); - uint32_t fp_spills = m->GetFpSpillMask(); - size_t frame_size = m->GetFrameSizeInBytes(); + QuickMethodFrameInfo frame_info = m->GetQuickFrameInfo(); // For all dex registers in the bitmap mirror::ArtMethod** cur_quick_frame = GetCurrentQuickFrame(); DCHECK(cur_quick_frame != nullptr); @@ -2030,7 +2029,8 @@ class ReferenceMapVisitor : public StackVisitor { if (TestBitmap(reg, reg_bitmap)) { uint32_t vmap_offset; if (vmap_table.IsInContext(reg, kReferenceVReg, &vmap_offset)) { - int vmap_reg = vmap_table.ComputeRegister(core_spills, vmap_offset, kReferenceVReg); + int vmap_reg = vmap_table.ComputeRegister(frame_info.CoreSpillMask(), vmap_offset, + kReferenceVReg); // This is sound as spilled GPRs will be word sized (ie 32 or 64bit). mirror::Object** ref_addr = reinterpret_cast<mirror::Object**>(GetGPRAddress(vmap_reg)); if (*ref_addr != nullptr) { @@ -2039,8 +2039,8 @@ class ReferenceMapVisitor : public StackVisitor { } else { StackReference<mirror::Object>* ref_addr = reinterpret_cast<StackReference<mirror::Object>*>( - GetVRegAddr(cur_quick_frame, code_item, core_spills, fp_spills, frame_size, - reg)); + GetVRegAddr(cur_quick_frame, code_item, frame_info.CoreSpillMask(), + frame_info.FpSpillMask(), frame_info.FrameSizeInBytes(), reg)); mirror::Object* ref = ref_addr->AsMirrorPtr(); if (ref != nullptr) { mirror::Object* new_ref = ref; |