API change in StackVisitor::GetVReg*.
- Remove GetVReg() and SetVReg() that were expecting to always succeed.
- Change Quick-only methods to take a FromQuickCode suffix.
- Change deopt to use dead values when GetVReg does not succeed:
the optimizing compiler will not have a location for uninitialized
Dex registers and potentially dead registers.
Change-Id: Ida05773a97aff8aa69e0caf42ea961f80f854b77
diff --git a/oatdump/oatdump.cc b/oatdump/oatdump.cc
index 9ae3b79..9512376 100644
--- a/oatdump/oatdump.cc
+++ b/oatdump/oatdump.cc
@@ -1138,10 +1138,13 @@
os << "\n\tlocals:";
}
- uint32_t offset = StackVisitor::GetVRegOffset(code_item, oat_method.GetCoreSpillMask(),
- oat_method.GetFpSpillMask(),
- oat_method.GetFrameSizeInBytes(), reg,
- GetInstructionSet());
+ uint32_t offset = StackVisitor::GetVRegOffsetFromQuickCode(
+ code_item,
+ oat_method.GetCoreSpillMask(),
+ oat_method.GetFpSpillMask(),
+ oat_method.GetFrameSizeInBytes(),
+ reg,
+ GetInstructionSet());
os << " v" << reg << "[sp + #" << offset << "]";
}
@@ -1170,10 +1173,13 @@
: oat_method.GetCoreSpillMask();
os << (is_float ? "fr" : "r") << vmap_table.ComputeRegister(spill_mask, vmap_offset, kind);
} else {
- uint32_t offset = StackVisitor::GetVRegOffset(code_item, oat_method.GetCoreSpillMask(),
- oat_method.GetFpSpillMask(),
- oat_method.GetFrameSizeInBytes(), reg,
- GetInstructionSet());
+ uint32_t offset = StackVisitor::GetVRegOffsetFromQuickCode(
+ code_item,
+ oat_method.GetCoreSpillMask(),
+ oat_method.GetFpSpillMask(),
+ oat_method.GetFrameSizeInBytes(),
+ reg,
+ GetInstructionSet());
os << "[sp + #" << offset << "]";
}
}