Add new_array type info to dex dump output.
Also cleaned up a bit of the field printing.
Change-Id: Ia731d58b16f554fde9a9ac733f4d4f0148e55ac9
diff --git a/src/dex_instruction.cc b/src/dex_instruction.cc
index d06a346..80a7d9d 100644
--- a/src/dex_instruction.cc
+++ b/src/dex_instruction.cc
@@ -309,28 +309,17 @@
break;
case k21c: {
switch (insn.opcode) {
- case CHECK_CAST:
- if (file != NULL) {
- os << StringPrintf("check-cast v%d, %s // type@%d", insn.vA,
- file->StringByTypeIdx(insn.vB), insn.vB);
- break;
- } // else fall-through
- case CONST_CLASS:
- if (file != NULL) {
- os << StringPrintf("const-class v%d, %s // type@%d", insn.vA,
- file->StringByTypeIdx(insn.vB), insn.vB);
- break;
- } // else fall-through
case CONST_STRING:
if (file != NULL) {
os << StringPrintf("const-string v%d, \"%s\" // string@%d", insn.vA,
file->StringDataByIdx(insn.vB), insn.vB);
break;
} // else fall-through
+ case CHECK_CAST:
+ case CONST_CLASS:
case NEW_INSTANCE:
if (file != NULL) {
- os << StringPrintf("new-instance v%d, %s // type@%d", insn.vA,
- file->StringByTypeIdx(insn.vB), insn.vB);
+ os << opcode << " " << PrettyType(insn.vB, *file) << " // type@" << insn.vB;
break;
} // else fall-through
case SGET:
@@ -341,11 +330,7 @@
case SGET_CHAR:
case SGET_SHORT:
if (file != NULL) {
- const DexFile::FieldId& field_id = file->GetFieldId(insn.vB);
- os << StringPrintf("%s v%d, (%s) %s.%s // field@%d", opcode, insn.vA,
- file->GetFieldTypeDescriptor(field_id),
- file->GetFieldDeclaringClassDescriptor(field_id),
- file->GetFieldName(field_id), insn.vB);
+ os << opcode << " " << PrettyField(insn.vB, *file, true) << " // field@" << insn.vB;
break;
} // else fall-through
case SPUT:
@@ -356,11 +341,7 @@
case SPUT_CHAR:
case SPUT_SHORT:
if (file != NULL) {
- const DexFile::FieldId& field_id = file->GetFieldId(insn.vB);
- os << StringPrintf("%s (%s) %s.%s, v%d // field@%d", opcode,
- file->GetFieldTypeDescriptor(field_id),
- file->GetFieldDeclaringClassDescriptor(field_id),
- file->GetFieldName(field_id), insn.vA, insn.vB);
+ os << opcode << " " << PrettyField(insn.vB, *file, true) << " // field@" << insn.vB;
break;
} // else fall-through
default:
@@ -383,11 +364,7 @@
case IGET_CHAR:
case IGET_SHORT:
if (file != NULL) {
- const DexFile::FieldId& field_id = file->GetFieldId(insn.vC);
- os << StringPrintf("%s v%d, v%d, (%s) %s.%s // field@%d", opcode, insn.vA, insn.vB,
- file->GetFieldTypeDescriptor(field_id),
- file->GetFieldDeclaringClassDescriptor(field_id),
- file->GetFieldName(field_id), insn.vC);
+ os << PrettyField(insn.vC, *file, true) << " // field@" << insn.vC;
break;
} // else fall-through
case IPUT:
@@ -398,17 +375,17 @@
case IPUT_CHAR:
case IPUT_SHORT:
if (file != NULL) {
- const DexFile::FieldId& field_id = file->GetFieldId(insn.vC);
- os << StringPrintf("%s v%d, (%s) %s.%s, v%d // field@%d", opcode, insn.vA,
- file->GetFieldTypeDescriptor(field_id),
- file->GetFieldDeclaringClassDescriptor(field_id),
- file->GetFieldName(field_id), insn.vB, insn.vC);
+ os << opcode << " " << PrettyField(insn.vC, *file, true) << " // field@" << insn.vB;
break;
} // else fall-through
case INSTANCE_OF:
if (file != NULL) {
- os << StringPrintf("instance-of v%d, v%d, %s // type@%d", insn.vA, insn.vB,
- file->StringByTypeIdx(insn.vC), insn.vC);
+ os << opcode << " " << PrettyType(insn.vC, *file) << " // type@" << insn.vC;
+ break;
+ }
+ case NEW_ARRAY:
+ if (file != NULL) {
+ os << opcode << " " << PrettyType(insn.vC, *file) << " // type@" << insn.vC;
break;
} // else fall-through
default: