diff options
| author | Ben Cheng <bccheng@android.com> | 2011-03-23 14:37:40 -0700 |
|---|---|---|
| committer | Ben Cheng <bccheng@android.com> | 2011-03-24 12:05:24 -0700 |
| commit | 4a93f98b174701daf68f9b3a96faf76b54c9caea (patch) | |
| tree | 8b55ff9736edfe6fcc8f990c864792c1cd34c8a0 /vm/compiler/codegen/arm/ArchUtility.c | |
| parent | f54258b98c9ab941881625e5509bb902088a99e6 (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.c | 1 |
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; |
