summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/verifier/method_verifier.cc11
-rw-r--r--runtime/verifier/method_verifier.h4
2 files changed, 12 insertions, 3 deletions
diff --git a/runtime/verifier/method_verifier.cc b/runtime/verifier/method_verifier.cc
index 416ada84cd..afb3224944 100644
--- a/runtime/verifier/method_verifier.cc
+++ b/runtime/verifier/method_verifier.cc
@@ -1685,10 +1685,15 @@ void MethodVerifier::Dump(VariableIndentationOutputStream* vios) {
for (const DexInstructionPcPair& inst : code_item_accessor_) {
const size_t dex_pc = inst.DexPc();
- RegisterLine* reg_line = reg_table_.GetLine(dex_pc);
- if (reg_line != nullptr) {
- vios->Stream() << reg_line->Dump(this) << "\n";
+
+ // Might be asked to dump before the table is initialized.
+ if (reg_table_.IsInitialized()) {
+ RegisterLine* reg_line = reg_table_.GetLine(dex_pc);
+ if (reg_line != nullptr) {
+ vios->Stream() << reg_line->Dump(this) << "\n";
+ }
}
+
vios->Stream()
<< StringPrintf("0x%04zx", dex_pc) << ": " << GetInstructionFlags(dex_pc).ToString() << " ";
const bool kDumpHexOfInstruction = false;
diff --git a/runtime/verifier/method_verifier.h b/runtime/verifier/method_verifier.h
index cadf4eb0ba..26c598f224 100644
--- a/runtime/verifier/method_verifier.h
+++ b/runtime/verifier/method_verifier.h
@@ -77,6 +77,10 @@ class PcToRegisterLineTable {
void Init(RegisterTrackingMode mode, InstructionFlags* flags, uint32_t insns_size,
uint16_t registers_size, MethodVerifier* verifier);
+ bool IsInitialized() const {
+ return !register_lines_.empty();
+ }
+
RegisterLine* GetLine(size_t idx) const {
return register_lines_[idx].get();
}