aboutsummaryrefslogtreecommitdiff
path: root/vm/compiler/codegen/arm/ArchUtility.c
diff options
context:
space:
mode:
authorBen Cheng <bccheng@android.com>2011-03-23 14:37:40 -0700
committerBen Cheng <bccheng@android.com>2011-03-24 12:05:24 -0700
commit4a93f98b174701daf68f9b3a96faf76b54c9caea (patch)
tree8b55ff9736edfe6fcc8f990c864792c1cd34c8a0 /vm/compiler/codegen/arm/ArchUtility.c
parentf54258b98c9ab941881625e5509bb902088a99e6 (diff)
Dump the current code stream when the assembler fails on size issues.
Since the assembler is very robust and will recover from such problems, adding the verbose/noisy mode will make it easier to detect overly aggressive optimizations that don't actually work. Example: D/dalvikvm( 2348): Assembler abort #1 on 1 D/dalvikvm( 2348): kThumbBCond@16: delta=260 : Instruction at 0x16 is a conditional branch: D/dalvikvm( 2348): 0x16 (0016): beq 0x0000001a (L0xb6c0c) : Label at L0xb6c0c is a PC reconstruction cell: D/dalvikvm( 2348): L0xb6c0c: D/dalvikvm( 2348): -------- reconstruct dalvik PC : 0x401854d6 @ +0x002b D/dalvikvm( 2348): 0x11e (011e): ldr r0, [r15pc, #0] D/dalvikvm( 2348): 0x122 (0122): b 0x00000126 (L0xb685c) where 0x11e - 0x16 - 4 = 260 Change-Id: Icbc3dae581949f5976722e24e38f04ec882c7d79
Diffstat (limited to 'vm/compiler/codegen/arm/ArchUtility.c')
-rw-r--r--vm/compiler/codegen/arm/ArchUtility.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/vm/compiler/codegen/arm/ArchUtility.c b/vm/compiler/codegen/arm/ArchUtility.c
index 961a2e17e..fb28e2605 100644
--- a/vm/compiler/codegen/arm/ArchUtility.c
+++ b/vm/compiler/codegen/arm/ArchUtility.c
@@ -349,6 +349,7 @@ void dvmDumpLIRInsn(LIR *arg, unsigned char *baseAddr)
LOGD("%p (%04x): .align4\n", baseAddr + offset, offset);
break;
case kArmPseudoPCReconstructionCell:
+ LOGD("L%p:\n", lir);
LOGD("-------- reconstruct dalvik PC : 0x%04x @ +0x%04x\n", dest,
lir->operands[1]);
break;