From 547a2b20f442ac0310e3e78cbf614bb2ed6f1e58 Mon Sep 17 00:00:00 2001 From: Bill Buzbee Date: Thu, 4 Apr 2013 19:53:24 +0000 Subject: [PATCH] Revert "Tiny optimization for complier templates for arm." This reverts commit 87bc7988cdb4e61421a3e701e84f7070f603635d No obvious problems with this change - but reverting to aid in tracking down bug: 8543495 NCs in Play Store : >>> com.android.vending Change-Id: I8bd6dbe6a7b3a4650a5e857a5a529cde6569b987 --- vm/compiler/template/armv5te/TEMPLATE_MUL_LONG.S | 5 +++-- vm/compiler/template/armv5te/TEMPLATE_RETURN.S | 2 +- vm/compiler/template/armv5te/TEMPLATE_STRING_INDEXOF.S | 9 ++++----- .../template/out/CompilerTemplateAsm-armv5te-vfp.S | 18 +++++++++--------- vm/compiler/template/out/CompilerTemplateAsm-armv5te.S | 18 +++++++++--------- .../template/out/CompilerTemplateAsm-armv7-a-neon.S | 18 +++++++++--------- vm/compiler/template/out/CompilerTemplateAsm-armv7-a.S | 18 +++++++++--------- 7 files changed, 44 insertions(+), 44 deletions(-) diff --git a/vm/compiler/template/armv5te/TEMPLATE_MUL_LONG.S b/vm/compiler/template/armv5te/TEMPLATE_MUL_LONG.S index 6652b71a8..8a9b11574 100644 --- a/vm/compiler/template/armv5te/TEMPLATE_MUL_LONG.S +++ b/vm/compiler/template/armv5te/TEMPLATE_MUL_LONG.S @@ -22,6 +22,7 @@ mul ip, r2, r1 @ ip<- ZxW umull r9, r10, r2, r0 @ r9/r10 <- ZxX mla r2, r0, r3, ip @ r2<- YxX + (ZxW) - mov r0, r9 - add r1, r2, r10 @ r1<- r10 + low(ZxW + (YxX)) + add r10, r2, r10 @ r10<- r10 + low(ZxW + (YxX)) + mov r0,r9 + mov r1,r10 bx lr diff --git a/vm/compiler/template/armv5te/TEMPLATE_RETURN.S b/vm/compiler/template/armv5te/TEMPLATE_RETURN.S index e8e2d5273..b10afcf3f 100644 --- a/vm/compiler/template/armv5te/TEMPLATE_RETURN.S +++ b/vm/compiler/template/armv5te/TEMPLATE_RETURN.S @@ -17,12 +17,12 @@ ldr r10, [r0, #offStackSaveArea_prevFrame] @ r10<- saveArea->prevFrame ldrb r8, [rSELF, #offThread_breakFlags] @ r8<- breakFlags ldr rPC, [r0, #offStackSaveArea_savedPc] @ rPC<- saveArea->savedPc - ldr r2, [r10, #(offStackSaveArea_method - sizeofStackSaveArea)] #if !defined(WITH_SELF_VERIFICATION) ldr r9, [r0, #offStackSaveArea_returnAddr] @ r9<- chaining cell ret #else mov r9, #0 @ disable chaining #endif + ldr r2, [r10, #(offStackSaveArea_method - sizeofStackSaveArea)] @ r2<- method we're returning to cmp r2, #0 @ break frame? #if !defined(WITH_SELF_VERIFICATION) diff --git a/vm/compiler/template/armv5te/TEMPLATE_STRING_INDEXOF.S b/vm/compiler/template/armv5te/TEMPLATE_STRING_INDEXOF.S index d97037218..bdfdf28f5 100644 --- a/vm/compiler/template/armv5te/TEMPLATE_STRING_INDEXOF.S +++ b/vm/compiler/template/armv5te/TEMPLATE_STRING_INDEXOF.S @@ -15,23 +15,22 @@ * r2: Starting offset in string data */ - ldr r3, [r0, #STRING_FIELDOFF_VALUE] ldr r7, [r0, #STRING_FIELDOFF_OFFSET] ldr r8, [r0, #STRING_FIELDOFF_COUNT] - + ldr r0, [r0, #STRING_FIELDOFF_VALUE] /* * At this point, we have: + * r0: object pointer * r1: char to match * r2: starting offset - * r3: object pointer (final result -> r0) * r7: offset * r8: string length */ /* Build pointer to start of string data */ - add r3, #16 - add r0, r3, r7, lsl #1 + add r0, #16 + add r0, r0, r7, lsl #1 /* Save a copy of starting data in r7 */ mov r7, r0 diff --git a/vm/compiler/template/out/CompilerTemplateAsm-armv5te-vfp.S b/vm/compiler/template/out/CompilerTemplateAsm-armv5te-vfp.S index 7ba1596ae..27319e722 100644 --- a/vm/compiler/template/out/CompilerTemplateAsm-armv5te-vfp.S +++ b/vm/compiler/template/out/CompilerTemplateAsm-armv5te-vfp.S @@ -178,12 +178,12 @@ dvmCompiler_TEMPLATE_RETURN: ldr r10, [r0, #offStackSaveArea_prevFrame] @ r10<- saveArea->prevFrame ldrb r8, [rSELF, #offThread_breakFlags] @ r8<- breakFlags ldr rPC, [r0, #offStackSaveArea_savedPc] @ rPC<- saveArea->savedPc - ldr r2, [r10, #(offStackSaveArea_method - sizeofStackSaveArea)] #if !defined(WITH_SELF_VERIFICATION) ldr r9, [r0, #offStackSaveArea_returnAddr] @ r9<- chaining cell ret #else mov r9, #0 @ disable chaining #endif + ldr r2, [r10, #(offStackSaveArea_method - sizeofStackSaveArea)] @ r2<- method we're returning to cmp r2, #0 @ break frame? #if !defined(WITH_SELF_VERIFICATION) @@ -520,8 +520,9 @@ dvmCompiler_TEMPLATE_MUL_LONG: mul ip, r2, r1 @ ip<- ZxW umull r9, r10, r2, r0 @ r9/r10 <- ZxX mla r2, r0, r3, ip @ r2<- YxX + (ZxW) - mov r0, r9 - add r1, r2, r10 @ r1<- r10 + low(ZxW + (YxX)) + add r10, r2, r10 @ r10<- r10 + low(ZxW + (YxX)) + mov r0,r9 + mov r1,r10 bx lr /* ------------------------------ */ @@ -1264,23 +1265,22 @@ dvmCompiler_TEMPLATE_STRING_INDEXOF: * r2: Starting offset in string data */ - ldr r3, [r0, #STRING_FIELDOFF_VALUE] ldr r7, [r0, #STRING_FIELDOFF_OFFSET] ldr r8, [r0, #STRING_FIELDOFF_COUNT] - + ldr r0, [r0, #STRING_FIELDOFF_VALUE] /* * At this point, we have: + * r0: object pointer * r1: char to match * r2: starting offset - * r3: object pointer (final result -> r0) * r7: offset * r8: string length */ /* Build pointer to start of string data */ - add r3, #16 - add r0, r3, r7, lsl #1 + add r0, #16 + add r0, r0, r7, lsl #1 /* Save a copy of starting data in r7 */ mov r7, r0 @@ -1516,12 +1516,12 @@ dvmCompiler_TEMPLATE_RETURN_PROF: ldr r10, [r0, #offStackSaveArea_prevFrame] @ r10<- saveArea->prevFrame ldrb r8, [rSELF, #offThread_breakFlags] @ r8<- breakFlags ldr rPC, [r0, #offStackSaveArea_savedPc] @ rPC<- saveArea->savedPc - ldr r2, [r10, #(offStackSaveArea_method - sizeofStackSaveArea)] #if !defined(WITH_SELF_VERIFICATION) ldr r9, [r0, #offStackSaveArea_returnAddr] @ r9<- chaining cell ret #else mov r9, #0 @ disable chaining #endif + ldr r2, [r10, #(offStackSaveArea_method - sizeofStackSaveArea)] @ r2<- method we're returning to cmp r2, #0 @ break frame? #if !defined(WITH_SELF_VERIFICATION) diff --git a/vm/compiler/template/out/CompilerTemplateAsm-armv5te.S b/vm/compiler/template/out/CompilerTemplateAsm-armv5te.S index 7d675958d..68f644185 100644 --- a/vm/compiler/template/out/CompilerTemplateAsm-armv5te.S +++ b/vm/compiler/template/out/CompilerTemplateAsm-armv5te.S @@ -178,12 +178,12 @@ dvmCompiler_TEMPLATE_RETURN: ldr r10, [r0, #offStackSaveArea_prevFrame] @ r10<- saveArea->prevFrame ldrb r8, [rSELF, #offThread_breakFlags] @ r8<- breakFlags ldr rPC, [r0, #offStackSaveArea_savedPc] @ rPC<- saveArea->savedPc - ldr r2, [r10, #(offStackSaveArea_method - sizeofStackSaveArea)] #if !defined(WITH_SELF_VERIFICATION) ldr r9, [r0, #offStackSaveArea_returnAddr] @ r9<- chaining cell ret #else mov r9, #0 @ disable chaining #endif + ldr r2, [r10, #(offStackSaveArea_method - sizeofStackSaveArea)] @ r2<- method we're returning to cmp r2, #0 @ break frame? #if !defined(WITH_SELF_VERIFICATION) @@ -732,8 +732,9 @@ dvmCompiler_TEMPLATE_MUL_LONG: mul ip, r2, r1 @ ip<- ZxW umull r9, r10, r2, r0 @ r9/r10 <- ZxX mla r2, r0, r3, ip @ r2<- YxX + (ZxW) - mov r0, r9 - add r1, r2, r10 @ r1<- r10 + low(ZxW + (YxX)) + add r10, r2, r10 @ r10<- r10 + low(ZxW + (YxX)) + mov r0,r9 + mov r1,r10 bx lr /* ------------------------------ */ @@ -995,23 +996,22 @@ dvmCompiler_TEMPLATE_STRING_INDEXOF: * r2: Starting offset in string data */ - ldr r3, [r0, #STRING_FIELDOFF_VALUE] ldr r7, [r0, #STRING_FIELDOFF_OFFSET] ldr r8, [r0, #STRING_FIELDOFF_COUNT] - + ldr r0, [r0, #STRING_FIELDOFF_VALUE] /* * At this point, we have: + * r0: object pointer * r1: char to match * r2: starting offset - * r3: object pointer (final result -> r0) * r7: offset * r8: string length */ /* Build pointer to start of string data */ - add r3, #16 - add r0, r3, r7, lsl #1 + add r0, #16 + add r0, r0, r7, lsl #1 /* Save a copy of starting data in r7 */ mov r7, r0 @@ -1247,12 +1247,12 @@ dvmCompiler_TEMPLATE_RETURN_PROF: ldr r10, [r0, #offStackSaveArea_prevFrame] @ r10<- saveArea->prevFrame ldrb r8, [rSELF, #offThread_breakFlags] @ r8<- breakFlags ldr rPC, [r0, #offStackSaveArea_savedPc] @ rPC<- saveArea->savedPc - ldr r2, [r10, #(offStackSaveArea_method - sizeofStackSaveArea)] #if !defined(WITH_SELF_VERIFICATION) ldr r9, [r0, #offStackSaveArea_returnAddr] @ r9<- chaining cell ret #else mov r9, #0 @ disable chaining #endif + ldr r2, [r10, #(offStackSaveArea_method - sizeofStackSaveArea)] @ r2<- method we're returning to cmp r2, #0 @ break frame? #if !defined(WITH_SELF_VERIFICATION) diff --git a/vm/compiler/template/out/CompilerTemplateAsm-armv7-a-neon.S b/vm/compiler/template/out/CompilerTemplateAsm-armv7-a-neon.S index 0dfdd8752..7573bd8bc 100644 --- a/vm/compiler/template/out/CompilerTemplateAsm-armv7-a-neon.S +++ b/vm/compiler/template/out/CompilerTemplateAsm-armv7-a-neon.S @@ -178,12 +178,12 @@ dvmCompiler_TEMPLATE_RETURN: ldr r10, [r0, #offStackSaveArea_prevFrame] @ r10<- saveArea->prevFrame ldrb r8, [rSELF, #offThread_breakFlags] @ r8<- breakFlags ldr rPC, [r0, #offStackSaveArea_savedPc] @ rPC<- saveArea->savedPc - ldr r2, [r10, #(offStackSaveArea_method - sizeofStackSaveArea)] #if !defined(WITH_SELF_VERIFICATION) ldr r9, [r0, #offStackSaveArea_returnAddr] @ r9<- chaining cell ret #else mov r9, #0 @ disable chaining #endif + ldr r2, [r10, #(offStackSaveArea_method - sizeofStackSaveArea)] @ r2<- method we're returning to cmp r2, #0 @ break frame? #if !defined(WITH_SELF_VERIFICATION) @@ -520,8 +520,9 @@ dvmCompiler_TEMPLATE_MUL_LONG: mul ip, r2, r1 @ ip<- ZxW umull r9, r10, r2, r0 @ r9/r10 <- ZxX mla r2, r0, r3, ip @ r2<- YxX + (ZxW) - mov r0, r9 - add r1, r2, r10 @ r1<- r10 + low(ZxW + (YxX)) + add r10, r2, r10 @ r10<- r10 + low(ZxW + (YxX)) + mov r0,r9 + mov r1,r10 bx lr /* ------------------------------ */ @@ -1264,23 +1265,22 @@ dvmCompiler_TEMPLATE_STRING_INDEXOF: * r2: Starting offset in string data */ - ldr r3, [r0, #STRING_FIELDOFF_VALUE] ldr r7, [r0, #STRING_FIELDOFF_OFFSET] ldr r8, [r0, #STRING_FIELDOFF_COUNT] - + ldr r0, [r0, #STRING_FIELDOFF_VALUE] /* * At this point, we have: + * r0: object pointer * r1: char to match * r2: starting offset - * r3: object pointer (final result -> r0) * r7: offset * r8: string length */ /* Build pointer to start of string data */ - add r3, #16 - add r0, r3, r7, lsl #1 + add r0, #16 + add r0, r0, r7, lsl #1 /* Save a copy of starting data in r7 */ mov r7, r0 @@ -1516,12 +1516,12 @@ dvmCompiler_TEMPLATE_RETURN_PROF: ldr r10, [r0, #offStackSaveArea_prevFrame] @ r10<- saveArea->prevFrame ldrb r8, [rSELF, #offThread_breakFlags] @ r8<- breakFlags ldr rPC, [r0, #offStackSaveArea_savedPc] @ rPC<- saveArea->savedPc - ldr r2, [r10, #(offStackSaveArea_method - sizeofStackSaveArea)] #if !defined(WITH_SELF_VERIFICATION) ldr r9, [r0, #offStackSaveArea_returnAddr] @ r9<- chaining cell ret #else mov r9, #0 @ disable chaining #endif + ldr r2, [r10, #(offStackSaveArea_method - sizeofStackSaveArea)] @ r2<- method we're returning to cmp r2, #0 @ break frame? #if !defined(WITH_SELF_VERIFICATION) diff --git a/vm/compiler/template/out/CompilerTemplateAsm-armv7-a.S b/vm/compiler/template/out/CompilerTemplateAsm-armv7-a.S index 7a4fa2c67..fd21a0e91 100644 --- a/vm/compiler/template/out/CompilerTemplateAsm-armv7-a.S +++ b/vm/compiler/template/out/CompilerTemplateAsm-armv7-a.S @@ -178,12 +178,12 @@ dvmCompiler_TEMPLATE_RETURN: ldr r10, [r0, #offStackSaveArea_prevFrame] @ r10<- saveArea->prevFrame ldrb r8, [rSELF, #offThread_breakFlags] @ r8<- breakFlags ldr rPC, [r0, #offStackSaveArea_savedPc] @ rPC<- saveArea->savedPc - ldr r2, [r10, #(offStackSaveArea_method - sizeofStackSaveArea)] #if !defined(WITH_SELF_VERIFICATION) ldr r9, [r0, #offStackSaveArea_returnAddr] @ r9<- chaining cell ret #else mov r9, #0 @ disable chaining #endif + ldr r2, [r10, #(offStackSaveArea_method - sizeofStackSaveArea)] @ r2<- method we're returning to cmp r2, #0 @ break frame? #if !defined(WITH_SELF_VERIFICATION) @@ -520,8 +520,9 @@ dvmCompiler_TEMPLATE_MUL_LONG: mul ip, r2, r1 @ ip<- ZxW umull r9, r10, r2, r0 @ r9/r10 <- ZxX mla r2, r0, r3, ip @ r2<- YxX + (ZxW) - mov r0, r9 - add r1, r2, r10 @ r1<- r10 + low(ZxW + (YxX)) + add r10, r2, r10 @ r10<- r10 + low(ZxW + (YxX)) + mov r0,r9 + mov r1,r10 bx lr /* ------------------------------ */ @@ -1264,23 +1265,22 @@ dvmCompiler_TEMPLATE_STRING_INDEXOF: * r2: Starting offset in string data */ - ldr r3, [r0, #STRING_FIELDOFF_VALUE] ldr r7, [r0, #STRING_FIELDOFF_OFFSET] ldr r8, [r0, #STRING_FIELDOFF_COUNT] - + ldr r0, [r0, #STRING_FIELDOFF_VALUE] /* * At this point, we have: + * r0: object pointer * r1: char to match * r2: starting offset - * r3: object pointer (final result -> r0) * r7: offset * r8: string length */ /* Build pointer to start of string data */ - add r3, #16 - add r0, r3, r7, lsl #1 + add r0, #16 + add r0, r0, r7, lsl #1 /* Save a copy of starting data in r7 */ mov r7, r0 @@ -1516,12 +1516,12 @@ dvmCompiler_TEMPLATE_RETURN_PROF: ldr r10, [r0, #offStackSaveArea_prevFrame] @ r10<- saveArea->prevFrame ldrb r8, [rSELF, #offThread_breakFlags] @ r8<- breakFlags ldr rPC, [r0, #offStackSaveArea_savedPc] @ rPC<- saveArea->savedPc - ldr r2, [r10, #(offStackSaveArea_method - sizeofStackSaveArea)] #if !defined(WITH_SELF_VERIFICATION) ldr r9, [r0, #offStackSaveArea_returnAddr] @ r9<- chaining cell ret #else mov r9, #0 @ disable chaining #endif + ldr r2, [r10, #(offStackSaveArea_method - sizeofStackSaveArea)] @ r2<- method we're returning to cmp r2, #0 @ break frame? #if !defined(WITH_SELF_VERIFICATION) -- 2.11.0